commit c1148d72421a51398655b8557033e47305eb34ea Author: Achim Gsell Date: Mon Sep 11 20:18:14 2006 +0000 repo migration diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..29f0dc3 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,175 @@ +* text=auto !eol +/AUTHORS -text +/COPYRIGHT -text +/ChangeLog -text +/GNUmakefile.orig -text +/Makefile.am -text +/Makefile.in -text +/Makefile.orig -text +/NEWS -text +/README -text +/aclocal.m4 -text +/autogen.sh -text +/config.guess -text +/config.h.in -text +/config.sub -text +/configure -text +/configure.ac -text +/depcomp -text +doc/2006-Berkeley-Visit/BethelSAP_1page-4.doc -text +doc/2006-Berkeley-Visit/H5Part.ppt -text +doc/2006-Berkeley-Visit/H5xxx.ppt -text +doc/2006-Berkeley-Visit/H5xxxVisIt.fig -text +doc/2006-Berkeley-Visit/SAP-Combined-v6.doc -text +doc/2006-Berkeley-Visit/aqpsi2006mar22.pdf -text +doc/2006-Berkeley-Visit/hdf.ps -text +doc/Building.html -text +doc/BuildingHDF5.html -text +doc/Downloading.html -text +doc/Doxyfile -text +doc/H5PartExpress.html -text +doc/H5PartIDL.html -text +doc/H5PartParaview.html -text +doc/H5PartTools.html -text +doc/H5PartVisIt.html -text +doc/H5PartVisIt/cloud_visit.png -text +doc/H5PartVisIt/cloud_visit.s.png -text +doc/H5PartVisIt/cloud_visit_2D.png -text +doc/H5PartVisIt/cloud_visit_2D.s.png -text +doc/H5PartVisIt/visit_query1.png -text +doc/H5PartVisIt/visit_query1.s.png -text +doc/H5tools/H5tools.htm -text +doc/H5tools/H5tools_files/snapshot1.jpg -text +doc/H5xxx/H5xxx.tex -text +doc/H5xxx/JAC2003.cls -text +doc/H5xxx/makefile -text +doc/InternalLayout.html -text +doc/ReferencePages/H5PartF_8c.html -text +doc/ReferencePages/H5Part_8c.html -text +doc/ReferencePages/H5Part_8h-source.html -text +doc/ReferencePages/H5Part_8h.html -text +doc/ReferencePages/annotated.html -text +doc/ReferencePages/doxygen.css -text +doc/ReferencePages/doxygen.png -text +doc/ReferencePages/files.html -text +doc/ReferencePages/functions.html -text +doc/ReferencePages/functions_vars.html -text +doc/ReferencePages/globals.html -text +doc/ReferencePages/globals_defs.html -text +doc/ReferencePages/globals_func.html -text +doc/ReferencePages/globals_type.html -text +doc/ReferencePages/index.html -text +doc/ReferencePages/structH5IO__getname__t-members.html -text +doc/ReferencePages/structH5IO__getname__t.html -text +doc/ReferencePages/structH5PartFile-members.html -text +doc/ReferencePages/structH5PartFile.html -text +doc/UsingC.html -text +doc/UsingF.html -text +doc/collision_6.png -text +doc/collision_6.s.png -text +doc/h5part.html -text +doc/hdf5.pdf -text +doc/layout.png -text +/install-sh -text +/license.txt -text +/missing -text +/rules.make -text +src/H5Block.h -text +src/H5Part++.cc -text +src/H5Part++.hh -text +src/H5Part.c -text +src/H5Part.cc -text +src/H5Part.h -text +src/H5Part.hh -text +src/H5Part.inc -text +src/H5Part.py -text +src/H5PartF.c -text +src/H5Part_py.i -text +src/H5Part_py_wrap.c -text +src/Makefile.am -text +src/Makefile.in -text +src/TestUnderscore.f -text +src/TestUnderscoreC.c -text +src/addToDoxygenMainPage.h -text +test/Bench.c -text +test/H5ParallelTest.cc -text +test/H5PartAndreasTest.cc -text +test/H5PartTest.cc -text +test/H5PartTestParallel.cc -text +test/H5ecloudExample.cc -text +test/H5test.cc -text +test/H5test.py -text +test/H5testF.f -text +test/H5testFpar.f -text +test/Makefile.am -text +test/Makefile.in -text +tools/Makefile.am -text +tools/Makefile.in -text +tools/README -text +tools/h5Proot/GNUmakefile -text +tools/h5Proot/H5Style.h -text +tools/h5Proot/H5root.cc -text +tools/h5Proot/H5rootLinkDef.h -text +tools/h5Proot/README -text +tools/h5Proot/TH5Dataset.cc -text +tools/h5Proot/TH5Dataset.h -text +tools/h5Proot/TH5Legend.cc -text +tools/h5Proot/TH5Legend.h -text +tools/h5Proot/TH5MainFrame.cc -text +tools/h5Proot/TH5MainFrame.h -text +tools/h5pAttrib.cc -text +tools/h5pToGNUplot.cc -text +tools/h5pToGNUplot.py -text +visit_plugins/databases/H5Part/.depend -text +visit_plugins/databases/H5Part/Makefile -text +visit_plugins/databases/H5Part/README.txt -text +visit_plugins/databases/H5Part/avth5partFileFormat.C -text +visit_plugins/databases/H5Part/avth5partFileFormat.h -text +visit_plugins/databases/H5Part/h5part.xml -text +visit_plugins/databases/H5Part/h5partCommonPluginInfo.C -text +visit_plugins/databases/H5Part/h5partEnginePluginInfo.C -text +visit_plugins/databases/H5Part/h5partMDServerPluginInfo.C -text +visit_plugins/databases/H5Part/h5partPluginInfo.C -text +visit_plugins/databases/H5Part/h5partPluginInfo.h -text +visit_plugins/operators/BinnerFilter/.depend -text +visit_plugins/operators/BinnerFilter/Binner.xml -text +visit_plugins/operators/BinnerFilter/BinnerCommonPluginInfo.C -text +visit_plugins/operators/BinnerFilter/BinnerEnginePluginInfo.C -text +visit_plugins/operators/BinnerFilter/BinnerFilter.C -text +visit_plugins/operators/BinnerFilter/BinnerFilter.h -text +visit_plugins/operators/BinnerFilter/BinnerFilter.java -text +visit_plugins/operators/BinnerFilter/BinnerGUIPluginInfo.C -text +visit_plugins/operators/BinnerFilter/BinnerMakefile -text +visit_plugins/operators/BinnerFilter/BinnerPluginInfo.C -text +visit_plugins/operators/BinnerFilter/BinnerPluginInfo.h -text +visit_plugins/operators/BinnerFilter/BinnerScriptingPluginInfo.C -text +visit_plugins/operators/BinnerFilter/BinnerViewerPluginInfo.C -text +visit_plugins/operators/BinnerFilter/Binnerreplace.txt -text +visit_plugins/operators/BinnerFilter/Makefile -text +visit_plugins/operators/BinnerFilter/PyBinner.C -text +visit_plugins/operators/BinnerFilter/PyBinner.h -text +visit_plugins/operators/BinnerFilter/QvisBinnerWindow.C -text +visit_plugins/operators/BinnerFilter/QvisBinnerWindow.h -text +visit_plugins/operators/BinnerFilter/avtBinnerFilter.C -text +visit_plugins/operators/BinnerFilter/avtBinnerFilter.h -text +visit_plugins/operators/BinnerFilter/icon.xpm -text +visit_plugins/operators/RandomSample/.depend -text +visit_plugins/operators/RandomSample/H5PartRandomSampleAttributes.C -text +visit_plugins/operators/RandomSample/H5PartRandomSampleAttributes.h -text +visit_plugins/operators/RandomSample/H5PartRandomSampleAttributes.java -text +visit_plugins/operators/RandomSample/H5PartRandomSampleCommonPluginInfo.C -text +visit_plugins/operators/RandomSample/H5PartRandomSampleEnginePluginInfo.C -text +visit_plugins/operators/RandomSample/H5PartRandomSampleGUIPluginInfo.C -text +visit_plugins/operators/RandomSample/H5PartRandomSamplePluginInfo.C -text +visit_plugins/operators/RandomSample/H5PartRandomSamplePluginInfo.h -text +visit_plugins/operators/RandomSample/H5PartRandomSampleScriptingPluginInfo.C -text +visit_plugins/operators/RandomSample/H5PartRandomSampleViewerPluginInfo.C -text +visit_plugins/operators/RandomSample/Makefile -text +visit_plugins/operators/RandomSample/PyH5PartRandomSampleAttributes.C -text +visit_plugins/operators/RandomSample/PyH5PartRandomSampleAttributes.h -text +visit_plugins/operators/RandomSample/QvisH5PartRandomSampleWindow.C -text +visit_plugins/operators/RandomSample/QvisH5PartRandomSampleWindow.h -text +visit_plugins/operators/RandomSample/RandomSample.xml -text +visit_plugins/operators/RandomSample/avtH5PartRandomSampleFilter.C -text +visit_plugins/operators/RandomSample/avtH5PartRandomSampleFilter.h -text +visit_plugins/operators/RandomSample/icon.xpm -text diff --git a/AUTHORS b/AUTHORS new file mode 100644 index 0000000..7257f49 --- /dev/null +++ b/AUTHORS @@ -0,0 +1,10 @@ + +Andreas Adelmann (PSI) +Achim Gsell (PSI) +Benedikt Oswald (PSI) + +Wes Bethel (NERSC/LBNL) +John Shalf (NERSC/LBNL) +Cristina Siegerist (NERSC/LBNL) + +Please use h5part@lists.psi.ch for communicaion. diff --git a/COPYRIGHT b/COPYRIGHT new file mode 100644 index 0000000..e147f6b --- /dev/null +++ b/COPYRIGHT @@ -0,0 +1,7 @@ +*** Copyright Notice *** + +H5Part Copyright (c) 2006, The Regents of the University of California, through Lawrence Berkeley National Laboratory (subject to receipt of any required approvals from the U.S. Dept. of Energy) and the Paul Scherrer Institut (Switzerland). All rights reserved. + +If you have questions about your rights to use or distribute this software, please contact Berkeley Lab's Technology Transfer Department at TTD@lbl.gov referring to "H5Part (LBNL Ref CR-2255)" + +NOTICE. This software was developed under partial funding from the U.S. Department of Energy. As such, the U.S. Government has been granted for itself and others acting on its behalf a paid-up, nonexclusive, irrevocable, worldwide license in the Software to reproduce, prepare derivative works, and perform publicly and display publicly. Beginning five (5) years after the date permission to assert copyright is obtained from the U.S. Department of Energy, and subject to any subsequent five (5) year renewals, the U.S. Government is granted for itself and others acting on its behalf a paid-up, nonexclusive, irrevocable, worldwide license in the Software to reproduce, prepare derivative works, distribute copies to the public, perform publicly and display publicly, and to permit others to do so. diff --git a/ChangeLog b/ChangeLog new file mode 100644 index 0000000..e69de29 diff --git a/GNUmakefile.orig b/GNUmakefile.orig new file mode 100755 index 0000000..cc93c77 --- /dev/null +++ b/GNUmakefile.orig @@ -0,0 +1,133 @@ +UNAME := $(shell uname | perl -pe 's/(sn\d\d\d\d|jsimpson)/UNICOS\/mk/') +# for host specific options +HOST := $(shell hostname) + +# for processor-specific options +ifeq ($(UNAME), Linux) +PROC := $(shell uname -p) +endif + +CXX = c++ +CC = cc +H5HOME = /usr/local/hdf5 +CFLAGS = -g -I$(H5HOME)/include +LDFLAGS = -L$(H5HOME)/lib -lhdf5 -lz -lm + +# MacOS-X Serial +ifeq ($(UNAME), Darwin) +ifeq ($(PARALLEL), yes) +CXX = g++ +CC = mpicc +H5HOME = /usr/local +CFLAGS = -O -g -I$(H5HOME)/include -DPARALLEL_IO +LDFLAGS = -L$(H5HOME)/lib -lmpich -lpmpich -lhdf5 -lz -lm +else +CXX = c++ +CC = cc +F90 = xlf +H5HOME = /usr/local +CFLAGS = -O -g -I$(H5HOME)/include +LDFLAGS = -L$(H5HOME)/lib -lhdf5 -lz -lm +endif +endif + +# SGI MIPS/Irix +ifeq ($(UNAME), IRIX64) +CXX = CC +CC = cc +F90 = f90 +ifeq ($(PARALLEL), yes) +H5HOME = $(HDF5_DIR) +CFLAGS = -64 -O3 -I$(H5HOME)/include -DPARALLEL_IO +LDFLAGS = -64 -O3 -L$(H5HOME)/lib -lhdf5 -lz -lmpi -lm +else +H5HOME = /usr/local +CFLAGS = -O3 -I$(H5HOME)/include +LDFLAGS = -L$(H5HOME)/lib -lhdf5 -lz -lm +endif +endif + +# AIX/SP-2 Parallel/serial : Seaborg +ifeq ($(UNAME), AIX) +ifeq ($(PARALLEL), yes) # parallel +CXX = mpCC_r +CC = mpxlc_r +# H5HOME = /usr/common/usg/hdf5_64/1.4.5-post2/parallel +H5HOME = /usr/common/usg/hdf5_64/1.6.1/parallel +# /usr/common/usg/hdf5/1.4.4/parallel +H4HOME = /usr/common/usg/hdf/default +OPT = -qarch=auto -qtune=auto-qcache=auto -O3 -qhot +CFLAGS = -q64 -I$(H5HOME)/include +LDFLAGS = -L$(H5HOME)/lib -lhdf5 -L$(H4HOME)/lib -lz -lsz -lm +else # serial +CXX = xlC +CC = xlc +H5HOME = /usr/common/usg/hdf5/1.4.4/serial +H4HOME = /usr/common/usg/hdf/default +OPT = -qarch=auto -qtune=auto-qcache=auto -O3 -qhot +CFLAGS = -g -bmaxdata:800000000 -bmaxstack:256000000 -I$(H5HOME)/include +LDFLAGS = -L$(H5HOME)/lib -lhdf5 -L$(H4HOME)/lib -lz -lm +endif +endif + +# Linux +ifeq ($(UNAME), Linux) +# if this machine is NERSC/Davinci Altix system +ifeq ($(PROC), ia64) +CC = icc +CXX = icc + +ifeq ($(PARALLEL), yes) +# IA64 Linux Parallel +ifeq ($(HOST), davinci) +H5HOME = $(HDF5_PAR) +MPILIB = -lmpi +else +H5HOME = /usr/local +HDF5_PAR_LIB = -L$(H5HOME)/lib -lhdf5 -lz -lm +HDF5_PAR_INCLUDE = -I$(H5HOME)/include +MPIHOME = /usr/local +MPILIB = -lmpich +endif # HOST +CFLAGS = -O3 -DPARALLEL_IO -DH5_HAVE_PARALLEL $(HDF5_PAR_INCLUDE) +LDFLAGS = $(HDF5_PAR_LIB) $(MPILIB) +else # IA64 Linux Serial +CFLAGS = -O3 $(HDF5_INCLUDE) +LDFLAGS = $(HDF5_LIB) -lm +endif # PARALLEL + +# else this is standard IA32 linux +else +ifeq ($(PARALLEL), yes) +# Linux Parallel +CC = gcc +CXX = g++ +H5HOME = /usr/local +MPIHOME = /usr/local +CFLAGS = -O -g -DPARALLEL_IO -DH5_HAVE_PARALLEL -I$(H5HOME)/include +LDFLAGS = -L$(H5HOME)/lib -lhdf5 -lmpich -lrt -lz -lm +else # Linux Serial +CXX = g++ +CC = gcc +CFLAGS = -O -g -I$(H5HOME)/include +LDFLAGS = -L$(H5HOME)/lib -lhdf5 -lz -lm +endif # !PARALLEL +endif # PROC!ia64 + +endif # !Linux + +ifeq ($(PARALLEL), yes) #parallel +ifdef F90 +all: H5PartTest H5PartTest.o H5Part.o H5PartTestParallel H5PartAndreasTest H5PartF.o +else +all: H5PartTest H5PartTest.o H5Part.o H5PartTestParallel H5PartAndreasTest +endif +else +ifdef F90 +all: H5PartTest H5PartTest.o H5Part.o H5PartF.o +else +all: H5PartTest H5PartTest.o H5Part.o +endif +endif + +include rules.make diff --git a/Makefile.am b/Makefile.am new file mode 100644 index 0000000..5fb613e --- /dev/null +++ b/Makefile.am @@ -0,0 +1,18 @@ +# Trial by Antino Kim +# Top level Makefile.am + +SUBDIRS = \ + src \ + test \ + tools + +MAINTAINTERCLEANFILES = \ + Makefile.in \ + aclocal.m4 \ + config.h \ + config.h.in \ + config.log \ + config.status \ + configure \ + stamp-h.in \ + stamp-h1 diff --git a/Makefile.in b/Makefile.in new file mode 100644 index 0000000..693591c --- /dev/null +++ b/Makefile.in @@ -0,0 +1,632 @@ +# Makefile.in generated by automake 1.9.5 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# Trial by Antino Kim +# Top level Makefile.am +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = . +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \ + $(srcdir)/Makefile.in $(srcdir)/config.h.in \ + $(top_srcdir)/configure AUTHORS ChangeLog NEWS config.guess \ + config.sub depcomp install-sh missing +subdir = . +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ + configure.lineno configure.status.lineno +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-exec-recursive install-info-recursive \ + install-recursive installcheck-recursive installdirs-recursive \ + pdf-recursive ps-recursive uninstall-info-recursive \ + uninstall-recursive +ETAGS = etags +CTAGS = ctags +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); }; } +DIST_ARCHIVES = $(distdir).tar.gz +GZIP_ENV = --best +distuninstallcheck_listfiles = find . -type f -print +distcleancheck_listfiles = find . -type f -print +ACLOCAL = @ACLOCAL@ +ADDFLAGS = @ADDFLAGS@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BAS_CC = @BAS_CC@ +BUILD_TOOLS = @BUILD_TOOLS@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FC = @FC@ +FCFLAGS = @FCFLAGS@ +FFLAGS = @FFLAGS@ +H5P_LIB_LOC = @H5P_LIB_LOC@ +HDF5ROOT = @HDF5ROOT@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MPICC = @MPICC@ +MPICXX = @MPICXX@ +MPIFC = @MPIFC@ +MPIINC = @MPIINC@ +MPILIB = @MPILIB@ +MPIROOT = @MPIROOT@ +MTARGET = @MTARGET@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PHDF5ROOT = @PHDF5ROOT@ +PYTHON_PATH = @PYTHON_PATH@ +PY_WRAPPER = @PY_WRAPPER@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STDCXX = @STDCXX@ +STRIP = @STRIP@ +SZLIB = @SZLIB@ +TOOLS_CXX = @TOOLS_CXX@ +TOOLS_H5PART_LIB = @TOOLS_H5PART_LIB@ +TOOLS_HDFLIB = @TOOLS_HDFLIB@ +TTARGET = @TTARGET@ +UNDERSCORE_H = @UNDERSCORE_H@ +VERSION = @VERSION@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_FC = @ac_ct_FC@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +SUBDIRS = \ + src \ + test \ + tools + +MAINTAINTERCLEANFILES = \ + Makefile.in \ + aclocal.m4 \ + config.h \ + config.h.in \ + config.log \ + config.status \ + configure \ + stamp-h.in \ + stamp-h1 + +all: config.h + $(MAKE) $(AM_MAKEFLAGS) all-recursive + +.SUFFIXES: +am--refresh: + @: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + echo ' cd $(srcdir) && $(AUTOMAKE) --foreign '; \ + cd $(srcdir) && $(AUTOMAKE) --foreign \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + echo ' $(SHELL) ./config.status'; \ + $(SHELL) ./config.status;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + $(SHELL) ./config.status --recheck + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(srcdir) && $(AUTOCONF) +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) + +config.h: stamp-h1 + @if test ! -f $@; then \ + rm -f stamp-h1; \ + $(MAKE) stamp-h1; \ + else :; fi + +stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status + @rm -f stamp-h1 + cd $(top_builddir) && $(SHELL) ./config.status config.h +$(srcdir)/config.h.in: $(am__configure_deps) + cd $(top_srcdir) && $(AUTOHEADER) + rm -f stamp-h1 + touch $@ + +distclean-hdr: + -rm -f config.h stamp-h1 +uninstall-info-am: + +# 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): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +mostlyclean-recursive clean-recursive distclean-recursive \ +maintainer-clean-recursive: + @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; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +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; } \ + END { 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=; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + tags="$$tags $$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; } \ + END { for (i in files) print i; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + 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; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + $(am__remove_distdir) + mkdir $(distdir) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(mkdir_p) "$(distdir)/$$subdir" \ + || exit 1; \ + distdir=`$(am__cd) $(distdir) && pwd`; \ + top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$top_distdir" \ + distdir="$$distdir/$$subdir" \ + distdir) \ + || exit 1; \ + fi; \ + done + -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \ + ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \ + || chmod -R a+r $(distdir) +dist-gzip: distdir + tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + $(am__remove_distdir) + +dist-bzip2: distdir + tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 + $(am__remove_distdir) + +dist-tarZ: distdir + tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z + $(am__remove_distdir) + +dist-shar: distdir + shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz + $(am__remove_distdir) + +dist-zip: distdir + -rm -f $(distdir).zip + zip -rq $(distdir).zip $(distdir) + $(am__remove_distdir) + +dist dist-all: distdir + tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + $(am__remove_distdir) + +# This target untars the dist file and tries a VPATH configuration. Then +# it guarantees that the distribution is self-contained by making another +# tarfile. +distcheck: dist + case '$(DIST_ARCHIVES)' in \ + *.tar.gz*) \ + GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\ + *.tar.bz2*) \ + bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\ + *.tar.Z*) \ + uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ + *.shar.gz*) \ + GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\ + *.zip*) \ + unzip $(distdir).zip ;;\ + esac + chmod -R a-w $(distdir); chmod a+w $(distdir) + mkdir $(distdir)/_build + mkdir $(distdir)/_inst + chmod a-w $(distdir) + dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ + && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ + && cd $(distdir)/_build \ + && ../configure --srcdir=.. --prefix="$$dc_install_base" \ + $(DISTCHECK_CONFIGURE_FLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) dvi \ + && $(MAKE) $(AM_MAKEFLAGS) check \ + && $(MAKE) $(AM_MAKEFLAGS) install \ + && $(MAKE) $(AM_MAKEFLAGS) installcheck \ + && $(MAKE) $(AM_MAKEFLAGS) uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ + distuninstallcheck \ + && chmod -R a-w "$$dc_install_base" \ + && ({ \ + (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ + distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ + } || { rm -rf "$$dc_destdir"; exit 1; }) \ + && rm -rf "$$dc_destdir" \ + && $(MAKE) $(AM_MAKEFLAGS) dist \ + && rm -rf $(DIST_ARCHIVES) \ + && $(MAKE) $(AM_MAKEFLAGS) distcleancheck + $(am__remove_distdir) + @(echo "$(distdir) archives ready for distribution: "; \ + list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ + sed -e '1{h;s/./=/g;p;x;}' -e '$${p;x;}' +distuninstallcheck: + @cd $(distuninstallcheck_dir) \ + && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ + || { echo "ERROR: files left after uninstall:" ; \ + if test -n "$(DESTDIR)"; then \ + echo " (check DESTDIR support)"; \ + fi ; \ + $(distuninstallcheck_listfiles) ; \ + exit 1; } >&2 +distcleancheck: distclean + @if test '$(srcdir)' = . ; then \ + echo "ERROR: distcleancheck can only run from a VPATH build" ; \ + exit 1 ; \ + fi + @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left in build directory after distclean:" ; \ + $(distcleancheck_listfiles) ; \ + exit 1; } >&2 +check-am: all-am +check: check-recursive +all-am: Makefile config.h +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(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 +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic mostlyclean-am + +distclean: distclean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-hdr distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +info: info-recursive + +info-am: + +install-data-am: + +install-exec-am: + +install-info: install-info-recursive + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -rf $(top_srcdir)/autom4te.cache + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: uninstall-info-am + +uninstall-info: uninstall-info-recursive + +.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am am--refresh check \ + check-am clean clean-generic clean-recursive ctags \ + ctags-recursive dist dist-all dist-bzip2 dist-gzip dist-shar \ + dist-tarZ dist-zip distcheck distclean distclean-generic \ + distclean-hdr distclean-recursive distclean-tags \ + distcleancheck distdir distuninstallcheck dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-exec install-exec-am install-info \ + install-info-am install-man install-strip installcheck \ + installcheck-am installdirs installdirs-am maintainer-clean \ + maintainer-clean-generic maintainer-clean-recursive \ + mostlyclean mostlyclean-generic mostlyclean-recursive pdf \ + pdf-am ps ps-am tags tags-recursive uninstall uninstall-am \ + uninstall-info-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/Makefile.orig b/Makefile.orig new file mode 100755 index 0000000..883418f --- /dev/null +++ b/Makefile.orig @@ -0,0 +1,59 @@ + +# This is a very rudimentary multiarchitecture makefile +# You need to uncomment the default block of make variables you need +# Some key things to watch for are the following defines +# -DREGRESSIONTEST : enables a main(){} inside of +# the H5Part.cc file that does simple regression testing. +# -DPARALLEL_IO : If you want to use parallel HDF5, you have to +# enable this. Otherwise, you get only the serial +# implementation of the library. + +# MacOS-X Serial +#CXX = c++ +#CC = cc +#F90 = xlf +#H5HOME = /usr/local +#CFLAGS = -O -g -I$(H5HOME)/include +#LDFLAGS = -L$(H5HOME)/lib -lhdf5 -lz -lm + +# AIX/SP-2 Parallel : Seaborg +#CXX = mpCC_r +#CC = mpcc_r +#F90 = mpxlf +#H5HOME = /usr/common/usg/hdf5/1.4.4/parallel +#H4HOME = /usr/common/usg/hdf/default +#OPT = -qarch=auto -qtune=auto-qcache=auto -O3 -qhot +#CFLAGS = -g -bmaxdata:800000000 -bmaxstack:256000000 -I$(H5HOME)/include +#LDFLAGS = -L$(H5HOME)/lib -lhdf5 -L$(H4HOME)/lib -lz -lm + +# Linux Serial +#CXX = g++ +#CC = gcc +#F90 = g77 # or could be pgif90 +#CFLAGS = -O -g -I$(H5HOME)/include +#LDFLAGS = -L$(H5HOME)/lib -lhdf5 -lz -lm + +# Linux Jacquard +CC = mpicc +CXX = mpicxx +F90 = mpif90 +H5HOME = /usr/common/usg/hdf5/1.6.3/parallel +CFLAGS = -O2 -DPARALLEL_IO -DH5_HAVE_PARALLEL -I$(H5HOME)/include +LDFLAGS = -L$(H5HOME)/lib -lhdf5 -lz -lm + +# Linux Parallel +#CC = gcc +#CXX = g++ +#F90 = g77 +#H5HOME = /usr/local +# /usr/common/usg/hdf5/1.6.3/parallel +#MPIHOME = /usr/local +#CFLAGS = -O -g -DPARALLEL_IO -DH5_HAVE_PARALLEL -I$(H5HOME)/include +#LDFLAGS = -L$(H5HOME)/lib -lhdf5 -lmpich -lrt -lz -lm + +all: H5PartTest H5PartTest.o H5Part.o +parallel: H5PartTest H5PartTest.o H5Part.o H5PartTestParallel H5PartAndreasTest # parallel regression tests +fortran: H5PartF.o # fortran bindings + +include rules.make + diff --git a/NEWS b/NEWS new file mode 100644 index 0000000..e69de29 diff --git a/README b/README new file mode 100644 index 0000000..1ca471c --- /dev/null +++ b/README @@ -0,0 +1,393 @@ +============================================================================== +README file for H5Part configure +============================================================================== + ++ 0. HDF5 library +----------------- + +Make sure you have a working version of the HDF5 library in your computer. If you plan +to use parallel I/O you need to use a parallel HDF5 version. If you don't have the +library download the sources from http://hdf.ncsa.uiuc.edu/HDF5/ + ++ 1. Quick start (If you feel lucky...) +---------------------------------------- + +For many platforms, where compilers are installed in the "default" location +and all the environment variables are set correctly, it should be sufficient +to type: + +./configure [OPTIONS] && make [install] + +to have the libraries and test program compiled. + + +============================================================================== + + ++ 2. configure line options +---------------------------- + +(1) Enable options +--enable-fortran +--enable-parallel +--enable-tools +--enable-python +--enable-64 (only for AIX and Irix) + +(2) Setting compilers related variables manually +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Compiler environment variables: + CC C compiler command + CXX C++ compiler command + FC Fortran compiler command + +(3) Setting prefix for installation manually +--prefix=PREFIX install files in PREFIX + + +For more information, type: + +./configure --help + + +============================================================================== + + ++ 3. Platform specific settings for compiling libraries & test programs +------------------------------------------------------------------------ + +Building + make : builds the libraries and test programs + make install: builds and installs + make clean : removes extraneous object files + make distclean : returns configuration to unconfigured state + +As tested on hosts: + +(1) Davinci (Linux"SUSE"-ia64) +--------------------------------------------------- +FIRST THING FIRST!! Type: + +module load intel +to have the proper compilers set up for use. + +module load hdf5_par + +[NOTE: module load hdf5 does not work at this moment. +Possible installation error of HDF5 on Davinci.] + + +Brief profile: +CC = icc +CXX = icc +FC = ifort +MPICC = icc +MPICXX = icc +MPIFC = ifort + +If default doesn't work, try: + +For C shell: +env CC=icc CXX=icc FC=ifort MPICC=icc MPICXX=icc MPIFC=ifort ./configure && make install + +For Korn or Bourne shell: +CC=icc CXX=icc FC=ifort MPICC=icc MPICXX=icc MPIFC=ifort ./configure && make install + +And, of course, you should add configure options, such as --enable-fortran --enable-parallel. + + +On this host, executing: + +For C shell: +env CC=icc CXX=icc FC=ifort MPICC=icc MPICXX=icc MPIFC=ifort ./configure --enable-fortran --enable-parallel && make install + +For Korn or Bourne shell: +CC=icc CXX=icc FC=ifort MPICC=icc MPICXX=icc MPIFC=ifort ./configure --enable-fortran --enable-parallel && make install + +has functioned correctly. + + +To run test program, go to test directory: + +(i) Serial test +run: +./H5testF +./H5PartTest + +(ii) Parallel test +run: +mpirun 2 H5testFpar +mpirun 2 H5PartTestP + +NOTE: Number 2 above is a arbitrary number that indicates the number of processes. + + + + + +(2) Jacquard (Linux"SUSE"-x86_64) +------------------------------------------------------- +Brief profile: +CC = pathcc +CXX = pathCC +FC = pathf90 +MPICC = mpicc +MPICXX = mpicxx +MPIFC = mpif90 + + + +If default doesn't work, try: + +For C shell: +env CC=pathcc CXX=pathCC FC=pathf90 MPICC=mpicc MPICXX=mpicxx MPIFC=mpif90 ./configure && make install + +For Korn or Bourne shell: +CC=pathcc CXX=pathCC FC=pathf90 MPICC=mpicc MPICXX=mpicxx MPIFC=mpif90 ./configure && make install + +And, of course, you should add configure options, such as --enable-fortran --enable-parallel. + + + +On this host, executing: + +For C shell: +env CC=pathcc CXX=pathCC FC=pathf90 MPICC=mpicc MPICXX=mpicxx MPIFC=mpif90 ./configure --enable-fortran --enable-parallel && make install + +For Korn or Bourne shell: +CC=pathcc CXX=pathCC FC=pathf90 MPICC=mpicc MPICXX=mpicxx MPIFC=mpif90 ./configure --enable-fortran --enable-parallel && make install + +has functioned correctly. + + + +To run test program, go to test directory: + +(i) Serial test +run: +./H5testF +./H5PartTest + +(ii) Parallel test +In Jacquard, we need a script to run parallel programs, since Jacquard does not support interactive parallel processing. Instead, we need to submit the task to a queue. A sample script (run_H5testFpar.scr) may look like below: + ++++++++++++++++++++++++++++++++++++++++ +#!/bin/csh +#PBS -l nodes=1:ppn=2,walltime=00:05:00 +#PBS -N H5testFpar +#PBS -o H5testFpar.out +#PBS -e H5testFpar.err +#PBS -q debug +#PBS -A mpccc +#PBS -V + +setenv PBS_OWORKDIR /home/H5Part/test + +cd $PBS_O_WORKDIR +mpirun -np 2 ./H5testFpar ++++++++++++++++++++++++++++++++++++++++ + +Then, we need to submit the task to a queue by running: + +qsub run_H5testFpar.scr + +After processed, the result will appear in H5testFpar.out, and error messages will appear in H5testFpar.err. + + + + + +(3) Bassi (AIX5.3.0.0-Power 3) +------------------------------------------------- +FIRST THING FIRST!! Type: + +module load gcc + +to have the proper compilers set up for use. + +Brief profile: +CC = cc_r +CXX = cc_r +FC = xlf_r +MPICC = mpcc_r +MPICXX = mpcc_r +MPIFC = mpxlf_r + + + +If default doesn't work, try: + +For C shell: +env CC=cc_r CXX=cc_r FC=xlf_r MPICC=mpcc_r MPICXX=mpcc_r MPIFC=mpxlf_r ./configure && make install + +For Korn or Bourne shell: +CC=cc_r CXX=cc_r FC=xlf_r MPICC=mpcc_r MPICXX=mpcc_r MPIFC=mpxlf_r ./configure && make install + +And, of course, you should add configure options, such as --enable-fortran --enable-parallel. + + + +On this host, executing: + +For C shell: +env CC=cc_r CXX=cc_r FC=xlf_r MPICC=mpcc_r MPICXX=mpcc_r MPIFC=mpxlf_r ./configure --enable-fortran --enable-parallel && make install + +For Korn or Bourne shell: +CC=cc_r CXX=cc_r FC=xlf_r MPICC=mpcc_r MPICXX=mpcc_r MPIFC=mpxlf_r ./configure --enable-fortran --enable-parallel && make install + +has functioned correctly. + + + +To run test program, go to test directory: + +(i) Serial test +run: +./H5testF +./H5PartTest + +(ii) Parallel test +run: +unsetenv MP_SINGLE_THREAD +poe ./H5PartTestP -procs 2 -nodes 1 +poe ./H5testFpar -procs 2 -nodes 1 + +For more details on how to run parallel programs on Bassi, go to: + +http://www.nersc.gov/nusers/resources/bassi/running_jobs/ + + + + + +(4) Starsky (Darwin8.5.0-PowerPC) +---------------------------------------------------- +FIRST THING FIRST!! Set environment variables: (in tcsh) + +setenv LD_LIBRARY_PATH /usr/local/g95/lib/gcc-lib/powerpc-apple-darwin8.5.0/4.0.3/ +setenv PATH ${PATH}:/usr/local/g95/bin + +NOTE: This environment variable setting is specifit to Starsky. It is to make configure find the fortran compiler. + +Brief profile: +CC = gcc +CXX = g++ +FC = g95 + + + +If default doesn't work, try: + +For C shell: +env CC=gcc CXX=g++ FC=g95 ./configure && make install + +For Korn or Bourne shell: +CC=gcc CXX=g++ FC=g95 ./configure && make install + +And, of course, you should add configure options, such as --enable-fortran --enable-parallel. + + + +On this host, executing: + +For C shell: +env CC=gcc CXX=g++ FC=g95 ./configure --enable-fortran && make install + +For Korn or Bourne shell: +CC=gcc CXX=g++ FC=g95 ./configure --enable-fortran && make install + +has functioned correctly. + + + +To run test program, go to test directory: + +(i) Serial test +run: +./H5testF +./H5PartTest + + + + + +(5) Linux AMD64 Visualization group workstations (Linux"SUSE"-x86_64) +--------------------------------------------------------- +Brief profile: +CC = gcc +CXX = g++ +FC = g95 + + + +If default doesn't work, try: + +For C shell: +env CC=gcc CXX=g++ FC=g95 ./configure && make install + +For Korn or Bourne shell: +CC=gcc CXX=g++ FC=g95 ./configure && make install + +And, of course, you should add configure options, such as --enable-fortran --enable-parallel. + + + +On this host, executing: + +For C shell: +env CC=gcc CXX=g++ FC=g95 ./configure --enable-fortran && make install + +For Korn or Bourne shell: +CC=gcc CXX=g++ FC=g95 ./configure --enable-fortran && make install + +has functioned correctly. + + + +To run test program, go to test directory: + +(i) Serial test +run: +./H5testF +./H5PartTest + + + + + +============================================================================== + + ++ 4. Trouble shooting (Things to check for...) +-------------------------------------------- +(0) Have you set the LD_LIBRARY_PATH? +---Some systems require the user to manually set the environment variable, LD_LIBRARY_PATH. To do so: + +set the environment variable HDF5ROOT or PHDF5ROOT to point to your installation of HDF5 (serial and/or parallel respectively). + +For Korn or Bourne shell: + LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${HDF5ROOT}/lib;export LD_LIBRARY_PATH + LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:{PHDF5ROOT}/lib;export LD_LIBRARY_PATH + +For C shell: + setenv LD_LIBRARY_PATH ${LD_LIBRARY_PATH}:${HDF5ROOT}/lib + setenv LD_LIBRARY_PATH ${LD_LIBRARY_PATH}:${PHDF5ROOT}/lib + +Note that the values of HDF5ROOT & PHDF5ROOT will be in the "summary" section when you run configure. + +Not properly set LD_LIBRARY_PATH value may result in a runtime error: + +./H5PartTest: error while loading shared libraries: libhdf5.so.0: cannot open shared object file: No such file or directory + +(1) Are the compilers set correctly? +---Check with: which COMPILER + +(2) Have you installed HDF5? +---You can get it at: http://vis.lbl.gov/Research/AcceleratorSAPP/index.html + +(3) Have you loaded the proper modules? +---It is necessary in Davinci & Bassi, and configure && make install may not work without it. + + diff --git a/aclocal.m4 b/aclocal.m4 new file mode 100644 index 0000000..965df90 --- /dev/null +++ b/aclocal.m4 @@ -0,0 +1,850 @@ +# generated automatically by aclocal 1.9.5 -*- Autoconf -*- + +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, +# 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. + +# 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. + +# Copyright (C) 2002, 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. + +# AM_AUTOMAKE_VERSION(VERSION) +# ---------------------------- +# Automake X.Y traces this macro to ensure aclocal.m4 has been +# generated from the m4 files accompanying Automake X.Y. +AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version="1.9"]) + +# AM_SET_CURRENT_AUTOMAKE_VERSION +# ------------------------------- +# Call AM_AUTOMAKE_VERSION so it can be traced. +# This function is AC_REQUIREd by AC_INIT_AUTOMAKE. +AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], + [AM_AUTOMAKE_VERSION([1.9.5])]) + +# AM_AUX_DIR_EXPAND -*- Autoconf -*- + +# Copyright (C) 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. + +# 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/../..'. +# +# Of course, Automake must honor this variable whenever it calls a +# tool from the auxiliary directory. The problem is that $srcdir (and +# therefore $ac_aux_dir as well) can be either absolute or relative, +# depending on how configure is run. This is pretty annoying, since +# it makes $ac_aux_dir quite unusable in subdirectories: in the top +# source directory, any form will work fine, but in subdirectories a +# relative path needs to be adjusted first. +# +# $ac_aux_dir/missing +# fails when called from a subdirectory if $ac_aux_dir is relative +# $top_srcdir/$ac_aux_dir/missing +# fails if $ac_aux_dir is absolute, +# fails when called from a subdirectory in a VPATH build with +# a relative $ac_aux_dir +# +# 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 +# start a VPATH build or use an absolute $srcdir. +# +# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, +# iff we strip the leading $srcdir from $ac_aux_dir. That would be: +# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` +# and then we would define $MISSING as +# MISSING="\${SHELL} $am_aux_dir/missing" +# This will work as long as MISSING is not called from configure, because +# unfortunately $(top_srcdir) has no meaning in configure. +# However there are other variables, like CC, which are often used in +# configure, and could therefore not use this "fixed" $ac_aux_dir. +# +# Another solution, used here, is to always expand $ac_aux_dir to an +# absolute PATH. The drawback is that using absolute paths prevent a +# configured tree to be moved without reconfiguration. + +AC_DEFUN([AM_AUX_DIR_EXPAND], +[dnl Rely on autoconf to set up CDPATH properly. +AC_PREREQ([2.50])dnl +# expand $ac_aux_dir to an absolute path +am_aux_dir=`cd $ac_aux_dir && pwd` +]) + +# AM_CONDITIONAL -*- Autoconf -*- + +# Copyright (C) 1997, 2000, 2001, 2003, 2004, 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 7 + +# 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_SUBST([$1_TRUE]) +AC_SUBST([$1_FALSE]) +if $2; then + $1_TRUE= + $1_FALSE='#' +else + $1_TRUE='#' + $1_FALSE= +fi +AC_CONFIG_COMMANDS_PRE( +[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then + AC_MSG_ERROR([[conditional "$1" was never defined. +Usually this means the macro was only invoked conditionally.]]) +fi])]) + + +# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 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 + +# 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 +# CC etc. in the Makefile, will ask for an AC_PROG_CC use... + + +# _AM_DEPENDENCIES(NAME) +# ---------------------- +# See how the compiler implements dependency checking. +# NAME is "CC", "CXX", "GCJ", or "OBJC". +# 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 +# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular +# dependency, and given that the user is not expected to run this macro, +# just rely on AC_PROG_CC. +AC_DEFUN([_AM_DEPENDENCIES], +[AC_REQUIRE([AM_SET_DEPDIR])dnl +AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl +AC_REQUIRE([AM_MAKE_INCLUDE])dnl +AC_REQUIRE([AM_DEP_TRACK])dnl + +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], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], + [depcc="$$1" am_compiler_list=]) + +AC_CACHE_CHECK([dependency style of $depcc], + [am_cv_$1_dependencies_compiler_type], +[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_$1_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` + fi + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with + # Solaris 8's {/usr,}/bin/sh. + touch sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + case $depmode in + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + none) break ;; + esac + # 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. + if depmode=$depmode \ + source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_$1_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_$1_dependencies_compiler_type=none +fi +]) +AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) +AM_CONDITIONAL([am__fastdep$1], [ + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) +]) + + +# AM_SET_DEPDIR +# ------------- +# Choose a directory name for dependency files. +# 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 +]) + + +# 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]) +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' +fi +AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) +AC_SUBST([AMDEPBACKSLASH]) +]) + +# Generate code to set up dependency tracking. -*- Autoconf -*- + +# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 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 3 + +# _AM_OUTPUT_DEPENDENCY_COMMANDS +# ------------------------------ +AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], +[for mf in $CONFIG_FILES; do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named `Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # So let's grep whole file. + if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then + dirpart=`AS_DIRNAME("$mf")` + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running `make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # 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 + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`AS_DIRNAME(["$file"])` + AS_MKDIR_P([$dirpart/$fdir]) + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done +done +])# _AM_OUTPUT_DEPENDENCY_COMMANDS + + +# 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 +# need in order to bootstrap the dependency handling code. +AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], +[AC_CONFIG_COMMANDS([depfiles], + [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], + [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) +]) + +# Do all the work for Automake. -*- Autoconf -*- + +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 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 12 + +# 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. + +# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) +# AM_INIT_AUTOMAKE([OPTIONS]) +# ----------------------------------------------- +# The call with PACKAGE and VERSION arguments is the old style +# call (pre autoconf-2.50), which is being phased out. PACKAGE +# and VERSION should now be passed to AC_INIT and removed from +# the call to AM_INIT_AUTOMAKE. +# We support both call styles for the transition. After +# the next Automake release, Autoconf can make the AC_INIT +# 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.58])dnl +dnl Autoconf wants to disallow AM_ names. We explicitly allow +dnl the ones we care about. +m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl +AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl +AC_REQUIRE([AC_PROG_INSTALL])dnl +# test to see if srcdir already configured +if test "`cd $srcdir && pwd`" != "`pwd`" && + test -f $srcdir/config.status; then + AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi +AC_SUBST([CYGPATH_W]) + +# Define the identity of the package. +dnl Distinguish between old-style and new-style calls. +m4_ifval([$2], +[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl + AC_SUBST([PACKAGE], [$1])dnl + AC_SUBST([VERSION], [$2])], +[_AM_SET_OPTIONS([$1])dnl + AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl + AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl + +_AM_IF_OPTION([no-define],, +[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) + AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl + +# Some tools Automake needs. +AC_REQUIRE([AM_SANITY_CHECK])dnl +AC_REQUIRE([AC_ARG_PROGRAM])dnl +AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) +AM_MISSING_PROG(AUTOCONF, autoconf) +AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) +AM_MISSING_PROG(AUTOHEADER, autoheader) +AM_MISSING_PROG(MAKEINFO, makeinfo) +AM_PROG_INSTALL_SH +AM_PROG_INSTALL_STRIP +AC_REQUIRE([AM_PROG_MKDIR_P])dnl +# We need awk for the "check" target. The system "awk" is bad on +# some platforms. +AC_REQUIRE([AC_PROG_AWK])dnl +AC_REQUIRE([AC_PROG_MAKE_SET])dnl +AC_REQUIRE([AM_SET_LEADING_DOT])dnl +_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], + [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], + [_AM_PROG_TAR([v7])])]) +_AM_IF_OPTION([no-dependencies],, +[AC_PROVIDE_IFELSE([AC_PROG_CC], + [_AM_DEPENDENCIES(CC)], + [define([AC_PROG_CC], + 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 +]) +]) + + +# When config.status generates a header, we must update the stamp-h file. +# This file resides in the same directory as the config header +# that is generated. The stamp files are numbered to have different names. + +# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the +# loop where config.status creates the headers, so we can generate +# our stamp files there. +AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], +[# Compute $1's index in $config_headers. +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $1 | $1:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count]) + +# Copyright (C) 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. + +# AM_PROG_INSTALL_SH +# ------------------ +# Define $install_sh. +AC_DEFUN([AM_PROG_INSTALL_SH], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +install_sh=${install_sh-"$am_aux_dir/install-sh"} +AC_SUBST(install_sh)]) + +# Copyright (C) 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 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], +[rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null +AC_SUBST([am__leading_dot])]) + +# Check to see how 'make' treats includes. -*- Autoconf -*- + +# Copyright (C) 2001, 2002, 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 3 + +# AM_MAKE_INCLUDE() +# ----------------- +# Check to see how make treats includes. +AC_DEFUN([AM_MAKE_INCLUDE], +[am_make=${MAKE-make} +cat > confinc << 'END' +am__doit: + @echo done +.PHONY: am__doit +END +# If we don't find an include directive, just comment out the code. +AC_MSG_CHECKING([for style of include used by $am_make]) +am__include="#" +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# We grep out `Entering directory' and `Leaving directory' +# messages which can occur if `w' ends up in MAKEFLAGS. +# In particular we don't look at `^make:' because GNU make might +# be invoked under some other name (usually "gmake"), in which +# case it prints its new name instead of `make'. +if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then + am__include=include + am__quote= + _am_result=GNU +fi +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then + am__include=.include + am__quote="\"" + _am_result=BSD + fi +fi +AC_SUBST([am__include]) +AC_SUBST([am__quote]) +AC_MSG_RESULT([$_am_result]) +rm -f confinc confmf +]) + +# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- + +# Copyright (C) 1997, 1999, 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 4 + +# AM_MISSING_PROG(NAME, PROGRAM) +# ------------------------------ +AC_DEFUN([AM_MISSING_PROG], +[AC_REQUIRE([AM_MISSING_HAS_RUN]) +$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. +AC_DEFUN([AM_MISSING_HAS_RUN], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" +# Use eval to expand $SHELL +if eval "$MISSING --run true"; then + am_missing_run="$MISSING --run " +else + am_missing_run= + AC_MSG_WARN([`missing' script is too old or missing]) +fi +]) + +# Copyright (C) 2003, 2004, 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. + +# AM_PROG_MKDIR_P +# --------------- +# Check whether `mkdir -p' is supported, fallback to mkinstalldirs otherwise. +# +# Automake 1.8 used `mkdir -m 0755 -p --' to ensure that directories +# created by `make install' are always world readable, even if the +# installer happens to have an overly restrictive umask (e.g. 077). +# This was a mistake. There are at least two reasons why we must not +# use `-m 0755': +# - it causes special bits like SGID to be ignored, +# - it may be too restrictive (some setups expect 775 directories). +# +# Do not use -m 0755 and let people choose whatever they expect by +# setting umask. +# +# We cannot accept any implementation of `mkdir' that recognizes `-p'. +# Some implementations (such as Solaris 8's) are not thread-safe: if a +# parallel make tries to run `mkdir -p a/b' and `mkdir -p a/c' +# concurrently, both version can detect that a/ is missing, but only +# one can create it and the other will error out. Consequently we +# restrict ourselves to GNU make (using the --version option ensures +# this.) +AC_DEFUN([AM_PROG_MKDIR_P], +[if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then + # We used to keeping the `.' as first argument, in order to + # allow $(mkdir_p) to be used without argument. As in + # $(mkdir_p) $(somedir) + # where $(somedir) is conditionally defined. However this is wrong + # for two reasons: + # 1. if the package is installed by a user who cannot write `.' + # make install will fail, + # 2. the above comment should most certainly read + # $(mkdir_p) $(DESTDIR)$(somedir) + # so it does not work when $(somedir) is undefined and + # $(DESTDIR) is not. + # To support the latter case, we have to write + # test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir), + # so the `.' trick is pointless. + mkdir_p='mkdir -p --' +else + # On NextStep and OpenStep, the `mkdir' command does not + # recognize any option. It will interpret all options as + # directories to create, and then abort because `.' already + # exists. + for d in ./-p ./--version; + do + test -d $d && rmdir $d + done + # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists. + if test -f "$ac_aux_dir/mkinstalldirs"; then + mkdir_p='$(mkinstalldirs)' + else + mkdir_p='$(install_sh) -d' + fi +fi +AC_SUBST([mkdir_p])]) + +# Helper functions for option handling. -*- Autoconf -*- + +# Copyright (C) 2001, 2002, 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 3 + +# _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)]) + +# _AM_SET_OPTIONS(OPTIONS) +# ---------------------------------- +# OPTIONS is a space-separated list of Automake options. +AC_DEFUN([_AM_SET_OPTIONS], +[AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) + +# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) +# ------------------------------------------- +# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. +AC_DEFUN([_AM_IF_OPTION], +[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) + +# Check to make sure that the build environment is sane. -*- Autoconf -*- + +# 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 4 + +# 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 +# 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 + + test "$[2]" = conftest.file + ) +then + # Ok. + : +else + AC_MSG_ERROR([newly created file is older than distributed files! +Check your system clock]) +fi +AC_MSG_RESULT(yes)]) + +# Copyright (C) 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. + +# AM_PROG_INSTALL_STRIP +# --------------------- +# 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 +# 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 +# tool to use in cross-compilation environments, therefore Automake +# will honor the `STRIP' environment variable to overrule this program. +dnl Don't test for $cross_compiling = yes, because it might be `maybe'. +if test "$cross_compiling" != no; then + AC_CHECK_TOOL([STRIP], [strip], :) +fi +INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" +AC_SUBST([INSTALL_STRIP_PROGRAM])]) + +# Check how to create a tarball. -*- Autoconf -*- + +# Copyright (C) 2004, 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 2 + +# _AM_PROG_TAR(FORMAT) +# -------------------- +# Check how to create a tarball in format FORMAT. +# 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 +# $tardir. +# tardir=directory && $(am__tar) > result.tar +# +# 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. +_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 + + # 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 /dev/null 2>&1 && break + fi +done +rm -rf conftest.dir + +AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) +AC_MSG_RESULT([$am_cv_prog_tar_$1])]) +AC_SUBST([am__tar]) +AC_SUBST([am__untar]) +]) # _AM_PROG_TAR + diff --git a/autogen.sh b/autogen.sh new file mode 100755 index 0000000..c89e6be --- /dev/null +++ b/autogen.sh @@ -0,0 +1,46 @@ +#!/bin/sh +# Run this to generate all the initial makefiles, etc. + +echo "+ making misc files ..." +touch NEWS README AUTHORS ChangeLog +echo +echo +echo +echo "+ running aclocal ..." +aclocal $ACLOCAL_FLAGS || { + echo + echo "aclocal failed - check that all needed development files are present on system" + exit 1 +} +echo +echo +echo +echo +echo "+ running autoheader ... " +autoheader || { + echo + echo "autoheader failed" + exit 1 +} +echo +echo +echo +echo "+ running autoconf ... " +autoconf || { + echo + echo "autoconf failed" + exit 1 +} +echo +echo +echo +echo "+ running automake ... " +automake -a -c --foreign || { + echo + echo "automake failed" + exit 1 +} +echo +echo +echo + diff --git a/config.guess b/config.guess new file mode 100755 index 0000000..44f30e6 --- /dev/null +++ b/config.guess @@ -0,0 +1,1469 @@ +#! /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 Free Software Foundation, Inc. + +timestamp='2005-02-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 +# (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, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# 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 to . Submit a context +# diff and a properly formatted ChangeLog entry. +# +# 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. +# +# The plan is that this can be called by configure scripts if you +# don't specify an explicit build system type. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] + +Output the configuration name of the system \`$me' is run on. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +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 +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." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit 0 ;; + --version | -v ) + echo "$version" ; exit 0 ;; + --help | --h* | -h ) + echo "$usage"; exit 0 ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" >&2 + exit 1 ;; + * ) + break ;; + esac +done + +if test $# != 0; then + echo "$me: too many arguments$help" >&2 + exit 1 +fi + +trap 'exit 1' 1 2 15 + +# CC_FOR_BUILD -- compiler used by this script. Note that the use of a +# compiler to aid in system detection is discouraged as it requires +# temporary files to be created and, as you can see below, it is a +# headache to deal with in a portable fashion. + +# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still +# use `HOST_CC' if defined, but it is deprecated. + +# Portable tmp directory creation inspired by the Autoconf team. + +set_cc_for_build=' +trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; +trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; +: ${TMPDIR=/tmp} ; + { tmp=`(umask 077 && mktemp -d -q "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || + { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || + { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || + { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; +dummy=$tmp/dummy ; +tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; +case $CC_FOR_BUILD,$HOST_CC,$CC in + ,,) echo "int x;" > $dummy.c ; + for c in cc gcc c89 c99 ; do + if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then + CC_FOR_BUILD="$c"; break ; + fi ; + done ; + if test x"$CC_FOR_BUILD" = x ; then + CC_FOR_BUILD=no_compiler_found ; + fi + ;; + ,,*) CC_FOR_BUILD=$CC ;; + ,*,*) CC_FOR_BUILD=$HOST_CC ;; +esac ;' + +# This is needed to find uname on a Pyramid OSx when run in the BSD universe. +# (ghazi@noc.rutgers.edu 1994-08-24) +if (test -f /.attbin/uname) >/dev/null 2>&1 ; then + PATH=$PATH:/.attbin ; export PATH +fi + +UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown +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_MACHINE}" in + i?86) + test -z "$VENDOR" && VENDOR=pc + ;; + *) + test -z "$VENDOR" && VENDOR=unknown + ;; +esac +test -f /etc/SuSE-release -o -f /.buildenv && VENDOR=suse + +# 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*, + # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently + # switched to ELF, *-*-netbsd* would select the old + # object file format. This provides both forward + # compatibility and a consistent mechanism for selecting the + # object file format. + # + # Note: NetBSD doesn't particularly care about the vendor + # portion of the name. We always set it to "unknown". + sysctl="sysctl -n hw.machine_arch" + UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ + /usr/sbin/$sysctl 2>/dev/null || echo unknown)` + case "${UNAME_MACHINE_ARCH}" in + armeb) machine=armeb-unknown ;; + arm*) machine=arm-unknown ;; + sh3el) machine=shl-unknown ;; + sh3eb) machine=sh-unknown ;; + *) machine=${UNAME_MACHINE_ARCH}-unknown ;; + esac + # The Operating System including object format, if it has switched + # to ELF recently, or will in the future. + case "${UNAME_MACHINE_ARCH}" in + arm*|i386|m68k|ns32k|sh3*|sparc|vax) + eval $set_cc_for_build + if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep __ELF__ >/dev/null + then + # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). + # Return netbsd for either. FIX? + os=netbsd + else + os=netbsdelf + fi + ;; + *) + os=netbsd + ;; + esac + # The OS release + # Debian GNU/NetBSD machines have a different userland, and + # thus, need a distinct triplet. However, they do not need + # kernel version information, so it can be replaced with a + # suitable tag, in the style of linux-gnu. + case "${UNAME_VERSION}" in + Debian*) + release='-gnu' + ;; + *) + release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + ;; + esac + # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: + # contains redundant information, the shorter form: + # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. + echo "${machine}-${os}${release}" + exit 0 ;; + amd64:OpenBSD:*:*) + echo x86_64-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + amiga:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + cats:OpenBSD:*:*) + echo arm-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + hp300:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + luna88k:OpenBSD:*:*) + echo m88k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mac68k:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + macppc:OpenBSD:*:*) + echo powerpc-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mvme68k:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mvme88k:OpenBSD:*:*) + echo m88k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mvmeppc:OpenBSD:*:*) + echo powerpc-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + sgi:OpenBSD:*:*) + echo mips64-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + sun3:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + *:OpenBSD:*:*) + echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + *:ekkoBSD:*:*) + echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} + exit 0 ;; + macppc:MirBSD:*:*) + echo powerppc-unknown-mirbsd${UNAME_RELEASE} + exit 0 ;; + *:MirBSD:*:*) + echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} + exit 0 ;; + alpha:OSF1:*:*) + case $UNAME_RELEASE in + *4.0) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` + ;; + *5.*) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` + ;; + esac + # According to Compaq, /usr/sbin/psrinfo has been available on + # OSF/1 and Tru64 systems produced since 1995. I hope that + # covers most systems running today. This code pipes the CPU + # types through head -n 1, so we only detect the type of CPU 0. + ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` + case "$ALPHA_CPU_TYPE" in + "EV4 (21064)") + UNAME_MACHINE="alpha" ;; + "EV4.5 (21064)") + UNAME_MACHINE="alpha" ;; + "LCA4 (21066/21068)") + UNAME_MACHINE="alpha" ;; + "EV5 (21164)") + UNAME_MACHINE="alphaev5" ;; + "EV5.6 (21164A)") + UNAME_MACHINE="alphaev56" ;; + "EV5.6 (21164PC)") + UNAME_MACHINE="alphapca56" ;; + "EV5.7 (21164PC)") + UNAME_MACHINE="alphapca57" ;; + "EV6 (21264)") + UNAME_MACHINE="alphaev6" ;; + "EV6.7 (21264A)") + UNAME_MACHINE="alphaev67" ;; + "EV6.8CB (21264C)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8AL (21264B)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8CX (21264D)") + UNAME_MACHINE="alphaev68" ;; + "EV6.9A (21264/EV69A)") + UNAME_MACHINE="alphaev69" ;; + "EV7 (21364)") + UNAME_MACHINE="alphaev7" ;; + "EV7.9 (21364A)") + UNAME_MACHINE="alphaev79" ;; + esac + # A Pn.n version is a patched version. + # A Vn.n version is a released version. + # A Tn.n version is a released field test version. + # A Xn.n version is an unreleased experimental baselevel. + # 1.2 uses "1.2" for uname -r. + echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + exit 0 ;; + Alpha\ *:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # Should we change UNAME_MACHINE based on the output of uname instead + # of the specific Alpha model? + echo alpha-pc-interix + exit 0 ;; + 21064:Windows_NT:50:3) + echo alpha-dec-winnt3.5 + exit 0 ;; + Amiga*:UNIX_System_V:4.0:*) + echo m68k-unknown-sysv4 + exit 0;; + *:[Aa]miga[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-amigaos + exit 0 ;; + *:[Mm]orph[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-morphos + exit 0 ;; + *:OS/390:*:*) + echo i370-ibm-openedition + exit 0 ;; + *:z/VM:*:*) + echo s390-ibm-zvmoe + exit 0 ;; + *:OS400:*:*) + echo powerpc-ibm-os400 + exit 0 ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + echo arm-acorn-riscix${UNAME_RELEASE} + exit 0;; + SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) + echo hppa1.1-hitachi-hiuxmpp + exit 0;; + Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) + # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. + if test "`(/bin/universe) 2>/dev/null`" = att ; then + echo pyramid-pyramid-sysv3 + else + echo pyramid-pyramid-bsd + fi + exit 0 ;; + NILE*:*:*:dcosx) + echo pyramid-pyramid-svr4 + exit 0 ;; + DRS?6000:unix:4.0:6*) + echo sparc-icl-nx6 + exit 0 ;; + DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) + case `/usr/bin/uname -p` in + sparc) echo sparc-icl-nx7 && exit 0 ;; + esac ;; + sun4H:SunOS:5.*:*) + echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + i86pc:SunOS:5.*:*) + echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + sun4*:SunOS:6*:*) + # According to config.sub, this is the proper way to canonicalize + # SunOS6. Hard to guess exactly what SunOS6 will be like, but + # it's likely to be more like Solaris than SunOS4. + echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + sun4*:SunOS:*:*) + case "`/usr/bin/arch -k`" in + Series*|S4*) + UNAME_RELEASE=`uname -v` + ;; + esac + # Japanese Language versions have a version number like `4.1.3-JL'. + echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` + exit 0 ;; + sun3*:SunOS:*:*) + echo m68k-sun-sunos${UNAME_RELEASE} + exit 0 ;; + sun*:*:4.2BSD:*) + UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` + test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 + case "`/bin/arch`" in + sun3) + echo m68k-sun-sunos${UNAME_RELEASE} + ;; + sun4) + echo sparc-sun-sunos${UNAME_RELEASE} + ;; + esac + exit 0 ;; + aushp:SunOS:*:*) + echo sparc-auspex-sunos${UNAME_RELEASE} + exit 0 ;; + # The situation for MiNT is a little confusing. The machine name + # can be virtually everything (everything which is not + # "atarist" or "atariste" at least should have a processor + # > m68000). The system name ranges from "MiNT" over "FreeMiNT" + # to the lowercase version "mint" (or "freemint"). Finally + # the system name "TOS" denotes a system which is actually not + # MiNT. But MiNT is downward compatible to TOS, so this should + # be no problem. + atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit 0 ;; + atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit 0 ;; + *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit 0 ;; + milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) + echo m68k-milan-mint${UNAME_RELEASE} + exit 0 ;; + hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) + echo m68k-hades-mint${UNAME_RELEASE} + exit 0 ;; + *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) + echo m68k-unknown-mint${UNAME_RELEASE} + exit 0 ;; + m68k:machten:*:*) + echo m68k-apple-machten${UNAME_RELEASE} + exit 0 ;; + powerpc:machten:*:*) + echo powerpc-apple-machten${UNAME_RELEASE} + exit 0 ;; + RISC*:Mach:*:*) + echo mips-dec-mach_bsd4.3 + exit 0 ;; + RISC*:ULTRIX:*:*) + echo mips-dec-ultrix${UNAME_RELEASE} + exit 0 ;; + VAX*:ULTRIX*:*:*) + echo vax-dec-ultrix${UNAME_RELEASE} + exit 0 ;; + 2020:CLIX:*:* | 2430:CLIX:*:*) + echo clipper-intergraph-clix${UNAME_RELEASE} + exit 0 ;; + mips:*:*:UMIPS | mips:*:*:RISCos) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c +#ifdef __cplusplus +#include /* for printf() prototype */ + int main (int argc, char *argv[]) { +#else + int main (argc, argv) int argc; char *argv[]; { +#endif + #if defined (host_mips) && defined (MIPSEB) + #if defined (SYSTYPE_SYSV) + printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_SVR4) + printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) + printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); + #endif + #endif + exit (-1); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c \ + && $dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \ + && exit 0 + echo mips-mips-riscos${UNAME_RELEASE} + exit 0 ;; + Motorola:PowerMAX_OS:*:*) + echo powerpc-motorola-powermax + exit 0 ;; + Motorola:*:4.3:PL8-*) + echo powerpc-harris-powermax + exit 0 ;; + Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) + echo powerpc-harris-powermax + exit 0 ;; + Night_Hawk:Power_UNIX:*:*) + echo powerpc-harris-powerunix + exit 0 ;; + m88k:CX/UX:7*:*) + echo m88k-harris-cxux7 + exit 0 ;; + m88k:*:4*:R4*) + echo m88k-motorola-sysv4 + exit 0 ;; + m88k:*:3*:R3*) + echo m88k-motorola-sysv3 + exit 0 ;; + AViiON:dgux:*:*) + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` + if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] + then + if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ + [ ${TARGET_BINARY_INTERFACE}x = x ] + then + echo m88k-dg-dgux${UNAME_RELEASE} + else + echo m88k-dg-dguxbcs${UNAME_RELEASE} + fi + else + echo i586-dg-dgux${UNAME_RELEASE} + fi + exit 0 ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) + echo m88k-dolphin-sysv3 + exit 0 ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + echo m88k-motorola-sysv3 + exit 0 ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) + echo m88k-tektronix-sysv3 + exit 0 ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) + echo m68k-tektronix-bsd + exit 0 ;; + *:IRIX*:*:*) + echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` + exit 0 ;; + ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. + echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id + exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + i*86:AIX:*:*) + echo i386-ibm-aix + exit 0 ;; + ia64:AIX:*:*) + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} + exit 0 ;; + *:AIX:2:3) + if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + + main() + { + if (!__power_pc()) + exit(1); + puts("powerpc-ibm-aix3.2.5"); + exit(0); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0 + echo rs6000-ibm-aix3.2.5 + elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then + echo rs6000-ibm-aix3.2.4 + else + echo rs6000-ibm-aix3.2 + fi + exit 0 ;; + *:AIX:*:[45]) + IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` + if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then + IBM_ARCH=rs6000 + else + IBM_ARCH=powerpc + fi + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${IBM_ARCH}-ibm-aix${IBM_REV} + exit 0 ;; + *:AIX:*:*) + echo rs6000-ibm-aix + exit 0 ;; + ibmrt:4.4BSD:*|romp-ibm:BSD:*) + echo romp-ibm-bsd4.4 + exit 0 ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and + echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to + exit 0 ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) + echo rs6000-bull-bosx + exit 0 ;; + DPX/2?00:B.O.S.:*:*) + echo m68k-bull-sysv3 + exit 0 ;; + 9000/[34]??:4.3bsd:1.*:*) + echo m68k-hp-bsd + exit 0 ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + echo m68k-hp-bsd4.4 + exit 0 ;; + 9000/[34678]??:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + case "${UNAME_MACHINE}" in + 9000/31? ) HP_ARCH=m68000 ;; + 9000/[34]?? ) HP_ARCH=m68k ;; + 9000/[678][0-9][0-9]) + if [ -x /usr/bin/getconf ]; then + sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` + sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` + case "${sc_cpu_version}" in + 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 + 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 + 532) # CPU_PA_RISC2_0 + case "${sc_kernel_bits}" in + 32) HP_ARCH="hppa2.0n" ;; + 64) HP_ARCH="hppa2.0w" ;; + '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 + esac ;; + esac + fi + if [ "${HP_ARCH}" = "" ]; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + + #define _HPUX_SOURCE + #include + #include + + int main () + { + #if defined(_SC_KERNEL_BITS) + long bits = sysconf(_SC_KERNEL_BITS); + #endif + long cpu = sysconf (_SC_CPU_VERSION); + + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1"); break; + case CPU_PA_RISC2_0: + #if defined(_SC_KERNEL_BITS) + switch (bits) + { + case 64: puts ("hppa2.0w"); break; + case 32: puts ("hppa2.0n"); break; + default: puts ("hppa2.0"); break; + } break; + #else /* !defined(_SC_KERNEL_BITS) */ + puts ("hppa2.0"); break; + #endif + default: puts ("hppa1.0"); break; + } + exit (0); + } +EOF + (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` + test -z "$HP_ARCH" && HP_ARCH=hppa + fi ;; + esac + if [ ${HP_ARCH} = "hppa2.0w" ] + then + # avoid double evaluation of $set_cc_for_build + test -n "$CC_FOR_BUILD" || eval $set_cc_for_build + if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E -) | grep __LP64__ >/dev/null + then + HP_ARCH="hppa2.0w" + else + HP_ARCH="hppa64" + fi + fi + echo ${HP_ARCH}-hp-hpux${HPUX_REV} + exit 0 ;; + ia64:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + echo ia64-hp-hpux${HPUX_REV} + exit 0 ;; + 3050*:HI-UX:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + int + main () + { + long cpu = sysconf (_SC_CPU_VERSION); + /* The order matters, because CPU_IS_HP_MC68K erroneously returns + true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct + results, however. */ + if (CPU_IS_PA_RISC (cpu)) + { + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; + case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; + default: puts ("hppa-hitachi-hiuxwe2"); break; + } + } + else if (CPU_IS_HP_MC68K (cpu)) + puts ("m68k-hitachi-hiuxwe2"); + else puts ("unknown-hitachi-hiuxwe2"); + exit (0); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0 + echo unknown-hitachi-hiuxwe2 + exit 0 ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) + echo hppa1.1-hp-bsd + exit 0 ;; + 9000/8??:4.3bsd:*:*) + echo hppa1.0-hp-bsd + exit 0 ;; + *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) + echo hppa1.0-hp-mpeix + exit 0 ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) + echo hppa1.1-hp-osf + exit 0 ;; + hp8??:OSF1:*:*) + echo hppa1.0-hp-osf + exit 0 ;; + i*86:OSF1:*:*) + if [ -x /usr/sbin/sysversion ] ; then + echo ${UNAME_MACHINE}-unknown-osf1mk + else + echo ${UNAME_MACHINE}-unknown-osf1 + fi + exit 0 ;; + parisc*:Lites*:*:*) + echo hppa1.1-hp-lites + exit 0 ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) + echo c1-convex-bsd + exit 0 ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit 0 ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) + echo c34-convex-bsd + exit 0 ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) + echo c38-convex-bsd + exit 0 ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) + echo c4-convex-bsd + exit 0 ;; + CRAY*Y-MP:*:*:*) + echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY*[A-Z]90:*:*:*) + echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ + | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ + -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ + -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY*TS:*:*:*) + echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY*T3E:*:*:*) + echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY*SV1:*:*:*) + echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + *:UNICOS/mp:*:*) + echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) + FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` + echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit 0 ;; + 5000:UNIX_System_V:4.*:*) + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` + echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit 0 ;; + i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) + echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} + exit 0 ;; + sparc*:BSD/OS:*:*) + echo sparc-unknown-bsdi${UNAME_RELEASE} + exit 0 ;; + *:BSD/OS:*:*) + echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} + exit 0 ;; + *:FreeBSD:*:*) + echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` + exit 0 ;; + i*:CYGWIN*:*) + echo ${UNAME_MACHINE}-pc-cygwin + exit 0 ;; + i*:MINGW*:*) + echo ${UNAME_MACHINE}-pc-mingw32 + exit 0 ;; + i*:PW*:*) + echo ${UNAME_MACHINE}-pc-pw32 + exit 0 ;; + x86:Interix*:[34]*) + echo i586-pc-interix${UNAME_RELEASE}|sed -e 's/\..*//' + exit 0 ;; + [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) + echo i${UNAME_MACHINE}-pc-mks + exit 0 ;; + i*:Windows_NT*:* | Pentium*:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we + # UNAME_MACHINE based on the output of uname instead of i386? + echo i586-pc-interix + exit 0 ;; + i*:UWIN*:*) + echo ${UNAME_MACHINE}-pc-uwin + exit 0 ;; + amd64:CYGWIN*:*:*) + echo x86_64-unknown-cygwin + exit 0 ;; + p*:CYGWIN*:*) + echo powerpcle-unknown-cygwin + exit 0 ;; + prep*:SunOS:5.*:*) + echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + *:GNU:*:*) + # the GNU system + echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` + exit 0 ;; + *: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 + exit 0 ;; + i*86:Minix:*:*) + echo ${UNAME_MACHINE}-pc-minix + exit 0 ;; + arm*:Linux:*:*) + echo ${UNAME_MACHINE}-${VENDOR}-linux + exit 0 ;; + cris:Linux:*:*) + echo cris-axis-linux + exit 0 ;; + crisv32:Linux:*:*) + echo crisv32-axis-linux + exit 0 ;; + frv:Linux:*:*) + echo frv-${VENDOR}-linux + exit 0 ;; + ia64:Linux:*:*) + echo ${UNAME_MACHINE}-${VENDOR}-linux + exit 0 ;; + m32r*:Linux:*:*) + echo ${UNAME_MACHINE}-${VENDOR}-linux + exit 0 ;; + m68*:Linux:*:*) + echo ${UNAME_MACHINE}-${VENDOR}-linux + exit 0 ;; + mips:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef mips + #undef mipsel + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=mipsel + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=mips + #else + CPU= + #endif + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` + test x"${CPU}" != x && echo "${CPU}-${VENDOR}-linux" && exit 0 + ;; + mips64:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef mips64 + #undef mips64el + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=mips64el + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=mips64 + #else + CPU= + #endif + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` + test x"${CPU}" != x && echo "${CPU}-${VENDOR}-linux" && exit 0 + ;; + ppc:Linux:*:*) + echo powerpc-${VENDOR}-linux + exit 0 ;; + ppc64:Linux:*:*) + echo powerpc64-${VENDOR}-linux + exit 0 ;; + alpha:Linux:*:*) + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in + EV5) UNAME_MACHINE=alphaev5 ;; + EV56) UNAME_MACHINE=alphaev56 ;; + PCA56) UNAME_MACHINE=alphapca56 ;; + PCA57) UNAME_MACHINE=alphapca56 ;; + EV6) UNAME_MACHINE=alphaev6 ;; + EV67) UNAME_MACHINE=alphaev67 ;; + EV68*) UNAME_MACHINE=alphaev68 ;; + esac + objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null + if test "$?" = 0 ; then LIBC="-libc1" ; else LIBC="" ; fi + echo ${UNAME_MACHINE}-${VENDOR}-linux${LIBC} + exit 0 ;; + 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-${VENDOR}-linux ;; + PA8*) echo hppa2.0-${VENDOR}-linux ;; + *) echo hppa-${VENDOR}-linux ;; + esac + exit 0 ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) + echo hppa64-${VENDOR}-linux + exit 0 ;; + s390:Linux:*:* | s390x:Linux:*:*) + echo ${UNAME_MACHINE}-ibm-linux + exit 0 ;; + sh64*:Linux:*:*) + echo ${UNAME_MACHINE}-${VENDOR}-linux + exit 0 ;; + sh*:Linux:*:*) + echo ${UNAME_MACHINE}-${VENDOR}-linux + exit 0 ;; + sparc:Linux:*:* | sparc64:Linux:*:*) + echo ${UNAME_MACHINE}-${VENDOR}-linux + exit 0 ;; + x86_64:Linux:*:*) + echo x86_64-${VENDOR}-linux + exit 0 ;; + i*86:Linux:*:*) + # The BFD linker knows what the default object file format is, so + # first see if it will tell us. cd to the root directory to prevent + # problems with other programs or directories called `ld' in the path. + # Set LC_ALL=C to ensure ld outputs messages in English. + ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \ + | sed -ne '/supported targets:/!d + s/[ ][ ]*/ /g + s/.*supported targets: *// + s/ .*// + p'` + case "$ld_supported_targets" in + elf32-i386) + TENTATIVE="${UNAME_MACHINE}-${VENDOR}-linux" + ;; + a.out-i386-linux) + echo "${UNAME_MACHINE}-${VENDOR}-linuxaout" + exit 0 ;; + coff-i386) + echo "${UNAME_MACHINE}-${VENDOR}-linuxcoff" + exit 0 ;; + "") + # Either a pre-BFD a.out linker (linuxoldld) or + # one that does not give us useful --help. + echo "${UNAME_MACHINE}-${VENDOR}-linuxoldld" + exit 0 ;; + esac + # Determine whether the default compiler is a.out or elf + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + #ifdef __ELF__ + # ifdef __GLIBC__ + # if __GLIBC__ >= 2 + LIBC=gnu + # else + LIBC=gnulibc1 + # endif + # else + LIBC=gnulibc1 + # endif + #else + #ifdef __INTEL_COMPILER + LIBC=gnu + #else + LIBC=gnuaout + #endif + #endif + #ifdef __dietlibc__ + LIBC=dietlibc + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` + test x"${LIBC}" != x && echo "${UNAME_MACHINE}-${VENDOR}-linux-${LIBC}" | sed 's/linux-gnu/linux/' && exit 0 + test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0 + ;; + i*86:DYNIX/ptx:4*:*) + # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. + # earlier versions are messed up and put the nodename in both + # sysname and nodename. + echo i386-sequent-sysv4 + exit 0 ;; + i*86:UNIX_SV:4.2MP:2.*) + # Unixware is an offshoot of SVR4, but it has its own version + # number series starting with 2... + # I am not positive that other SVR4 systems won't match this, + # I just have to hope. -- rms. + # Use sysv4.2uw... so that sysv4* matches it. + echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} + exit 0 ;; + i*86:OS/2:*:*) + # If we were able to find `uname', then EMX Unix compatibility + # is probably installed. + echo ${UNAME_MACHINE}-pc-os2-emx + exit 0 ;; + i*86:XTS-300:*:STOP) + echo ${UNAME_MACHINE}-unknown-stop + exit 0 ;; + i*86:atheos:*:*) + echo ${UNAME_MACHINE}-unknown-atheos + exit 0 ;; + i*86:syllable:*:*) + echo ${UNAME_MACHINE}-pc-syllable + exit 0 ;; + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) + echo i386-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + i*86:*DOS:*:*) + echo ${UNAME_MACHINE}-pc-msdosdjgpp + exit 0 ;; + i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) + UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` + if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then + echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} + else + echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} + fi + exit 0 ;; + i*86:*:5:[78]*) + case `/bin/uname -X | grep "^Machine"` in + *486*) UNAME_MACHINE=i486 ;; + *Pentium) UNAME_MACHINE=i586 ;; + *Pent*|*Celeron) UNAME_MACHINE=i686 ;; + esac + echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} + exit 0 ;; + i*86:*:3.2:*) + if test -f /usr/options/cb.name; then + UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then + UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` + (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 + (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ + && UNAME_MACHINE=i586 + (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ + && UNAME_MACHINE=i686 + (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ + && UNAME_MACHINE=i686 + echo ${UNAME_MACHINE}-pc-sco$UNAME_REL + else + echo ${UNAME_MACHINE}-pc-sysv32 + fi + exit 0 ;; + pc:*:*:*) + # Left here for compatibility: + # uname -m prints for DJGPP always 'pc', but it prints nothing about + # the processor, so we play safe by assuming i386. + echo i386-pc-msdosdjgpp + exit 0 ;; + Intel:Mach:3*:*) + echo i386-pc-mach3 + exit 0 ;; + paragon:*:*:*) + echo i860-intel-osf1 + exit 0 ;; + i860:*:4.*:*) # i860-SVR4 + if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then + echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 + else # Add other i860-SVR4 vendors below as they are discovered. + echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 + fi + exit 0 ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + echo m68010-convergent-sysv + exit 0 ;; + mc68k:UNIX:SYSTEM5:3.51m) + echo m68k-convergent-sysv + exit 0 ;; + M680?0:D-NIX:5.3:*) + echo m68k-diab-dnix + exit 0 ;; + M68*:*:R3V[5678]*:*) + test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; + 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) + OS_REL='' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && echo i486-ncr-sysv4.3${OS_REL} && exit 0 + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;; + 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && echo i486-ncr-sysv4 && exit 0 ;; + m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) + echo m68k-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + mc68030:UNIX_System_V:4.*:*) + echo m68k-atari-sysv4 + exit 0 ;; + TSUNAMI:LynxOS:2.*:*) + echo sparc-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + rs6000:LynxOS:2.*:*) + echo rs6000-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) + echo powerpc-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + SM[BE]S:UNIX_SV:*:*) + echo mips-dde-sysv${UNAME_RELEASE} + exit 0 ;; + RM*:ReliantUNIX-*:*:*) + echo mips-sni-sysv4 + exit 0 ;; + RM*:SINIX-*:*:*) + echo mips-sni-sysv4 + exit 0 ;; + *:SINIX-*:*:*) + if uname -p 2>/dev/null >/dev/null ; then + UNAME_MACHINE=`(uname -p) 2>/dev/null` + echo ${UNAME_MACHINE}-sni-sysv4 + else + echo ns32k-sni-sysv + fi + exit 0 ;; + PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says + echo i586-unisys-sysv4 + exit 0 ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes . + # How about differentiating between stratus architectures? -djm + echo hppa1.1-stratus-sysv4 + exit 0 ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. + echo i860-stratus-sysv4 + exit 0 ;; + *:VOS:*:*) + # From Paul.Green@stratus.com. + echo hppa1.1-stratus-vos + exit 0 ;; + mc68*:A/UX:*:*) + echo m68k-apple-aux${UNAME_RELEASE} + exit 0 ;; + news*:NEWS-OS:6*:*) + echo mips-sony-newsos6 + exit 0 ;; + R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) + if [ -d /usr/nec ]; then + echo mips-nec-sysv${UNAME_RELEASE} + else + echo mips-unknown-sysv${UNAME_RELEASE} + fi + exit 0 ;; + BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. + echo powerpc-be-beos + exit 0 ;; + BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. + echo powerpc-apple-beos + exit 0 ;; + BePC:BeOS:*:*) # BeOS running on Intel PC compatible. + echo i586-pc-beos + exit 0 ;; + SX-4:SUPER-UX:*:*) + echo sx4-nec-superux${UNAME_RELEASE} + exit 0 ;; + SX-5:SUPER-UX:*:*) + echo sx5-nec-superux${UNAME_RELEASE} + exit 0 ;; + SX-6:SUPER-UX:*:*) + echo sx6-nec-superux${UNAME_RELEASE} + exit 0 ;; + Power*:Rhapsody:*:*) + echo powerpc-apple-rhapsody${UNAME_RELEASE} + exit 0 ;; + *:Rhapsody:*:*) + echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} + exit 0 ;; + *:Darwin:*:*) + UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown + case $UNAME_PROCESSOR in + *86) UNAME_PROCESSOR=i686 ;; + unknown) UNAME_PROCESSOR=powerpc ;; + esac + echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} + exit 0 ;; + *:procnto*:*:* | *:QNX:[0123456789]*:*) + UNAME_PROCESSOR=`uname -p` + if test "$UNAME_PROCESSOR" = "x86"; then + UNAME_PROCESSOR=i386 + UNAME_MACHINE=pc + fi + echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} + exit 0 ;; + *:QNX:*:4*) + echo i386-pc-qnx + exit 0 ;; + NSE-?:NONSTOP_KERNEL:*:*) + echo nse-tandem-nsk${UNAME_RELEASE} + exit 0 ;; + NSR-?:NONSTOP_KERNEL:*:*) + echo nsr-tandem-nsk${UNAME_RELEASE} + exit 0 ;; + *:NonStop-UX:*:*) + echo mips-compaq-nonstopux + exit 0 ;; + BS2000:POSIX*:*:*) + echo bs2000-siemens-sysv + exit 0 ;; + DS/*:UNIX_System_V:*:*) + echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} + exit 0 ;; + *:Plan9:*:*) + # "uname -m" is not consistent, so use $cputype instead. 386 + # is converted to i386 for consistency with other x86 + # operating systems. + if test "$cputype" = "386"; then + UNAME_MACHINE=i386 + else + UNAME_MACHINE="$cputype" + fi + echo ${UNAME_MACHINE}-unknown-plan9 + exit 0 ;; + *:TOPS-10:*:*) + echo pdp10-unknown-tops10 + exit 0 ;; + *:TENEX:*:*) + echo pdp10-unknown-tenex + exit 0 ;; + KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) + echo pdp10-dec-tops20 + exit 0 ;; + XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) + echo pdp10-xkl-tops20 + exit 0 ;; + *:TOPS-20:*:*) + echo pdp10-unknown-tops20 + exit 0 ;; + *:ITS:*:*) + echo pdp10-unknown-its + exit 0 ;; + SEI:*:*:SEIUX) + echo mips-sei-seiux${UNAME_RELEASE} + exit 0 ;; + *:DragonFly:*:*) + echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` + exit 0 ;; + *:*VMS:*:*) + UNAME_MACHINE=`(uname -p) 2>/dev/null` + case "${UNAME_MACHINE}" in + A*) echo alpha-dec-vms && exit 0 ;; + I*) echo ia64-dec-vms && exit 0 ;; + V*) echo vax-dec-vms && exit 0 ;; + esac ;; + *:XENIX:*:SysV) + echo i386-pc-xenix + exit 0 ;; +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 < +# include +#endif +main () +{ +#if defined (sony) +#if defined (MIPSEB) + /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, + I don't know.... */ + printf ("mips-sony-bsd\n"); exit (0); +#else +#include + printf ("m68k-sony-newsos%s\n", +#ifdef NEWSOS4 + "4" +#else + "" +#endif + ); exit (0); +#endif +#endif + +#if defined (__arm) && defined (__acorn) && defined (__unix) + printf ("arm-acorn-riscix"); exit (0); +#endif + +#if defined (hp300) && !defined (hpux) + printf ("m68k-hp-bsd\n"); exit (0); +#endif + +#if defined (NeXT) +#if !defined (__ARCHITECTURE__) +#define __ARCHITECTURE__ "m68k" +#endif + int version; + version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; + if (version < 4) + printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); + else + printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); + exit (0); +#endif + +#if defined (MULTIMAX) || defined (n16) +#if defined (UMAXV) + printf ("ns32k-encore-sysv\n"); exit (0); +#else +#if defined (CMU) + printf ("ns32k-encore-mach\n"); exit (0); +#else + printf ("ns32k-encore-bsd\n"); exit (0); +#endif +#endif +#endif + +#if defined (__386BSD__) + printf ("i386-pc-bsd\n"); exit (0); +#endif + +#if defined (sequent) +#if defined (i386) + printf ("i386-sequent-dynix\n"); exit (0); +#endif +#if defined (ns32000) + printf ("ns32k-sequent-dynix\n"); exit (0); +#endif +#endif + +#if defined (_SEQUENT_) + struct utsname un; + + uname(&un); + + if (strncmp(un.version, "V2", 2) == 0) { + printf ("i386-sequent-ptx2\n"); exit (0); + } + if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ + printf ("i386-sequent-ptx1\n"); exit (0); + } + printf ("i386-sequent-ptx\n"); exit (0); + +#endif + +#if defined (vax) +# if !defined (ultrix) +# include +# if defined (BSD) +# if BSD == 43 + printf ("vax-dec-bsd4.3\n"); exit (0); +# else +# if BSD == 199006 + printf ("vax-dec-bsd4.3reno\n"); exit (0); +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# endif +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# else + printf ("vax-dec-ultrix\n"); exit (0); +# endif +#endif + +#if defined (alliant) && defined (i860) + printf ("i860-alliant-bsd\n"); exit (0); +#endif + + exit (1); +} +EOF + +$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && $dummy && exit 0 + +# Apollos put the system type in the environment. + +test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; } + +# Convex versions that predate uname can use getsysinfo(1) + +if [ -x /usr/convex/getsysinfo ] +then + case `getsysinfo -f cpu_type` in + c1*) + echo c1-convex-bsd + exit 0 ;; + c2*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit 0 ;; + c34*) + echo c34-convex-bsd + exit 0 ;; + c38*) + echo c38-convex-bsd + exit 0 ;; + c4*) + echo c4-convex-bsd + exit 0 ;; + esac +fi + +cat >&2 < in order to provide the needed +information to handle your system. + +config.guess timestamp = $timestamp + +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null` + +hostinfo = `(hostinfo) 2>/dev/null` +/bin/universe = `(/bin/universe) 2>/dev/null` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` +/bin/arch = `(/bin/arch) 2>/dev/null` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` + +UNAME_MACHINE = ${UNAME_MACHINE} +UNAME_RELEASE = ${UNAME_RELEASE} +UNAME_SYSTEM = ${UNAME_SYSTEM} +UNAME_VERSION = ${UNAME_VERSION} +EOF + +exit 1 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/config.h.in b/config.h.in new file mode 100755 index 0000000..558ea81 --- /dev/null +++ b/config.h.in @@ -0,0 +1,44 @@ +/* config.h.in. Generated from configure.ac by autoheader. */ + +/* "" */ +#undef MY_BUILD_CPU + +/* "" */ +#undef MY_BUILD_OS + +/* "" */ +#undef MY_BUILD_VENDOR + +/* "" */ +#undef MY_GNUNAME + +/* "" */ +#undef MY_UNAME + +/* Name of package */ +#undef PACKAGE + +/* Define to the address where bug reports for this package should be sent. */ +#undef PACKAGE_BUGREPORT + +/* Define to the full name of this package. */ +#undef PACKAGE_NAME + +/* Define to the full name and version of this package. */ +#undef PACKAGE_STRING + +/* Define to the one symbol short name of this package. */ +#undef PACKAGE_TARNAME + +/* Define to the version of this package. */ +#undef PACKAGE_VERSION + +/* Version number of package */ +#undef VERSION + +/* Define to 1 if on AIX 3. + System headers sometimes define this. + We just want to avoid a redefinition error message. */ +#ifndef _ALL_SOURCE +# undef _ALL_SOURCE +#endif diff --git a/config.sub b/config.sub new file mode 100755 index 0000000..c884ad4 --- /dev/null +++ b/config.sub @@ -0,0 +1,1563 @@ +#! /bin/sh +# Configuration validation subroutine script. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. + +timestamp='2005-02-10' + +# 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 +# (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, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, +# Boston, MA 02111-1307, USA. + +# 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. + +# Please send patches to . Submit a context +# diff and a properly formatted ChangeLog entry. +# +# Configuration subroutine to validate and canonicalize a configuration type. +# Supply the specified configuration type as an argument. +# If it is invalid, we print an error message on stderr and exit with code 1. +# Otherwise, we print the canonical config type on stdout and succeed. + +# This file is supposed to be the same for all GNU packages +# and recognize all the CPU types, system types and aliases +# that are meaningful with *any* GNU software. +# Each package is responsible for reporting which valid configurations +# it does not support. The user should be able to distinguish +# a failure to support a valid configuration from a meaningless +# configuration. + +# The goal of this file is to map all the various variations of a given +# machine specification into a single specification in the form: +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or in some cases, the newer four-part form: +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM +# It is wrong to echo any other type of specification. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] CPU-MFR-OPSYS + $0 [OPTION] ALIAS + +Canonicalize a configuration name. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.sub ($timestamp) + +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 +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." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit 0 ;; + --version | -v ) + echo "$version" ; exit 0 ;; + --help | --h* | -h ) + echo "$usage"; exit 0 ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" + exit 1 ;; + + *local*) + # First pass through any local machine types. + echo $1 + exit 0;; + + * ) + break ;; + esac +done + +case $# in + 0) echo "$me: missing argument$help" >&2 + exit 1;; + 1) ;; + *) echo "$me: too many arguments$help" >&2 + exit 1;; +esac + +# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). +# Here we must recognize all the valid KERNEL-OS combinations. +maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` +case $maybe_os in + nto-qnx* | linux-gnu* | linux-dietlibc | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | \ + kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*) + os=-$maybe_os + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` + ;; + *) + basic_machine=`echo $1 | sed 's/-[^-]*$//'` + if [ $basic_machine != $1 ] + then os=`echo $1 | sed 's/.*-/-/'` + else os=; fi + ;; +esac + +### Let's recognize common machines as not being operating systems so +### that things like config.sub decstation-3100 work. We also +### recognize some manufacturers as not being operating systems, so we +### can provide default operating systems below. +case $os in + -sun*os*) + # Prevent following clause from handling this invalid input. + ;; + -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ + -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ + -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ + -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) + os= + basic_machine=$1 + ;; + -sim | -cisco | -oki | -wec | -winbond) + os= + basic_machine=$1 + ;; + -scout) + ;; + -wrs) + os=-vxworks + basic_machine=$1 + ;; + -chorusos*) + os=-chorusos + basic_machine=$1 + ;; + -chorusrdb) + os=-chorusrdb + basic_machine=$1 + ;; + -hiux*) + os=-hiuxwe2 + ;; + -sco5) + os=-sco3.2v5 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco4) + os=-sco3.2v4 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2.[4-9]*) + os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2v[4-9]*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco*) + os=-sco3.2v2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -udk*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -isc) + os=-isc2.2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -clix*) + basic_machine=clipper-intergraph + ;; + -isc*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -lynx*) + os=-lynxos + ;; + -ptx*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` + ;; + -windowsnt*) + os=`echo $os | sed -e 's/windowsnt/winnt/'` + ;; + -psos*) + os=-psos + ;; + -mint | -mint[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; +esac + +# Decode aliases for certain CPU-COMPANY combinations. +case $basic_machine in + # Recognize the basic CPU types without company name. + # Some are omitted here because they have special meanings below. + 1750a | 580 \ + | a29k \ + | 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 \ + | c4x | clipper \ + | d10v | d30v | dlx | dsp16xx \ + | fr30 | frv \ + | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ + | i370 | i860 | i960 | ia64 \ + | ip2k | iq2000 \ + | m32r | m32rle | m68000 | m68k | m88k | maxq | mcore \ + | mips | mipsbe | mipseb | mipsel | mipsle \ + | mips16 \ + | mips64 | mips64el \ + | mips64vr | mips64vrel \ + | mips64orion | mips64orionel \ + | mips64vr4100 | mips64vr4100el \ + | mips64vr4300 | mips64vr4300el \ + | mips64vr5000 | mips64vr5000el \ + | mipsisa32 | mipsisa32el \ + | mipsisa32r2 | mipsisa32r2el \ + | mipsisa64 | mipsisa64el \ + | mipsisa64r2 | mipsisa64r2el \ + | mipsisa64sb1 | mipsisa64sb1el \ + | mipsisa64sr71k | mipsisa64sr71kel \ + | mipstx39 | mipstx39el \ + | mn10200 | mn10300 \ + | msp430 \ + | ns16k | ns32k \ + | openrisc | or32 \ + | pdp10 | pdp11 | pj | pjl \ + | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ + | pyramid \ + | sh | sh[1234] | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \ + | sh64 | sh64le \ + | sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv8 | sparcv9 | sparcv9b \ + | strongarm \ + | tahoe | thumb | tic4x | tic80 | tron \ + | v850 | v850e \ + | we32k \ + | x86 | xscale | xscalee[bl] | xstormy16 | xtensa \ + | z8k) + basic_machine=$basic_machine-unknown + ;; + m6811 | m68hc11 | m6812 | m68hc12) + # Motorola 68HC11/12. + basic_machine=$basic_machine-unknown + os=-none + ;; + m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) + ;; + + # We use `pc' rather than `unknown' + # because (1) that's what they normally are, and + # (2) the word "unknown" tends to confuse beginning users. + i*86 | x86_64) + basic_machine=$basic_machine-pc + ;; + # Object if more than one company name word. + *-*-*) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; + # Recognize the basic CPU types with company name. + 580-* \ + | a29k-* \ + | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ + | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ + | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ + | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ + | avr-* \ + | bs2000-* \ + | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ + | clipper-* | craynv-* | cydra-* \ + | d10v-* | d30v-* | dlx-* \ + | elxsi-* \ + | f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \ + | h8300-* | h8500-* \ + | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ + | i*86-* | i860-* | i960-* | ia64-* \ + | ip2k-* | iq2000-* \ + | m32r-* | m32rle-* \ + | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ + | m88110-* | m88k-* | maxq-* | mcore-* \ + | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ + | mips16-* \ + | mips64-* | mips64el-* \ + | mips64vr-* | mips64vrel-* \ + | mips64orion-* | mips64orionel-* \ + | mips64vr4100-* | mips64vr4100el-* \ + | mips64vr4300-* | mips64vr4300el-* \ + | mips64vr5000-* | mips64vr5000el-* \ + | mipsisa32-* | mipsisa32el-* \ + | mipsisa32r2-* | mipsisa32r2el-* \ + | mipsisa64-* | mipsisa64el-* \ + | mipsisa64r2-* | mipsisa64r2el-* \ + | mipsisa64sb1-* | mipsisa64sb1el-* \ + | mipsisa64sr71k-* | mipsisa64sr71kel-* \ + | mipstx39-* | mipstx39el-* \ + | mmix-* \ + | msp430-* \ + | none-* | np1-* | ns16k-* | ns32k-* \ + | orion-* \ + | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ + | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ + | pyramid-* \ + | romp-* | rs6000-* \ + | sh-* | sh[1234]-* | sh[23]e-* | sh[34]eb-* | shbe-* \ + | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ + | sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \ + | sparcv8-* | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \ + | tahoe-* | thumb-* \ + | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ + | tron-* \ + | v850-* | v850e-* | vax-* \ + | we32k-* \ + | x86-* | x86_64-* | xps100-* | xscale-* | xscalee[bl]-* \ + | xstormy16-* | xtensa-* \ + | ymp-* \ + | z8k-*) + ;; + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. + 386bsd) + basic_machine=i386-unknown + os=-bsd + ;; + 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) + basic_machine=m68000-att + ;; + 3b*) + basic_machine=we32k-att + ;; + a29khif) + basic_machine=a29k-amd + os=-udi + ;; + abacus) + basic_machine=abacus-unknown + ;; + adobe68k) + basic_machine=m68010-adobe + os=-scout + ;; + alliant | fx80) + basic_machine=fx80-alliant + ;; + altos | altos3068) + basic_machine=m68k-altos + ;; + am29k) + basic_machine=a29k-none + os=-bsd + ;; + amd64) + basic_machine=x86_64-pc + ;; + amd64-*) + basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + amdahl) + basic_machine=580-amdahl + os=-sysv + ;; + amiga | amiga-*) + basic_machine=m68k-unknown + ;; + amigaos | amigados) + basic_machine=m68k-unknown + os=-amigaos + ;; + amigaunix | amix) + basic_machine=m68k-unknown + os=-sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + os=-sysv + ;; + apollo68bsd) + basic_machine=m68k-apollo + os=-bsd + ;; + aux) + basic_machine=m68k-apple + os=-aux + ;; + balance) + basic_machine=ns32k-sequent + os=-dynix + ;; + c90) + basic_machine=c90-cray + os=-unicos + ;; + convex-c1) + basic_machine=c1-convex + os=-bsd + ;; + convex-c2) + basic_machine=c2-convex + os=-bsd + ;; + convex-c32) + basic_machine=c32-convex + os=-bsd + ;; + convex-c34) + basic_machine=c34-convex + os=-bsd + ;; + convex-c38) + basic_machine=c38-convex + os=-bsd + ;; + cray | j90) + basic_machine=j90-cray + os=-unicos + ;; + craynv) + basic_machine=craynv-cray + os=-unicosmp + ;; + cr16c) + basic_machine=cr16c-unknown + os=-elf + ;; + crds | unos) + basic_machine=m68k-crds + ;; + crisv32 | crisv32-* | etraxfs*) + basic_machine=crisv32-axis + ;; + cris | cris-* | etrax*) + basic_machine=cris-axis + ;; + crx) + basic_machine=crx-unknown + os=-elf + ;; + da30 | da30-*) + basic_machine=m68k-da30 + ;; + decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) + basic_machine=mips-dec + ;; + decsystem10* | dec10*) + basic_machine=pdp10-dec + os=-tops10 + ;; + decsystem20* | dec20*) + basic_machine=pdp10-dec + os=-tops20 + ;; + delta | 3300 | motorola-3300 | motorola-delta \ + | 3300-motorola | delta-motorola) + basic_machine=m68k-motorola + ;; + delta88) + basic_machine=m88k-motorola + os=-sysv3 + ;; + djgpp) + basic_machine=i586-pc + os=-msdosdjgpp + ;; + dpx20 | dpx20-*) + basic_machine=rs6000-bull + os=-bosx + ;; + dpx2* | dpx2*-bull) + basic_machine=m68k-bull + os=-sysv3 + ;; + ebmon29k) + basic_machine=a29k-amd + os=-ebmon + ;; + elxsi) + basic_machine=elxsi-elxsi + os=-bsd + ;; + encore | umax | mmax) + basic_machine=ns32k-encore + ;; + es1800 | OSE68k | ose68k | ose | OSE) + basic_machine=m68k-ericsson + os=-ose + ;; + fx2800) + basic_machine=i860-alliant + ;; + genix) + basic_machine=ns32k-ns + ;; + gmicro) + basic_machine=tron-gmicro + os=-sysv + ;; + go32) + basic_machine=i386-pc + os=-go32 + ;; + h3050r* | hiux*) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + h8300hms) + basic_machine=h8300-hitachi + os=-hms + ;; + h8300xray) + basic_machine=h8300-hitachi + os=-xray + ;; + h8500hms) + basic_machine=h8500-hitachi + os=-hms + ;; + harris) + basic_machine=m88k-harris + os=-sysv3 + ;; + hp300-*) + basic_machine=m68k-hp + ;; + hp300bsd) + basic_machine=m68k-hp + os=-bsd + ;; + hp300hpux) + basic_machine=m68k-hp + os=-hpux + ;; + hp3k9[0-9][0-9] | hp9[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k2[0-9][0-9] | hp9k31[0-9]) + basic_machine=m68000-hp + ;; + hp9k3[2-9][0-9]) + basic_machine=m68k-hp + ;; + hp9k6[0-9][0-9] | hp6[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k7[0-79][0-9] | hp7[0-79][0-9]) + basic_machine=hppa1.1-hp + ;; + hp9k78[0-9] | hp78[0-9]) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][13679] | hp8[0-9][13679]) + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][0-9] | hp8[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hppa-next) + os=-nextstep3 + ;; + hppaosf) + basic_machine=hppa1.1-hp + os=-osf + ;; + hppro) + basic_machine=hppa1.1-hp + os=-proelf + ;; + 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 + ;; + i*86v4*) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv4 + ;; + i*86v) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv + ;; + i*86sol2) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-solaris2 + ;; + i386mach) + basic_machine=i386-mach + os=-mach + ;; + i386-vsta | vsta) + basic_machine=i386-unknown + os=-vsta + ;; + iris | iris4d) + basic_machine=mips-sgi + case $os in + -irix*) + ;; + *) + os=-irix4 + ;; + esac + ;; + isi68 | isi) + basic_machine=m68k-isi + os=-sysv + ;; + m88k-omron*) + basic_machine=m88k-omron + ;; + magnum | m3230) + basic_machine=mips-mips + os=-sysv + ;; + merlin) + basic_machine=ns32k-utek + os=-sysv + ;; + mingw32) + basic_machine=i386-pc + os=-mingw32 + ;; + miniframe) + basic_machine=m68000-convergent + ;; + *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; + mips3*-*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` + ;; + mips3*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown + ;; + monitor) + basic_machine=m68k-rom68k + os=-coff + ;; + morphos) + basic_machine=powerpc-unknown + os=-morphos + ;; + msdos) + basic_machine=i386-pc + os=-msdos + ;; + mvs) + basic_machine=i370-ibm + os=-mvs + ;; + ncr3000) + basic_machine=i486-ncr + os=-sysv4 + ;; + netbsd386) + basic_machine=i386-unknown + os=-netbsd + ;; + netwinder) + basic_machine=armv4l-rebel + os=-linux + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony + os=-newsos + ;; + news1000) + basic_machine=m68030-sony + os=-newsos + ;; + news-3600 | risc-news) + basic_machine=mips-sony + os=-newsos + ;; + necv70) + basic_machine=v70-nec + os=-sysv + ;; + next | m*-next ) + basic_machine=m68k-next + case $os in + -nextstep* ) + ;; + -ns2*) + os=-nextstep2 + ;; + *) + os=-nextstep3 + ;; + esac + ;; + nh3000) + basic_machine=m68k-harris + os=-cxux + ;; + nh[45]000) + basic_machine=m88k-harris + os=-cxux + ;; + nindy960) + basic_machine=i960-intel + os=-nindy + ;; + mon960) + basic_machine=i960-intel + os=-mon960 + ;; + nonstopux) + basic_machine=mips-compaq + os=-nonstopux + ;; + np1) + basic_machine=np1-gould + ;; + nsr-tandem) + basic_machine=nsr-tandem + ;; + op50n-* | op60c-*) + basic_machine=hppa1.1-oki + os=-proelf + ;; + or32 | or32-*) + basic_machine=or32-unknown + os=-coff + ;; + os400) + basic_machine=powerpc-ibm + os=-os400 + ;; + OSE68000 | ose68000) + basic_machine=m68000-ericsson + os=-ose + ;; + os68k) + basic_machine=m68k-none + os=-os68k + ;; + pa-hitachi) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + paragon) + basic_machine=i860-intel + os=-osf + ;; + pbd) + basic_machine=sparc-tti + ;; + pbb) + basic_machine=m68k-tti + ;; + pc532 | pc532-*) + basic_machine=ns32k-pc532 + ;; + pentium | p5 | k5 | k6 | nexgen | viac3) + basic_machine=i586-pc + ;; + pentiumpro | p6 | 6x86 | athlon | athlon_*) + basic_machine=i686-pc + ;; + pentiumii | pentium2 | pentiumiii | pentium3) + basic_machine=i686-pc + ;; + pentium4) + basic_machine=i786-pc + ;; + pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) + basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumpro-* | p6-* | 6x86-* | athlon-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentium4-*) + basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pn) + basic_machine=pn-gould + ;; + power) basic_machine=power-ibm + ;; + ppc) basic_machine=powerpc-unknown + ;; + ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppcle | powerpclittle | ppc-le | powerpc-little) + basic_machine=powerpcle-unknown + ;; + ppcle-* | powerpclittle-*) + basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64) basic_machine=powerpc64-unknown + ;; + ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64le | powerpc64little | ppc64-le | powerpc64-little) + basic_machine=powerpc64le-unknown + ;; + ppc64le-* | powerpc64little-*) + basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ps2) + basic_machine=i386-ibm + ;; + pw32) + basic_machine=i586-unknown + os=-pw32 + ;; + rom68k) + basic_machine=m68k-rom68k + os=-coff + ;; + rm[46]00) + basic_machine=mips-siemens + ;; + rtpc | rtpc-*) + basic_machine=romp-ibm + ;; + s390 | s390-*) + basic_machine=s390-ibm + ;; + s390x | s390x-*) + basic_machine=s390x-ibm + ;; + sa29200) + basic_machine=a29k-amd + os=-udi + ;; + sb1) + basic_machine=mipsisa64sb1-unknown + ;; + sb1el) + basic_machine=mipsisa64sb1el-unknown + ;; + sei) + basic_machine=mips-sei + os=-seiux + ;; + sequent) + basic_machine=i386-sequent + ;; + sh) + basic_machine=sh-hitachi + os=-hms + ;; + sh64) + basic_machine=sh64-unknown + ;; + sparclite-wrs | simso-wrs) + basic_machine=sparclite-wrs + os=-vxworks + ;; + sps7) + basic_machine=m68k-bull + os=-sysv2 + ;; + spur) + basic_machine=spur-unknown + ;; + st2000) + basic_machine=m68k-tandem + ;; + stratus) + basic_machine=i860-stratus + os=-sysv4 + ;; + sun2) + basic_machine=m68000-sun + ;; + sun2os3) + basic_machine=m68000-sun + os=-sunos3 + ;; + sun2os4) + basic_machine=m68000-sun + os=-sunos4 + ;; + sun3os3) + basic_machine=m68k-sun + os=-sunos3 + ;; + sun3os4) + basic_machine=m68k-sun + os=-sunos4 + ;; + sun4os3) + basic_machine=sparc-sun + os=-sunos3 + ;; + sun4os4) + basic_machine=sparc-sun + os=-sunos4 + ;; + sun4sol2) + basic_machine=sparc-sun + os=-solaris2 + ;; + sun3 | sun3-*) + basic_machine=m68k-sun + ;; + sun4) + basic_machine=sparc-sun + ;; + sun386 | sun386i | roadrunner) + basic_machine=i386-sun + ;; + sv1) + basic_machine=sv1-cray + os=-unicos + ;; + symmetry) + basic_machine=i386-sequent + os=-dynix + ;; + t3e) + basic_machine=alphaev5-cray + os=-unicos + ;; + t90) + basic_machine=t90-cray + os=-unicos + ;; + tic54x | c54x*) + basic_machine=tic54x-unknown + os=-coff + ;; + tic55x | c55x*) + basic_machine=tic55x-unknown + os=-coff + ;; + tic6x | c6x*) + basic_machine=tic6x-unknown + os=-coff + ;; + tx39) + basic_machine=mipstx39-unknown + ;; + tx39el) + basic_machine=mipstx39el-unknown + ;; + toad1) + basic_machine=pdp10-xkl + os=-tops20 + ;; + tower | tower-32) + basic_machine=m68k-ncr + ;; + tpf) + basic_machine=s390x-ibm + os=-tpf + ;; + udi29k) + basic_machine=a29k-amd + os=-udi + ;; + ultra3) + basic_machine=a29k-nyu + os=-sym1 + ;; + v810 | necv810) + basic_machine=v810-nec + os=-none + ;; + vaxv) + basic_machine=vax-dec + os=-sysv + ;; + vms) + basic_machine=vax-dec + os=-vms + ;; + vpp*|vx|vx-*) + basic_machine=f301-fujitsu + ;; + vxworks960) + basic_machine=i960-wrs + os=-vxworks + ;; + vxworks68) + basic_machine=m68k-wrs + os=-vxworks + ;; + vxworks29k) + basic_machine=a29k-wrs + os=-vxworks + ;; + w65*) + basic_machine=w65-wdc + os=-none + ;; + w89k-*) + basic_machine=hppa1.1-winbond + os=-proelf + ;; + xbox) + basic_machine=i686-pc + os=-mingw32 + ;; + xps | xps100) + basic_machine=xps100-honeywell + ;; + ymp) + basic_machine=ymp-cray + os=-unicos + ;; + z8k-*-coff) + basic_machine=z8k-unknown + os=-sim + ;; + none) + basic_machine=none-none + os=-none + ;; + +# Here we handle the default manufacturer of certain CPU types. It is in +# some cases the only manufacturer, in others, it is the most popular. + w89k) + basic_machine=hppa1.1-winbond + ;; + op50n) + basic_machine=hppa1.1-oki + ;; + op60c) + basic_machine=hppa1.1-oki + ;; + romp) + basic_machine=romp-ibm + ;; + mmix) + basic_machine=mmix-knuth + ;; + rs6000) + basic_machine=rs6000-ibm + ;; + vax) + basic_machine=vax-dec + ;; + pdp10) + # there are many clones, so DEC is not a safe bet + basic_machine=pdp10-unknown + ;; + pdp11) + basic_machine=pdp11-dec + ;; + we32k) + basic_machine=we32k-att + ;; + sh3 | sh4 | sh[34]eb | sh[1234]le | sh[23]ele) + basic_machine=sh-unknown + ;; + sh64) + basic_machine=sh64-unknown + ;; + sparc | sparcv8 | sparcv9 | sparcv9b) + basic_machine=sparc-sun + ;; + cydra) + basic_machine=cydra-cydrome + ;; + orion) + basic_machine=orion-highlevel + ;; + orion105) + basic_machine=clipper-highlevel + ;; + mac | mpw | mac-mpw) + basic_machine=m68k-apple + ;; + pmac | pmac-mpw) + basic_machine=powerpc-apple + ;; + *-unknown) + # Make sure to match an already-canonicalized machine name. + ;; + *) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; +esac + +# Here we canonicalize certain aliases for manufacturers. +case $basic_machine in + *-digital*) + basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` + ;; + *-commodore*) + basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` + ;; + *) + ;; +esac + +# Decode manufacturer-specific aliases for certain operating systems. + +if [ x"$os" != x"" ] +then +case $os in + # First match some system type aliases + # that might get confused with valid system types. + # -solaris* is a basic system type, with this one exception. + -solaris1 | -solaris1.*) + os=`echo $os | sed -e 's|solaris1|sunos4|'` + ;; + -solaris) + os=-solaris2 + ;; + -svr4*) + os=-sysv4 + ;; + -unixware*) + os=-sysv4.2uw + ;; + -gnu/linux*) + os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` + ;; + # First accept the basic system types. + # The portable systems comes first. + # Each alternative MUST END IN A *, to match a version number. + # -sysv* is not here because it comes later, after sysvr4. + -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ + | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ + | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ + | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ + | -aos* \ + | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ + | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ + | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* | -openbsd* \ + | -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* \ + | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ + | -mingw32* | -linux* | -linux-uclibc* | -uxpv* | -beos* | -mpeix* | -udk* \ + | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ + | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ + | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ + | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ + | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ + | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly*) + # Remember, each alternative MUST END IN *, to match a version number. + ;; + -qnx*) + case $basic_machine in + x86-* | i*86-*) + ;; + *) + os=-nto$os + ;; + esac + ;; + -nto-qnx*) + ;; + -nto*) + os=`echo $os | sed -e 's|nto|nto-qnx|'` + ;; + -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ + | -windows* | -osx | -abug | -netware* | -os9* | -beos* \ + | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) + ;; + -mac*) + os=`echo $os | sed -e 's|mac|macos|'` + ;; + -linux-dietlibc) + os=-linux-dietlibc + ;; + -sunos5*) + os=`echo $os | sed -e 's|sunos5|solaris2|'` + ;; + -sunos6*) + os=`echo $os | sed -e 's|sunos6|solaris3|'` + ;; + -opened*) + os=-openedition + ;; + -os400*) + os=-os400 + ;; + -wince*) + os=-wince + ;; + -osfrose*) + os=-osfrose + ;; + -osf*) + os=-osf + ;; + -utek*) + os=-bsd + ;; + -dynix*) + os=-bsd + ;; + -acis*) + os=-aos + ;; + -atheos*) + os=-atheos + ;; + -syllable*) + os=-syllable + ;; + -386bsd) + os=-bsd + ;; + -ctix* | -uts*) + os=-sysv + ;; + -nova*) + os=-rtmk-nova + ;; + -ns2 ) + os=-nextstep2 + ;; + -nsk*) + os=-nsk + ;; + # Preserve the version number of sinix5. + -sinix5.*) + os=`echo $os | sed -e 's|sinix|sysv|'` + ;; + -sinix*) + os=-sysv4 + ;; + -tpf*) + os=-tpf + ;; + -triton*) + os=-sysv3 + ;; + -oss*) + os=-sysv3 + ;; + -svr4) + os=-sysv4 + ;; + -svr3) + os=-sysv3 + ;; + -sysvr4) + os=-sysv4 + ;; + # This must come after -sysvr4. + -sysv*) + ;; + -ose*) + os=-ose + ;; + -es1800*) + os=-ose + ;; + -xenix) + os=-xenix + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + os=-mint + ;; + -aros*) + os=-aros + ;; + -kaos*) + os=-kaos + ;; + -zvmoe) + os=-zvmoe + ;; + -none) + ;; + *) + # Get rid of the `-' at the beginning of $os. + os=`echo $os | sed 's/[^-]*-//'` + echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 + exit 1 + ;; +esac +else + +# Here we handle the default operating systems that come with various machines. +# The value should be what the vendor currently ships out the door with their +# machine or put another way, the most popular os provided with the machine. + +# Note that if you're going to try to match "-MANUFACTURER" here (say, +# "-sun"), then you have to tell the case statement up towards the top +# that MANUFACTURER isn't an operating system. Otherwise, code above +# will signal an error saying that MANUFACTURER isn't an operating +# system, and we'll never get to this point. + +case $basic_machine in + *-acorn) + os=-riscix1.2 + ;; + arm*-rebel) + os=-linux + ;; + arm*-semi) + os=-aout + ;; + c4x-* | tic4x-*) + os=-coff + ;; + # This must come before the *-dec entry. + pdp10-*) + os=-tops20 + ;; + pdp11-*) + os=-none + ;; + *-dec | vax-*) + os=-ultrix4.2 + ;; + m68*-apollo) + os=-domain + ;; + i386-sun) + os=-sunos4.0.2 + ;; + m68000-sun) + os=-sunos3 + # This also exists in the configure program, but was not the + # default. + # os=-sunos4 + ;; + m68*-cisco) + os=-aout + ;; + mips*-cisco) + os=-elf + ;; + mips*-*) + os=-elf + ;; + or32-*) + os=-coff + ;; + *-tti) # must be before sparc entry or we get the wrong os. + os=-sysv3 + ;; + sparc-* | *-sun) + os=-sunos4.1.1 + ;; + *-be) + os=-beos + ;; + *-ibm) + os=-aix + ;; + *-knuth) + os=-mmixware + ;; + *-wec) + os=-proelf + ;; + *-winbond) + os=-proelf + ;; + *-oki) + os=-proelf + ;; + *-hp) + os=-hpux + ;; + *-hitachi) + os=-hiux + ;; + i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) + os=-sysv + ;; + *-cbm) + os=-amigaos + ;; + *-dg) + os=-dgux + ;; + *-dolphin) + os=-sysv3 + ;; + m68k-ccur) + os=-rtu + ;; + m88k-omron*) + os=-luna + ;; + *-next ) + os=-nextstep + ;; + *-sequent) + os=-ptx + ;; + *-crds) + os=-unos + ;; + *-ns) + os=-genix + ;; + i370-*) + os=-mvs + ;; + *-next) + os=-nextstep3 + ;; + *-gould) + os=-sysv + ;; + *-highlevel) + os=-bsd + ;; + *-encore) + os=-bsd + ;; + *-sgi) + os=-irix + ;; + *-siemens) + os=-sysv4 + ;; + *-masscomp) + os=-rtu + ;; + f30[01]-fujitsu | f700-fujitsu) + os=-uxpv + ;; + *-rom68k) + os=-coff + ;; + *-*bug) + os=-coff + ;; + *-apple) + os=-macos + ;; + *-atari*) + os=-mint + ;; + *) + os=-none + ;; +esac +fi + +# Here we handle the case where we know the os, and the CPU type, but not the +# manufacturer. We pick the logical manufacturer. +vendor=unknown +case $basic_machine in + *-unknown) + case $os in + -riscix*) + vendor=acorn + ;; + -sunos*) + vendor=sun + ;; + -aix*) + vendor=ibm + ;; + -beos*) + vendor=be + ;; + -hpux*) + vendor=hp + ;; + -mpeix*) + vendor=hp + ;; + -hiux*) + vendor=hitachi + ;; + -unos*) + vendor=crds + ;; + -dgux*) + vendor=dg + ;; + -luna*) + vendor=omron + ;; + -genix*) + vendor=ns + ;; + -mvs* | -opened*) + vendor=ibm + ;; + -os400*) + vendor=ibm + ;; + -ptx*) + vendor=sequent + ;; + -tpf*) + vendor=ibm + ;; + -vxsim* | -vxworks* | -windiss*) + vendor=wrs + ;; + -aux*) + vendor=apple + ;; + -hms*) + vendor=hitachi + ;; + -mpw* | -macos*) + vendor=apple + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + vendor=atari + ;; + -vos*) + vendor=stratus + ;; + esac + basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` + ;; +esac + +echo $basic_machine$os +exit 0 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/configure b/configure new file mode 100755 index 0000000..ce8454a --- /dev/null +++ b/configure @@ -0,0 +1,6703 @@ +#! /bin/sh +# Guess values for system-dependent variables and create Makefiles. +# Generated by GNU Autoconf 2.59 for H5Part Ver.1.0. +# +# Report bugs to . +# +# Copyright (C) 2003 Free Software Foundation, Inc. +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. +## --------------------- ## +## M4sh Initialization. ## +## --------------------- ## + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix +fi +DUALCASE=1; export DUALCASE # for MKS sh + +# Support unset when possible. +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + + +# Work around bugs in pre-3.0 UWIN ksh. +$as_unset ENV MAIL MAILPATH +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +for as_var in \ + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ + LC_TELEPHONE LC_TIME +do + if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + $as_unset $as_var + fi +done + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + + +# Name of the executable. +as_me=`$as_basename "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)$' \| \ + . : '\(.\)' 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } + /^X\/\(\/\/\)$/{ s//\1/; q; } + /^X\/\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + + +# PATH needs CR, and LINENO needs CR and PATH. +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" || { + # Find who we are. Look in the path if we contain no path at all + # relative or not. + case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +done + + ;; + esac + # We did not find ourselves, most probably we were run as `sh COMMAND' + # in which case we are not to be found in the path. + if test "x$as_myself" = x; then + as_myself=$0 + fi + if test ! -f "$as_myself"; then + { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2 + { (exit 1); exit 1; }; } + fi + case $CONFIG_SHELL in + '') + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for as_base in sh bash ksh sh5; do + case $as_dir in + /*) + if ("$as_dir/$as_base" -c ' + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then + $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } + $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } + CONFIG_SHELL=$as_dir/$as_base + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$0" ${1+"$@"} + fi;; + esac + done +done +;; + esac + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a + # line-number line before each line; the second 'sed' does the real + # work. The second script uses 'N' to pair each line-number line + # with the numbered line, and appends trailing '-' during + # substitution so that $LINENO is not a special case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the + # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) + sed '=' <$as_myself | + sed ' + N + s,$,-, + : loop + s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, + t loop + s,-$,, + s,^['$as_cr_digits']*\n,, + ' >$as_me.lineno && + chmod +x $as_me.lineno || + { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 + { (exit 1); exit 1; }; } + + # 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 sensible to this). + . ./$as_me.lineno + # Exit status is that of the last command. + exit +} + + +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in + *c*,-n*) ECHO_N= ECHO_C=' +' ECHO_T=' ' ;; + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; + *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +esac + +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + # We could just check for DJGPP; but this test a) works b) is more generic + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). + if test -f conf$$.exe; then + # Don't use ln at all; we don't have any links + as_ln_s='cp -p' + else + as_ln_s='ln -s' + fi +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.file + +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_executable_p="test -f" + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +# IFS +# We need space, tab and new line, in precisely that order. +as_nl=' +' +IFS=" $as_nl" + +# CDPATH. +$as_unset CDPATH + + +# Name of the host. +# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +exec 6>&1 + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_config_libobj_dir=. +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= +SHELL=${CONFIG_SHELL-/bin/sh} + +# Maximum number of lines to put in a shell here document. +# This variable seems obsolete. It should probably be removed, and +# only ac_max_sed_lines should be used. +: ${ac_max_here_lines=38} + +# Identity of this package. +PACKAGE_NAME='H5Part' +PACKAGE_TARNAME='h5part' +PACKAGE_VERSION='Ver.1.0' +PACKAGE_STRING='H5Part Ver.1.0' +PACKAGE_BUGREPORT='vis@hpcrdm.lbl.gov' + +ac_default_prefix=`pwd`/build +ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CPP EGREP BAS_CC CXX CXXFLAGS ac_ct_CXX INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE RANLIB ac_ct_RANLIB FC FCFLAGS ac_ct_FC MPICC MPICXX MPIFC MPIROOT HDF5ROOT PHDF5ROOT MPIINC MPILIB MTARGET TTARGET SZLIB FFLAGS ADDFLAGS STDCXX H5P_LIB_LOC UNDERSCORE_H BUILD_TOOLS PYTHON_PATH PY_WRAPPER TOOLS_CXX TOOLS_H5PART_LIB TOOLS_HDFLIB LIBOBJS LTLIBOBJS' +ac_subst_files='' + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datadir='${prefix}/share' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +libdir='${exec_prefix}/lib' +includedir='${prefix}/include' +oldincludedir='/usr/include' +infodir='${prefix}/info' +mandir='${prefix}/man' + +ac_prev= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval "$ac_prev=\$ac_option" + ac_prev= + continue + fi + + ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case $ac_option in + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad | --data | --dat | --da) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ + | --da=*) + datadir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/-/_/g'` + eval "enable_$ac_feature=no" ;; + + -enable-* | --enable-*) + ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/-/_/g'` + case $ac_option in + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; + *) ac_optarg=yes ;; + esac + eval "enable_$ac_feature='$ac_optarg'" ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst \ + | --locals | --local | --loca | --loc | --lo) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* \ + | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo $ac_package| sed 's/-/_/g'` + case $ac_option in + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; + *) ac_optarg=yes ;; + esac + eval "with_$ac_package='$ac_optarg'" ;; + + -without-* | --without-*) + ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo $ac_package | sed 's/-/_/g'` + eval "with_$ac_package=no" ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) { echo "$as_me: error: unrecognized option: $ac_option +Try \`$0 --help' for more information." >&2 + { (exit 1); exit 1; }; } + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 + { (exit 1); exit 1; }; } + ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` + eval "$ac_envvar='$ac_optarg'" + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + { echo "$as_me: error: missing argument to $ac_option" >&2 + { (exit 1); exit 1; }; } +fi + +# Be sure to have absolute paths. +for ac_var in exec_prefix prefix +do + eval ac_val=$`echo $ac_var` + case $ac_val in + [\\/$]* | ?:[\\/]* | NONE | '' ) ;; + *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; };; + esac +done + +# Be sure to have absolute paths. +for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ + localstatedir libdir includedir oldincludedir infodir mandir +do + eval ac_val=$`echo $ac_var` + case $ac_val in + [\\/$]* | ?:[\\/]* ) ;; + *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; };; + esac +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + 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 +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then its parent. + ac_confdir=`(dirname "$0") 2>/dev/null || +$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$0" : 'X\(//\)[^/]' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$0" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r $srcdir/$ac_unique_file; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r $srcdir/$ac_unique_file; then + if test "$ac_srcdir_defaulted" = yes; then + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 + { (exit 1); exit 1; }; } + else + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 + { (exit 1); exit 1; }; } + fi +fi +(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null || + { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2 + { (exit 1); exit 1; }; } +srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` +ac_env_build_alias_set=${build_alias+set} +ac_env_build_alias_value=$build_alias +ac_cv_env_build_alias_set=${build_alias+set} +ac_cv_env_build_alias_value=$build_alias +ac_env_host_alias_set=${host_alias+set} +ac_env_host_alias_value=$host_alias +ac_cv_env_host_alias_set=${host_alias+set} +ac_cv_env_host_alias_value=$host_alias +ac_env_target_alias_set=${target_alias+set} +ac_env_target_alias_value=$target_alias +ac_cv_env_target_alias_set=${target_alias+set} +ac_cv_env_target_alias_value=$target_alias +ac_env_CC_set=${CC+set} +ac_env_CC_value=$CC +ac_cv_env_CC_set=${CC+set} +ac_cv_env_CC_value=$CC +ac_env_CFLAGS_set=${CFLAGS+set} +ac_env_CFLAGS_value=$CFLAGS +ac_cv_env_CFLAGS_set=${CFLAGS+set} +ac_cv_env_CFLAGS_value=$CFLAGS +ac_env_LDFLAGS_set=${LDFLAGS+set} +ac_env_LDFLAGS_value=$LDFLAGS +ac_cv_env_LDFLAGS_set=${LDFLAGS+set} +ac_cv_env_LDFLAGS_value=$LDFLAGS +ac_env_CPPFLAGS_set=${CPPFLAGS+set} +ac_env_CPPFLAGS_value=$CPPFLAGS +ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} +ac_cv_env_CPPFLAGS_value=$CPPFLAGS +ac_env_CPP_set=${CPP+set} +ac_env_CPP_value=$CPP +ac_cv_env_CPP_set=${CPP+set} +ac_cv_env_CPP_value=$CPP +ac_env_CXX_set=${CXX+set} +ac_env_CXX_value=$CXX +ac_cv_env_CXX_set=${CXX+set} +ac_cv_env_CXX_value=$CXX +ac_env_CXXFLAGS_set=${CXXFLAGS+set} +ac_env_CXXFLAGS_value=$CXXFLAGS +ac_cv_env_CXXFLAGS_set=${CXXFLAGS+set} +ac_cv_env_CXXFLAGS_value=$CXXFLAGS +ac_env_FC_set=${FC+set} +ac_env_FC_value=$FC +ac_cv_env_FC_set=${FC+set} +ac_cv_env_FC_value=$FC +ac_env_FCFLAGS_set=${FCFLAGS+set} +ac_env_FCFLAGS_value=$FCFLAGS +ac_cv_env_FCFLAGS_set=${FCFLAGS+set} +ac_cv_env_FCFLAGS_value=$FCFLAGS + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat <<_ACEOF +\`configure' configures H5Part Ver.1.0 to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print \`checking...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +_ACEOF + + cat <<_ACEOF +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [PREFIX] + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --datadir=DIR read-only architecture-independent data [PREFIX/share] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --infodir=DIR info documentation [PREFIX/info] + --mandir=DIR man documentation [PREFIX/man] +_ACEOF + + cat <<\_ACEOF + +Program names: + --program-prefix=PREFIX prepend PREFIX to installed program names + --program-suffix=SUFFIX append SUFFIX to installed program names + --program-transform-name=PROGRAM run sed PROGRAM on installed program names + +System types: + --build=BUILD configure for building on BUILD [guessed] + --host=HOST cross-compile to build programs to run on HOST [BUILD] +_ACEOF +fi + +if test -n "$ac_init_help"; then + case $ac_init_help in + short | recursive ) echo "Configuration of H5Part Ver.1.0:";; + esac + cat <<\_ACEOF + +Optional Features: + --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-64 Compile using 64-bit flags [default=no] + --enable-fortran Compile the Fortran interface [default=no] + --enable-parallel Compile the MPI/IO interface [default=no] + --enable-tools Compile h5part tools [default=no] + --enable-python Compile Python wrapper [default=no] + +Some influential environment variables: + CC C compiler command + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory + CPPFLAGS C/C++ preprocessor flags, e.g. -I if you have + headers in a nonstandard directory + CPP C preprocessor + CXX C++ compiler command + CXXFLAGS C++ compiler flags + FC Fortran compiler command + FCFLAGS Fortran compiler flags + +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 . +_ACEOF +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + ac_popdir=`pwd` + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d $ac_dir || continue + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac + +# Do not use `cd foo && pwd` to compute absolute paths, because +# the directories may not exist. +case `pwd` in +.) ac_abs_builddir="$ac_dir";; +*) + case "$ac_dir" in + .) ac_abs_builddir=`pwd`;; + [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; + *) ac_abs_builddir=`pwd`/"$ac_dir";; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_builddir=${ac_top_builddir}.;; +*) + case ${ac_top_builddir}. in + .) ac_abs_top_builddir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; + *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_srcdir=$ac_srcdir;; +*) + case $ac_srcdir in + .) ac_abs_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; + *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_srcdir=$ac_top_srcdir;; +*) + case $ac_top_srcdir in + .) ac_abs_top_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; + *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; + esac;; +esac + + cd $ac_dir + # Check for guested configure; otherwise get Cygnus style configure. + if test -f $ac_srcdir/configure.gnu; then + echo + $SHELL $ac_srcdir/configure.gnu --help=recursive + elif test -f $ac_srcdir/configure; then + echo + $SHELL $ac_srcdir/configure --help=recursive + elif test -f $ac_srcdir/configure.ac || + test -f $ac_srcdir/configure.in; then + echo + $ac_configure --help + else + echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi + cd $ac_popdir + done +fi + +test -n "$ac_init_help" && exit 0 +if $ac_init_version; then + cat <<\_ACEOF +H5Part configure Ver.1.0 +generated by GNU Autoconf 2.59 + +Copyright (C) 2003 Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit 0 +fi +exec 5>config.log +cat >&5 <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by H5Part $as_me Ver.1.0, which was +generated by GNU Autoconf 2.59. Invocation command line was + + $ $0 $@ + +_ACEOF +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +hostinfo = `(hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + echo "PATH: $as_dir" +done + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_sep= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) + ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; + 2) + ac_configure_args1="$ac_configure_args1 '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" + # Get rid of the leading space. + ac_sep=" " + ;; + esac + done +done +$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } +$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +# WARNING: Be sure not to use single quotes in there, as some shells, +# such as our DU 5.0 friend, will then `close' the trap. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + { + echo + + cat <<\_ASBOX +## ---------------- ## +## Cache variables. ## +## ---------------- ## +_ASBOX + echo + # The following way of writing the cache mishandles newlines in values, +{ + (set) 2>&1 | + case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in + *ac_space=\ *) + sed -n \ + "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" + ;; + *) + sed -n \ + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + ;; + esac; +} + echo + + cat <<\_ASBOX +## ----------------- ## +## Output variables. ## +## ----------------- ## +_ASBOX + echo + for ac_var in $ac_subst_vars + do + eval ac_val=$`echo $ac_var` + echo "$ac_var='"'"'$ac_val'"'"'" + done | sort + echo + + if test -n "$ac_subst_files"; then + cat <<\_ASBOX +## ------------- ## +## Output files. ## +## ------------- ## +_ASBOX + echo + for ac_var in $ac_subst_files + do + eval ac_val=$`echo $ac_var` + echo "$ac_var='"'"'$ac_val'"'"'" + done | sort + echo + fi + + if test -s confdefs.h; then + cat <<\_ASBOX +## ----------- ## +## confdefs.h. ## +## ----------- ## +_ASBOX + echo + sed "/^$/d" confdefs.h | sort + echo + fi + test "$ac_signal" != 0 && + echo "$as_me: caught signal $ac_signal" + echo "$as_me: exit $exit_status" + } >&5 + rm -f core *.core && + rm -rf conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status + ' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -rf conftest* confdefs.h +# AIX cpp loses on an empty file, so make sure it contains at least a newline. +echo >confdefs.h + +# Predefined preprocessor variables. + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_NAME "$PACKAGE_NAME" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_TARNAME "$PACKAGE_TARNAME" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_VERSION "$PACKAGE_VERSION" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_STRING "$PACKAGE_STRING" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" +_ACEOF + + +# Let the site file select an alternate cache file if it wants to. +# Prefer explicitly selected file to automatically selected ones. +if test -z "$CONFIG_SITE"; then + if test "x$prefix" != xNONE; then + CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" + else + CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" + fi +fi +for ac_site_file in $CONFIG_SITE; do + if test -r "$ac_site_file"; then + { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 +echo "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" + fi +done + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special + # files actually), so we avoid doing that. + if test -f "$cache_file"; then + { echo "$as_me:$LINENO: loading cache $cache_file" >&5 +echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . $cache_file;; + *) . ./$cache_file;; + esac + fi +else + { echo "$as_me:$LINENO: creating cache $cache_file" >&5 +echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in `(set) 2>&1 | + sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val="\$ac_cv_env_${ac_var}_value" + eval ac_new_val="\$ac_env_${ac_var}_value" + case $ac_old_set,$ac_new_set in + set,) + { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 +echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 +echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 +echo "$as_me: former value: $ac_old_val" >&2;} + { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 +echo "$as_me: current value: $ac_new_val" >&2;} + ac_cache_corrupted=: + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) + ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 +echo "$as_me: error: changes in the environment can compromise the build" >&2;} + { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 +echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} + { (exit 1); exit 1; }; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +# Ensure that a recent enough version of Autoconf is being used. +# If the version of Autoconf being used to create configure is earlier than version, +# print an error message to the standard error output and do not create configure. + + + +# should be called right after AC_INIT. +# configure scripts can create a C header file containing `#define' directives. +# The AC_CONFIG_HEADERS macro selects this kind of output. + ac_config_headers="$ac_config_headers config.h" + + + +################################################################################## +#################### A SIMPLE WORK AROUND TO USE ENV. VARS ####################### +################################################################################## + + +SAVE_CC=$CC +SAVE_CXX=$CXX +SAVE_FC=$FC +SAVE_MPICC=$MPICC +SAVE_MPICXX=$MPICXX +SAVE_MPIFC=$MPIFC +SAVE_MPILIB=$MPILIB +SAVE_MPIINC=$MPIINC +SAVE_CFLAGS=$CFLAGS +SAVE_FFLAGS=$FFLAGS +SAVE_MPIROOT=$MPIROOT +SAVE_HDF5ROOT=$HDF5ROOT +SAVE_PHDF5ROOT=$PHDF5ROOT +SAVE_PYTHON_PATH=$PYTHON_PATH +SAVE_LDFLAGS=$LDFLAGS + + +################################################################################## +################## PATH SERACH FUNCTION - to be used later... #################### +################################################################################## +# /*@@ +# @routine CCTK_Search +# @date Wed Jul 21 11:16:35 1999 +# @author Tom Goodale +# @desc +# Used to search for something in various directories +# @enddesc +#@@*/ + +PATH_Search() +{ + eval $1="" + if test $# -lt 4 ; then + h5part_basedir="" + else + h5part_basedir="$4/" + fi + for h5part_place in $2 + do + echo "Looking in $h5part_place ... $ac_c" #1>&6 + if test -r "$h5part_basedir$h5part_place/$3" ; then + echo "$ac_t""... Found" #1>&6 + eval $1="$h5part_place" + break + fi + if test -d "$h5part_basedir$h5part_place/$3" ; then + echo "$ac_t""... Found" #1>&6 + eval $1="$h5part_place" + break + fi + echo "$ac_t"" No" #1>&6 + done + + return +} + + + +################################################################################## +################ MISC SETTINGS INCLUDING C & C++ COMPILER SETTING ################ +################################################################################## +# Compute the canonical host-system type variable, host, and its three individual +# parts host_cpu, host_vendor, and host_os. +ac_aux_dir= +for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do + if test -f $ac_dir/install-sh; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install-sh -c" + break + elif test -f $ac_dir/install.sh; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install.sh -c" + break + elif test -f $ac_dir/shtool; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/shtool install -c" + break + fi +done +if test -z "$ac_aux_dir"; then + { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5 +echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;} + { (exit 1); exit 1; }; } +fi +ac_config_guess="$SHELL $ac_aux_dir/config.guess" +ac_config_sub="$SHELL $ac_aux_dir/config.sub" +ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. + +# Make sure we can run config.sub. +$ac_config_sub sun4 >/dev/null 2>&1 || + { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5 +echo "$as_me: error: cannot run $ac_config_sub" >&2;} + { (exit 1); exit 1; }; } + +echo "$as_me:$LINENO: checking build system type" >&5 +echo $ECHO_N "checking build system type... $ECHO_C" >&6 +if test "${ac_cv_build+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_build_alias=$build_alias +test -z "$ac_cv_build_alias" && + ac_cv_build_alias=`$ac_config_guess` +test -z "$ac_cv_build_alias" && + { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 +echo "$as_me: error: cannot guess build type; you must specify one" >&2;} + { (exit 1); exit 1; }; } +ac_cv_build=`$ac_config_sub $ac_cv_build_alias` || + { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5 +echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;} + { (exit 1); exit 1; }; } + +fi +echo "$as_me:$LINENO: result: $ac_cv_build" >&5 +echo "${ECHO_T}$ac_cv_build" >&6 +build=$ac_cv_build +build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + + +echo "$as_me:$LINENO: checking host system type" >&5 +echo $ECHO_N "checking host system type... $ECHO_C" >&6 +if test "${ac_cv_host+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_host_alias=$host_alias +test -z "$ac_cv_host_alias" && + ac_cv_host_alias=$ac_cv_build_alias +ac_cv_host=`$ac_config_sub $ac_cv_host_alias` || + { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5 +echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;} + { (exit 1); exit 1; }; } + +fi +echo "$as_me:$LINENO: result: $ac_cv_host" >&5 +echo "${ECHO_T}$ac_cv_host" >&6 +host=$ac_cv_host +host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + + + + +uname=`uname -s` +if test $uname = "AIX"; then + # Notify the user that configure is checking for a particular feature. + # This macro prints a message that starts with `checking ' and ends with `...' and no newline. + # It must be (?) followed by a call to AC_MSG_RESULT to print the result of the check and the newline. + echo "$as_me:$LINENO: checking if system is AIX" >&5 +echo $ECHO_N "checking if system is AIX... $ECHO_C" >&6 + + # AC_MSG_RESULT (result-description) + # Notify the user of the results of a check + echo "$as_me:$LINENO: result: OK" >&5 +echo "${ECHO_T}OK" >&6 + + # If on AIX, define _ALL_SOURCE. Allows the use of some BSD functions. + # Should be called before any macros that run the C compiler. + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + CC=$ac_ct_CC +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + CC=$ac_ct_CC +else + CC="$ac_cv_prog_CC" +fi + +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$ac_ct_CC" && break +done + + CC=$ac_ct_CC +fi + +fi + + +test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH +See \`config.log' for more details." >&5 +echo "$as_me: error: no acceptable C compiler found in \$PATH +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } + +# Provide some information about the compiler. +echo "$as_me:$LINENO:" \ + "checking for C compiler version" >&5 +ac_compiler=`set X $ac_compile; echo $2` +{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 + (eval $ac_compiler --version &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 + (eval $ac_compiler -v &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 + (eval $ac_compiler -V &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.exe b.out" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 +echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6 +ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` +if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 + (eval $ac_link_default) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # Find the output, starting from the most likely. This scheme is +# not robust to junk in `.', hence go to wildcards (a.*) only as a last +# resort. + +# Be careful to initialize this variable, since it used to be cached. +# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile. +ac_cv_exeext= +# b.out is created by i960 compilers. +for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) + ;; + conftest.$ac_ext ) + # This is the source file. + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + # FIXME: I believe we export ac_cv_exeext for Libtool, + # but it would be cool to find out if it's true. Does anybody + # maintain Libtool? --akim. + export ac_cv_exeext + break;; + * ) + break;; + esac +done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { echo "$as_me:$LINENO: error: C compiler cannot create executables +See \`config.log' for more details." >&5 +echo "$as_me: error: C compiler cannot create executables +See \`config.log' for more details." >&2;} + { (exit 77); exit 77; }; } +fi + +ac_exeext=$ac_cv_exeext +echo "$as_me:$LINENO: result: $ac_file" >&5 +echo "${ECHO_T}$ac_file" >&6 + +# Check the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +echo "$as_me:$LINENO: checking whether the C compiler works" >&5 +echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6 +# FIXME: These cross compiler hacks should be removed for Autoconf 3.0 +# If not cross compiling, check that we can run a simple program. +if test "$cross_compiling" != yes; then + if { ac_try='./$ac_file' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { echo "$as_me:$LINENO: error: cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } + fi + fi +fi +echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + +rm -f a.out a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +# Check the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 +echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 +echo "$as_me:$LINENO: result: $cross_compiling" >&5 +echo "${ECHO_T}$cross_compiling" >&6 + +echo "$as_me:$LINENO: checking for suffix of executables" >&5 +echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # If both `conftest.exe' and `conftest' are `present' (well, observable) +# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will +# work properly (i.e., refer to `conftest.exe'), while it won't with +# `rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + export ac_cv_exeext + break;; + * ) break;; + esac +done +else + { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +rm -f conftest$ac_cv_exeext +echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 +echo "${ECHO_T}$ac_cv_exeext" >&6 + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +echo "$as_me:$LINENO: checking for suffix of object files" >&5 +echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6 +if test "${ac_cv_objext+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile +See \`config.log' for more details." >&5 +echo "$as_me: error: cannot compute suffix of object files: cannot compile +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +rm -f conftest.$ac_cv_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 +echo "${ECHO_T}$ac_cv_objext" >&6 +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 +if test "${ac_cv_c_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_compiler_gnu=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_compiler_gnu=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 +GCC=`test $ac_compiler_gnu = yes && echo yes` +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +CFLAGS="-g" +echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 +echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 +if test "${ac_cv_prog_cc_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cc_g=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_prog_cc_g=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 +if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 +echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 +if test "${ac_cv_prog_cc_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_prog_cc_stdc=no +ac_save_CC=$CC +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +#include +#include +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std1 is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std1. */ +int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +# Don't try gcc -ansi; that turns off useful extensions and +# breaks some systems' header files. +# AIX -qlanglvl=ansi +# Ultrix and OSF/1 -std1 +# HP-UX 10.20 and later -Ae +# HP-UX older versions -Aa -D_HPUX_SOURCE +# SVR4 -Xc -D__EXTENSIONS__ +for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cc_stdc=$ac_arg +break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext +done +rm -f conftest.$ac_ext conftest.$ac_objext +CC=$ac_save_CC + +fi + +case "x$ac_cv_prog_cc_stdc" in + x|xno) + echo "$as_me:$LINENO: result: none needed" >&5 +echo "${ECHO_T}none needed" >&6 ;; + *) + echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 + CC="$CC $ac_cv_prog_cc_stdc" ;; +esac + +# Some people use a C++ compiler to compile C. Since we use `exit', +# in C++ we need to declare it. In case someone uses the same compiler +# for both compiling C and C++ we need to have the C++ compiler decide +# the declaration of exit, since it's the most demanding environment. +cat >conftest.$ac_ext <<_ACEOF +#ifndef __cplusplus + choke me +#endif +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + for ac_declaration in \ + '' \ + 'extern "C" void std::exit (int) throw (); using std::exit;' \ + 'extern "C" void std::exit (int); using std::exit;' \ + 'extern "C" void exit (int) throw ();' \ + 'extern "C" void exit (int);' \ + 'void exit (int);' +do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_declaration +#include +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +continue +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_declaration +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +done +rm -f conftest* +if test -n "$ac_declaration"; then + echo '#ifdef __cplusplus' >>confdefs.h + echo $ac_declaration >>confdefs.h + echo '#endif' >>confdefs.h +fi + +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 +echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6 +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if test "${ac_cv_prog_CPP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # Double quotes because CPP needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether non-existent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + break +fi + + done + ac_cv_prog_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +echo "$as_me:$LINENO: result: $CPP" >&5 +echo "${ECHO_T}$CPP" >&6 +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether non-existent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + : +else + { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details." >&5 +echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +echo "$as_me:$LINENO: checking for egrep" >&5 +echo $ECHO_N "checking for egrep... $ECHO_C" >&6 +if test "${ac_cv_prog_egrep+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if echo a | (grep -E '(a|b)') >/dev/null 2>&1 + then ac_cv_prog_egrep='grep -E' + else ac_cv_prog_egrep='egrep' + fi +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5 +echo "${ECHO_T}$ac_cv_prog_egrep" >&6 + EGREP=$ac_cv_prog_egrep + + + +echo "$as_me:$LINENO: checking for AIX" >&5 +echo $ECHO_N "checking for AIX... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef _AIX + yes +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "yes" >/dev/null 2>&1; then + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +cat >>confdefs.h <<\_ACEOF +#define _ALL_SOURCE 1 +_ACEOF + +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi +rm -f conftest* + + +fi + + +# DAVINCI SPECIFIC!!! +if test `uname -n` = "davinci"; then + echo "DAVINCI SPECIFIC TESTING FOR STDC++ LIBRARY!" + PATH_Search STDCXX_CHECK '/usr/lib64 /usr/lib' libstdc++.a + + # if STDCXX_CHECK is set... + if test "$STDCXX_CHECK" = "/usr/lib64"; then + echo "STDCXX setting ..." + echo "STDCXX_CHECK = $STDCXX_CHECK ..." + STDCXX="-L/usr/lib64 -lstdc++" + echo "STDCXX = $STDCXX ..." + elif test "$STDCXX_CHECK" = "/usr/lib"; then + echo "STDCXX setting ..." + echo "STDCXX_CHECK = $STDCXX_CHECK ..." + STDCXX="-L/usr/lib -lstdc++" + echo "STDCXX = $STDCXX ..." + fi +fi + + +# Determine a C compiler to use. +# If CC is not already set in the environment, check for gcc and cc, then for other C compilers. +# Set output variable CC to the name of the compiler found. +# Look for mpicc first, then icc, mpcc_r +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + for ac_prog in pathcc icc cc_r gcc cc + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in pathcc icc cc_r gcc cc +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$ac_ct_CC" && break +done + + CC=$ac_ct_CC +fi + + +test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH +See \`config.log' for more details." >&5 +echo "$as_me: error: no acceptable C compiler found in \$PATH +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } + +# Provide some information about the compiler. +echo "$as_me:$LINENO:" \ + "checking for C compiler version" >&5 +ac_compiler=`set X $ac_compile; echo $2` +{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 + (eval $ac_compiler --version &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 + (eval $ac_compiler -v &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 + (eval $ac_compiler -V &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + +echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 +if test "${ac_cv_c_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_compiler_gnu=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_compiler_gnu=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 +GCC=`test $ac_compiler_gnu = yes && echo yes` +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +CFLAGS="-g" +echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 +echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 +if test "${ac_cv_prog_cc_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cc_g=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_prog_cc_g=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 +if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 +echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 +if test "${ac_cv_prog_cc_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_prog_cc_stdc=no +ac_save_CC=$CC +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +#include +#include +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std1 is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std1. */ +int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +# Don't try gcc -ansi; that turns off useful extensions and +# breaks some systems' header files. +# AIX -qlanglvl=ansi +# Ultrix and OSF/1 -std1 +# HP-UX 10.20 and later -Ae +# HP-UX older versions -Aa -D_HPUX_SOURCE +# SVR4 -Xc -D__EXTENSIONS__ +for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cc_stdc=$ac_arg +break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext +done +rm -f conftest.$ac_ext conftest.$ac_objext +CC=$ac_save_CC + +fi + +case "x$ac_cv_prog_cc_stdc" in + x|xno) + echo "$as_me:$LINENO: result: none needed" >&5 +echo "${ECHO_T}none needed" >&6 ;; + *) + echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 + CC="$CC $ac_cv_prog_cc_stdc" ;; +esac + +# Some people use a C++ compiler to compile C. Since we use `exit', +# in C++ we need to declare it. In case someone uses the same compiler +# for both compiling C and C++ we need to have the C++ compiler decide +# the declaration of exit, since it's the most demanding environment. +cat >conftest.$ac_ext <<_ACEOF +#ifndef __cplusplus + choke me +#endif +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + for ac_declaration in \ + '' \ + 'extern "C" void std::exit (int) throw (); using std::exit;' \ + 'extern "C" void std::exit (int); using std::exit;' \ + 'extern "C" void exit (int) throw ();' \ + 'extern "C" void exit (int);' \ + 'void exit (int);' +do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_declaration +#include +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +continue +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_declaration +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +done +rm -f conftest* +if test -n "$ac_declaration"; then + echo '#ifdef __cplusplus' >>confdefs.h + echo $ac_declaration >>confdefs.h + echo '#endif' >>confdefs.h +fi + +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +# AC_PROG_CC doesn't pick up cc_r in Bassi. The following AC_PATH_PROGS is the fix. +for ac_prog in cc_r +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_BAS_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $BAS_CC in + [\\/]* | ?:[\\/]*) + ac_cv_path_BAS_CC="$BAS_CC" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_BAS_CC="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + ;; +esac +fi +BAS_CC=$ac_cv_path_BAS_CC + +if test -n "$BAS_CC"; then + echo "$as_me:$LINENO: result: $BAS_CC" >&5 +echo "${ECHO_T}$BAS_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$BAS_CC" && break +done + + +# if BAS_CC not empty +if test -n "$BAS_CC"; then + echo "CC setting for Bassi ..." + CC=$BAS_CC + echo "CC = $CC ..." +fi + + +# Determine a C++ compiler to use. +# Check if the environment variable CXX or CCC (in that order) is set; +# if so, then set output variable CXX to its value. +# Otherwise, if the macro is invoked without an argument, +# then search for a C++ compiler under the likely names (first g++ and c++ then other names). +# If none of those checks succeed, then as a last resort set CXX to g++. +ac_ext=cc +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +if test -n "$ac_tool_prefix"; then + for ac_prog in $CCC pathCC icc cc_r g++ gcc cc + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CXX"; then + ac_cv_prog_CXX="$CXX" # 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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CXX=$ac_cv_prog_CXX +if test -n "$CXX"; then + echo "$as_me:$LINENO: result: $CXX" >&5 +echo "${ECHO_T}$CXX" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$CXX" && break + done +fi +if test -z "$CXX"; then + ac_ct_CXX=$CXX + for ac_prog in $CCC pathCC icc cc_r g++ gcc cc +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CXX"; then + ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # 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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CXX="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CXX=$ac_cv_prog_ac_ct_CXX +if test -n "$ac_ct_CXX"; then + echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5 +echo "${ECHO_T}$ac_ct_CXX" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$ac_ct_CXX" && break +done +test -n "$ac_ct_CXX" || ac_ct_CXX="g++" + + CXX=$ac_ct_CXX +fi + + +# Provide some information about the compiler. +echo "$as_me:$LINENO:" \ + "checking for C++ compiler version" >&5 +ac_compiler=`set X $ac_compile; echo $2` +{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 + (eval $ac_compiler --version &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 + (eval $ac_compiler -v &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 + (eval $ac_compiler -V &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + +echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6 +if test "${ac_cv_cxx_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_compiler_gnu=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_compiler_gnu=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_cxx_compiler_gnu=$ac_compiler_gnu + +fi +echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6 +GXX=`test $ac_compiler_gnu = yes && echo yes` +ac_test_CXXFLAGS=${CXXFLAGS+set} +ac_save_CXXFLAGS=$CXXFLAGS +CXXFLAGS="-g" +echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5 +echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6 +if test "${ac_cv_prog_cxx_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cxx_g=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_prog_cxx_g=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5 +echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6 +if test "$ac_test_CXXFLAGS" = set; then + CXXFLAGS=$ac_save_CXXFLAGS +elif test $ac_cv_prog_cxx_g = yes; then + if test "$GXX" = yes; then + CXXFLAGS="-g -O2" + else + CXXFLAGS="-g" + fi +else + if test "$GXX" = yes; then + CXXFLAGS="-O2" + else + CXXFLAGS= + fi +fi +for ac_declaration in \ + '' \ + 'extern "C" void std::exit (int) throw (); using std::exit;' \ + 'extern "C" void std::exit (int); using std::exit;' \ + 'extern "C" void exit (int) throw ();' \ + 'extern "C" void exit (int);' \ + 'void exit (int);' +do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_declaration +#include +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +continue +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_declaration +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_cxx_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +done +rm -f conftest* +if test -n "$ac_declaration"; then + echo '#ifdef __cplusplus' >>confdefs.h + echo $ac_declaration >>confdefs.h + echo '#endif' >>confdefs.h +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + +# Set output variable INSTALL to the path of a BSD-compatible install program, if one is +# found in the current PATH. +# Otherwise, set INSTALL to `dir/install-sh -c` +# Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# OS/2's system install, which has a completely different semantic +# ./install, which can be erroneously created by make from ./install.sh. +echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 +echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 +if test -z "$INSTALL"; then +if test "${ac_cv_path_install+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + # Account for people who put trailing slashes in PATH elements. +case $as_dir/ in + ./ | .// | /cC/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ + /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then + if test $ac_prog = install && + grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + done + done + ;; +esac +done + + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. We don't cache a + # path for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the path is relative. + INSTALL=$ac_install_sh + fi +fi +echo "$as_me:$LINENO: result: $INSTALL" >&5 +echo "${ECHO_T}$INSTALL" >&6 + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + + + +# AM_INIT_AUTOMAKE is required to use autoconf with automake +am__api_version="1.9" +echo "$as_me:$LINENO: checking whether build environment is sane" >&5 +echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6 +# Just in case +sleep 1 +echo timestamp > conftest.file +# 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". + { { echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken +alias in your environment" >&5 +echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken +alias in your environment" >&2;} + { (exit 1); exit 1; }; } + fi + + test "$2" = conftest.file + ) +then + # Ok. + : +else + { { echo "$as_me:$LINENO: error: newly created file is older than distributed files! +Check your system clock" >&5 +echo "$as_me: error: newly created file is older than distributed files! +Check your system clock" >&2;} + { (exit 1); exit 1; }; } +fi +echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +test "$program_prefix" != NONE && + program_transform_name="s,^,$program_prefix,;$program_transform_name" +# Use a double $ so make ignores it. +test "$program_suffix" != NONE && + program_transform_name="s,\$,$program_suffix,;$program_transform_name" +# Double any \ or $. echo might interpret backslashes. +# By default was `s,x,x', remove it if useless. +cat <<\_ACEOF >conftest.sed +s/[\\$]/&&/g;s/;s,x,x,$// +_ACEOF +program_transform_name=`echo $program_transform_name | sed -f conftest.sed` +rm conftest.sed + +# expand $ac_aux_dir to an absolute path +am_aux_dir=`cd $ac_aux_dir && pwd` + +test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" +# Use eval to expand $SHELL +if eval "$MISSING --run true"; then + am_missing_run="$MISSING --run " +else + am_missing_run= + { echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5 +echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} +fi + +if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then + # We used to keeping the `.' as first argument, in order to + # allow $(mkdir_p) to be used without argument. As in + # $(mkdir_p) $(somedir) + # where $(somedir) is conditionally defined. However this is wrong + # for two reasons: + # 1. if the package is installed by a user who cannot write `.' + # make install will fail, + # 2. the above comment should most certainly read + # $(mkdir_p) $(DESTDIR)$(somedir) + # so it does not work when $(somedir) is undefined and + # $(DESTDIR) is not. + # To support the latter case, we have to write + # test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir), + # so the `.' trick is pointless. + mkdir_p='mkdir -p --' +else + # On NextStep and OpenStep, the `mkdir' command does not + # recognize any option. It will interpret all options as + # directories to create, and then abort because `.' already + # exists. + for d in ./-p ./--version; + do + test -d $d && rmdir $d + done + # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists. + if test -f "$ac_aux_dir/mkinstalldirs"; then + mkdir_p='$(mkinstalldirs)' + else + mkdir_p='$(install_sh) -d' + fi +fi + +for ac_prog in gawk mawk nawk awk +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_AWK+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$AWK"; then + ac_cv_prog_AWK="$AWK" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AWK="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + echo "$as_me:$LINENO: result: $AWK" >&5 +echo "${ECHO_T}$AWK" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$AWK" && break +done + +echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6 +set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'` +if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.make <<\_ACEOF +all: + @echo 'ac_maketemp="$(MAKE)"' +_ACEOF +# GNU make sometimes prints "make[1]: Entering...", which would confuse us. +eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=` +if test -n "$ac_maketemp"; then + eval ac_cv_prog_make_${ac_make}_set=yes +else + eval ac_cv_prog_make_${ac_make}_set=no +fi +rm -f conftest.make +fi +if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + SET_MAKE= +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + SET_MAKE="MAKE=${MAKE-make}" +fi + +rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null + +DEPDIR="${am__leading_dot}deps" + + ac_config_commands="$ac_config_commands depfiles" + + +am_make=${MAKE-make} +cat > confinc << 'END' +am__doit: + @echo done +.PHONY: am__doit +END +# If we don't find an include directive, just comment out the code. +echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5 +echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6 +am__include="#" +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# We grep out `Entering directory' and `Leaving directory' +# messages which can occur if `w' ends up in MAKEFLAGS. +# In particular we don't look at `^make:' because GNU make might +# be invoked under some other name (usually "gmake"), in which +# case it prints its new name instead of `make'. +if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then + am__include=include + am__quote= + _am_result=GNU +fi +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then + am__include=.include + am__quote="\"" + _am_result=BSD + fi +fi + + +echo "$as_me:$LINENO: result: $_am_result" >&5 +echo "${ECHO_T}$_am_result" >&6 +rm -f confinc confmf + +# Check whether --enable-dependency-tracking or --disable-dependency-tracking was given. +if test "${enable_dependency_tracking+set}" = set; then + enableval="$enable_dependency_tracking" + +fi; +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' +fi + + +if test "x$enable_dependency_tracking" != xno; then + AMDEP_TRUE= + AMDEP_FALSE='#' +else + AMDEP_TRUE='#' + AMDEP_FALSE= +fi + + + +# test to see if srcdir already configured +if test "`cd $srcdir && pwd`" != "`pwd`" && + test -f $srcdir/config.status; then + { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 +echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} + { (exit 1); exit 1; }; } +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi + + +# Define the identity of the package. + PACKAGE='h5part' + VERSION='Ver.1.0' + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE "$PACKAGE" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define VERSION "$VERSION" +_ACEOF + +# Some tools Automake needs. + +ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} + + +AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} + + +AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} + + +AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} + + +MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} + +install_sh=${install_sh-"$am_aux_dir/install-sh"} + +# Installed binaries are usually stripped using `strip' when the user +# run `make install-strip'. However `strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the `STRIP' environment variable to overrule this program. +if test "$cross_compiling" != no; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + echo "$as_me:$LINENO: result: $STRIP" >&5 +echo "${ECHO_T}$STRIP" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":" +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 +echo "${ECHO_T}$ac_ct_STRIP" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + STRIP=$ac_ct_STRIP +else + STRIP="$ac_cv_prog_STRIP" +fi + +fi +INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" + +# We need awk for the "check" target. The system "awk" is bad on +# some platforms. +# Always define AMTAR for backward compatibility. + +AMTAR=${AMTAR-"${am_missing_run}tar"} + +am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -' + + + + +depcc="$CC" am_compiler_list= + +echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 +echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 +if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CC_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with + # Solaris 8's {/usr,}/bin/sh. + touch sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + case $depmode in + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + none) break ;; + esac + # 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. + if depmode=$depmode \ + source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CC_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CC_dependencies_compiler_type=none +fi + +fi +echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 +echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6 +CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type + + + +if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then + am__fastdepCC_TRUE= + am__fastdepCC_FALSE='#' +else + am__fastdepCC_TRUE='#' + am__fastdepCC_FALSE= +fi + + +depcc="$CXX" am_compiler_list= + +echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 +echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 +if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CXX_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with + # Solaris 8's {/usr,}/bin/sh. + touch sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + case $depmode in + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + none) break ;; + esac + # 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. + if depmode=$depmode \ + source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CXX_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CXX_dependencies_compiler_type=none +fi + +fi +echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5 +echo "${ECHO_T}$am_cv_CXX_dependencies_compiler_type" >&6 +CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type + + + +if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then + am__fastdepCXX_TRUE= + am__fastdepCXX_FALSE='#' +else + am__fastdepCXX_TRUE='#' + am__fastdepCXX_FALSE= +fi + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + echo "$as_me:$LINENO: result: $RANLIB" >&5 +echo "${ECHO_T}$RANLIB" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 +echo "${ECHO_T}$ac_ct_RANLIB" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + RANLIB=$ac_ct_RANLIB +else + RANLIB="$ac_cv_prog_RANLIB" +fi + + +# Default prefix for bindir, etc... (eg >> ./build/bin) + + + +# AC_DEFINE_UNQUOTED (variable, value, [description]) +# Define the C preprocessor variable variable to value +# Use this macro instead of AC_DEFINE when variable or value is a shell variable. + +cat >>confdefs.h <<_ACEOF +#define MY_BUILD_VENDOR "$host_vendor" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define MY_BUILD_CPU "$host_cpu" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define MY_BUILD_OS "$host_os" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define MY_GNUNAME "${host_cpu}-${host_vendor}-${host_os}" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define MY_UNAME "$uname" +_ACEOF + + + + +################################################################################## +########################### CONFIGURE LINE OPTIONS ############################### +################################################################################## + +######################### 64-bit compilation enabled ############################# +echo "$as_me:$LINENO: checking if 64-bit compilation is enabled" >&5 +echo $ECHO_N "checking if 64-bit compilation is enabled... $ECHO_C" >&6 + +# AC_ARG_ENABLE (feature, help-string, [action-if-given], [action-if-not-given]) +# If the user gave configure the option `--enable-feature' or `--disable-feature', +# run shell commands action-if-given. +# You should format your help-string with the macro AC_HELP_STRING. +# Check whether --enable-64 or --disable-64 was given. +if test "${enable_64+set}" = set; then + enableval="$enable_64" + USE_64=$enableval +fi; + + +# If --enable-64 is set in the configure line +if test "X$USE_64" = "Xyes"; then + echo "YES, 64-BIT ENABLED" + if test $uname = "AIX"; then + CFLAGS="$CFLAGS -q64" + FFLAGS="$FFLAGS -q64" + fi + + if test $uname = "IRIX64"; then + CFLAGS="$CFLAGS -64" + FFLAGS="$FFLAGS -64 -fPIC -fno-second-underscore" + fi +else + echo "NO, 64-BIT NOT ENABLED" +fi + + +############################### fortran enabled ################################## +echo "$as_me:$LINENO: checking if fortran interface enabled" >&5 +echo $ECHO_N "checking if fortran interface enabled... $ECHO_C" >&6 +echo "$as_me:$LINENO: result: OK" >&5 +echo "${ECHO_T}OK" >&6 +# Check whether --enable-fortran or --disable-fortran was given. +if test "${enable_fortran+set}" = set; then + enableval="$enable_fortran" + USE_FORTRAN=$enableval +fi; + + +if test "X$USE_FORTRAN" = "Xyes"; then + echo "YES, FORTRAN ENABLED" + + # Start looking for ifort first + ac_ext=${FC_SRCEXT-f} +ac_compile='$FC -c $FCFLAGS $FCFLAGS_SRCEXT conftest.$ac_ext >&5' +ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $FCFLAGS_SRCEXT conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_fc_compiler_gnu +if test -n "$ac_tool_prefix"; then + for ac_prog in ifort xlf_r pathf90 g95 g90 + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_FC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$FC"; then + ac_cv_prog_FC="$FC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_FC="$ac_tool_prefix$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +FC=$ac_cv_prog_FC +if test -n "$FC"; then + echo "$as_me:$LINENO: result: $FC" >&5 +echo "${ECHO_T}$FC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$FC" && break + done +fi +if test -z "$FC"; then + ac_ct_FC=$FC + for ac_prog in ifort xlf_r pathf90 g95 g90 +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_FC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_FC"; then + ac_cv_prog_ac_ct_FC="$ac_ct_FC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_FC="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_FC=$ac_cv_prog_ac_ct_FC +if test -n "$ac_ct_FC"; then + echo "$as_me:$LINENO: result: $ac_ct_FC" >&5 +echo "${ECHO_T}$ac_ct_FC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$ac_ct_FC" && break +done + + FC=$ac_ct_FC +fi + + +# Provide some information about the compiler. +echo "$as_me:4614:" \ + "checking for Fortran compiler version" >&5 +ac_compiler=`set X $ac_compile; echo $2` +{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 + (eval $ac_compiler --version &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 + (eval $ac_compiler -v &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 + (eval $ac_compiler -V &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +rm -f a.out + +# If we don't use `.F' as extension, the preprocessor is not run on the +# input file. (Note that this only needs to work for GNU compilers.) +ac_save_ext=$ac_ext +ac_ext=F +echo "$as_me:$LINENO: checking whether we are using the GNU Fortran compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU Fortran compiler... $ECHO_C" >&6 +if test "${ac_cv_fc_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF + program main +#ifndef __GNUC__ + choke me +#endif + + end +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_fc_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_compiler_gnu=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_compiler_gnu=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_fc_compiler_gnu=$ac_compiler_gnu + +fi +echo "$as_me:$LINENO: result: $ac_cv_fc_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_fc_compiler_gnu" >&6 +ac_ext=$ac_save_ext +ac_test_FFLAGS=${FCFLAGS+set} +ac_save_FFLAGS=$FCFLAGS +FCFLAGS= +echo "$as_me:$LINENO: checking whether $FC accepts -g" >&5 +echo $ECHO_N "checking whether $FC accepts -g... $ECHO_C" >&6 +if test "${ac_cv_prog_fc_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + FCFLAGS=-g +cat >conftest.$ac_ext <<_ACEOF + program main + + end +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_fc_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_fc_g=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_prog_fc_g=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_fc_g" >&5 +echo "${ECHO_T}$ac_cv_prog_fc_g" >&6 +if test "$ac_test_FFLAGS" = set; then + FCFLAGS=$ac_save_FFLAGS +elif test $ac_cv_prog_fc_g = yes; then + if test "x$ac_cv_fc_compiler_gnu" = xyes; then + FCFLAGS="-g -O2" + else + FCFLAGS="-g" + fi +else + if test "x$ac_cv_fc_compiler_gnu" = xyes; then + FCFLAGS="-O2" + else + FCFLAGS= + fi +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + if test -n $FC ; then + echo "$as_me:$LINENO: checking Test Number of FC Underscores" >&5 +echo $ECHO_N "checking Test Number of FC Underscores... $ECHO_C" >&6 + echo "$as_me:$LINENO: result: OK" >&5 +echo "${ECHO_T}OK" >&6 + `cd src && rm -f TestUnderscore.o TestUnderscoreC.o TestUnderscore` + `cd src && ${FC} ${FFLAGS} -c TestUnderscore.f` + `cd src && ${CC} ${CFLAGS} -c TestUnderscoreC.c` + `cd src && ${FC} ${FFLAGS} -o TestUnderscore TestUnderscore.o TestUnderscoreC.o -lc` + + if test -f src/TestUnderscore ; then + UNDERSCORE_H=Underscore.h + `cd src && cat COPYRIGHT > Underscore.h` + `cd src && ./TestUnderscore >> Underscore.h` + echo "==== Underscore.h contains =============" + cat src/Underscore.h + echo "========================================" + else + { { echo "$as_me:$LINENO: error: could not build fortran executable" >&5 +echo "$as_me: error: could not build fortran executable" >&2;} + { (exit 1); exit 1; }; } + USE_FORTRAN = "no" + fi + else + { { echo "$as_me:$LINENO: error: could not find a fortran compiler" >&5 +echo "$as_me: error: could not find a fortran compiler" >&2;} + { (exit 1); exit 1; }; } + USE_FORTRAN = "no" + fi +else + echo "NO, FORTRAN NOT ENABLED" +fi + + +########################### parallel interface enabled ########################### +echo "$as_me:$LINENO: checking if parallel interface enabled" >&5 +echo $ECHO_N "checking if parallel interface enabled... $ECHO_C" >&6 +# Check whether --enable-parallel or --disable-parallel was given. +if test "${enable_parallel+set}" = set; then + enableval="$enable_parallel" + USE_PARALLEL=$enableval +fi; + + +# if parallel +if test "X$USE_PARALLEL" = "Xyes"; then + echo "YES, PARALLEL ENABLED" + echo "$as_me:$LINENO: checking for location of MPI libs------------" >&5 +echo $ECHO_N "checking for location of MPI libs------------... $ECHO_C" >&6 + echo "$as_me:$LINENO: result: OK" >&5 +echo "${ECHO_T}OK" >&6 + PATH_Search MPIROOT '/usr /usr/local /usr/local/mpi /usr/local/packages/mpi' include/mpi.h + + # AC_PATH_PROGS (variable, progs-to-check-for, [value-if-not-found], [path]) + # Like AC_CHECK_PROGS, but if any of progs-to-check-for are found, set variable to the + # entire path of the program found. + for ac_prog in mpicc mpcc_r +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_MPICC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $MPICC in + [\\/]* | ?:[\\/]*) + ac_cv_path_MPICC="$MPICC" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_MPICC="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + ;; +esac +fi +MPICC=$ac_cv_path_MPICC + +if test -n "$MPICC"; then + echo "$as_me:$LINENO: result: $MPICC" >&5 +echo "${ECHO_T}$MPICC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$MPICC" && break +done + + for ac_prog in mpicxx mpcc_r +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_MPICXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $MPICXX in + [\\/]* | ?:[\\/]*) + ac_cv_path_MPICXX="$MPICXX" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_MPICXX="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + ;; +esac +fi +MPICXX=$ac_cv_path_MPICXX + +if test -n "$MPICXX"; then + echo "$as_me:$LINENO: result: $MPICXX" >&5 +echo "${ECHO_T}$MPICXX" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$MPICXX" && break +done + + + # if MPICC empty + if test ! -n "$MPICC"; then + echo "$as_me:$LINENO: checking No MPICC detected. Setting MPICC to CC ------------" >&5 +echo $ECHO_N "checking No MPICC detected. Setting MPICC to CC ------------... $ECHO_C" >&6 + MPICC=$CC + echo "MPICC = $MPICC ..." + else + MPIINC = "-I${MPIROOT}/include" + MPILIB = "-L${MPIROOT}/lib -lmpi" + fi + + # if MPICXX empty + if test ! -n "$MPICXX"; then + echo "$as_me:$LINENO: checking No MPICXX detected. Setting MPICXX to CXX ------------" >&5 +echo $ECHO_N "checking No MPICXX detected. Setting MPICXX to CXX ------------... $ECHO_C" >&6 + MPICXX=$CXX + echo "MPICXX = $MPICXX ..." + fi + + # parallel + fortran + if test "X$USE_FORTRAN" = "Xyes"; then + echo "PARALLEL ENABLED WITH FORTRAN" + + for ac_prog in mpxlf_r mpif90 +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_MPIFC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $MPIFC in + [\\/]* | ?:[\\/]*) + ac_cv_path_MPIFC="$MPIFC" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_MPIFC="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + ;; +esac +fi +MPIFC=$ac_cv_path_MPIFC + +if test -n "$MPIFC"; then + echo "$as_me:$LINENO: result: $MPIFC" >&5 +echo "${ECHO_T}$MPIFC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$MPIFC" && break +done + + + # if MPIFC empty + if test ! -n "$MPIFC"; then + echo "$as_me:$LINENO: checking No MPIFC detected. Setting MPIFC to FC ------------" >&5 +echo $ECHO_N "checking No MPIFC detected. Setting MPIFC to FC ------------... $ECHO_C" >&6 + MPIFC=$FC + echo "MPIFC = $MPIFC ..." + fi + + MTARGET="libpH5Part.a libpH5PartF.a" + TTARGET="H5PartTestP H5PartAndreasTest H5testFpar Bench" + else + echo "PARALLEL ENABLED WITHOUT FORTRAN" + + MTARGET="libpH5Part.a" + TTARGET="H5PartTestP H5PartAndreasTest Bench" + fi + +#if not parallel +else + echo "NO, PARALLEL NOT ENABLED" + + if test "X$USE_FORTRAN" = "Xyes"; then + echo "PARALLEL NOT ENABLED WITH FORTRAN ENABLED" + + MTARGET="libH5Part.a libH5PartF.a" + TTARGET="H5PartTest H5testF H5test" + else + echo "BOTH PARALLEL & FORTRAN NOT ENABLED" + + MTARGET="libH5Part.a" + TTARGET="H5PartTest H5test" + fi +fi + +echo "$as_me:$LINENO: checking for h5pTools file ---------------" >&5 +echo $ECHO_N "checking for h5pTools file ---------------... $ECHO_C" >&6 +echo "$as_me:$LINENO: result: OK" >&5 +echo "${ECHO_T}OK" >&6 +# Check whether --enable-tools or --disable-tools was given. +if test "${enable_tools+set}" = set; then + enableval="$enable_tools" + USE_TOOLS=$enableval +fi; + + +if test "X$USE_TOOLS" = "Xyes"; then + BUILD_TOOLS="h5pAttrib h5pToGNUplot" +fi + +################################################################################## +############################ PATH CHECKING & SETTING ############################# +################################################################################## +echo "$as_me:$LINENO: checking for HDF5 library location------------" >&5 +echo $ECHO_N "checking for HDF5 library location------------... $ECHO_C" >&6 +echo "$as_me:$LINENO: result: OK" >&5 +echo "${ECHO_T}OK" >&6 +if test "X$USE_64" = "Xyes"; then +############## FIRST ARG TEMPORARILY SET FOR BASSI!!! ################## +PATH_Search HDF5ROOT '/scratch/scratchdirs/cristina/hdf5/hdf5_serial /usr /usr/local /usr/local/hdf5 /usr/local/packages/hdf5 /usr/common/usg/hdf5_64/1.6.4/serial /usr/common/usg/hdf5_64/1.6.1/serial /usr/local/hdf5/hdf5_serial' include/hdf5.h +else +PATH_Search HDF5ROOT '/scratch/scratchdirs/cristina/hdf5/hdf5_serial /usr /usr/local /usr/local/hdf5 /usr/local/packages/hdf5 /usr/common/usg/hdf5/1.6.4/serial /usr/common/usg/hdf5/1.6.1/serial /usr/local/hdf5/hdf5_serial' include/hdf5.h +fi + +echo "$as_me:$LINENO: checking for Parallel HDF5 root---------------" >&5 +echo $ECHO_N "checking for Parallel HDF5 root---------------... $ECHO_C" >&6 +echo "$as_me:$LINENO: result: OK" >&5 +echo "${ECHO_T}OK" >&6 +if test "X$USE_64" = "Xyes"; then +PATH_Search PHDF5ROOT '/scratch/scratchdirs/cristina/hdf5/hdf5_par /usr /usr/local /usr/local/hdf5 /usr/local/packages/hdf5 /usr/common/usg/hdf5_64/1.6.4/parallel /usr/common/usg/hdf5_64/1.6.1/parallel /usr/local/hdf5/hdf5_par' include/hdf5.h +else +PATH_Search PHDF5ROOT '/scratch/scratchdirs/cristina/hdf5/hdf5_par /usr /usr/local /usr/local/hdf5 /usr/local/packages/hdf5 /usr/common/usg/hdf5/1.6.4/parallel /usr/common/usg/hdf5/1.6.1/parallel /usr/local/hdf5/hdf5_par' include/hdf5.h +fi + +echo "$as_me:$LINENO: checking if we need to link to libsz" >&5 +echo $ECHO_N "checking if we need to link to libsz... $ECHO_C" >&6 +echo "$as_me:$LINENO: result: OK" >&5 +echo "${ECHO_T}OK" >&6 + +if test -n HDF5ROOT; then + if test -f $HDF5ROOT/lib/libsz.a; then + echo "yes" + SZLIB="-L$HDF5ROOT/lib/ -lsz" + else + echo "no" + SZLIB="" + fi +else + if test -f $PHDF5ROOT/lib/libsz.a; then + echo "yes" + SZLIB="-L$PHDF5ROOT/lib/ -lsz" + else + echo "no" + SZLIB="" + fi +fi + +####################### FOR PYTHON WRAPPER ########################### + +echo "$as_me:$LINENO: checking for Python header file ---------------" >&5 +echo $ECHO_N "checking for Python header file ---------------... $ECHO_C" >&6 +echo "$as_me:$LINENO: result: OK" >&5 +echo "${ECHO_T}OK" >&6 +# Check whether --enable-python or --disable-python was given. +if test "${enable_python+set}" = set; then + enableval="$enable_python" + USE_PYTHON=$enableval +fi; + + +if test "X$USE_PYTHON" = "Xyes"; then + + #ADD PATH TO MATCH YOUR SPECIFICATION!! + PATH_Search PYTHON_PATH '/usr/local/include/python2.0 /d/visguests/kheehyon/PYTHON/include/python2.4 /usr/include/python2.3' Python.h + + #if PYTHON_PATH found... + if test -n "$PYTHON_PATH"; then + PY_WRAPPER="_H5Part.so" + fi +fi + + + + +################################################################################## +####################### MISC SETTINGS - path, flags, etc ######################### +################################################################################## + +# if not AIX +if test ! $uname = "AIX"; then +# Additional flags +echo "SETTING ADDITIONAL FLAGS" +ADDFLAGS="-fPIC -fno-second-underscore" +fi + + +H5P_LIB_LOC=`pwd`/src + +################################################################################## +#################### A SIMPLE WORK AROUND TO USE ENV. VARS ####################### +################################################################################## + +#if there was an external input for the variable... +if test -n "$SAVE_CC"; then +CC=$SAVE_CC +fi + +if test -n "$SAVE_CXX"; then +CXX=$SAVE_CXX +fi + +if test -n "$SAVE_FC"; then +FC=$SAVE_FC +fi + +if test -n "$SAVE_MPICC"; then +MPICC=$SAVE_MPICC +fi + +if test -n "$SAVE_MPICXX"; then +MPICXX=$SAVE_MPICXX +fi + +if test -n "$SAVE_MPIFC"; then +MPIFC=$SAVE_MPIFC +fi + +if test -n "$SAVE_MPILIB"; then +MPILIB=$SAVE_MPILIB +fi + +if test -n "$SAVE_MPIINC"; then +MPIINC=$SAVE_MPIINC +fi + +if test -n "$SAVE_CFLAGS"; then +CFLAGS=$SAVE_CFLAGS +fi + +if test -n "$SAVE_FFLAGS"; then +FFLAGS=$SAVE_FFLAGS +fi + +if test -n "$SAVE_MPIROOT"; then +MPIROOT=$SAVE_MPIROOT +fi + +if test -n "$SAVE_HDF5ROOT"; then +HDF5ROOT=$SAVE_HDF5ROOT +fi + +if test -n "$SAVE_PHDF5ROOT"; then +PHDF5ROOT=$SAVE_PHDF5ROOT +fi + +if test -n "$SAVE_PYTHON_PATH"; then +PYTHON_PATH=$SAVE_PYTHON_PATH +fi + +if test -n "$SAVE_LDFLAGS"; then +LDFLAGS=$SAVE_LDFLAGS +fi + +if test -n "$MPICXX"; then +TOOLS_CXX=$MPICXX +TOOLS_H5PART_LIB="-lpH5Part" +TOOLS_HDFLIB="-L$PHDF5ROOT/lib -lhdf5" +else +TOOLS_CXX=$CXX +TOOLS_H5PART_LIB="-lH5Part" +TOOLS_HDFLIB="-L$HDF5ROOT/lib -lhdf5" +fi + +################################################################################## +############################# PRINTING SUMMARY ################################### +################################################################################## +echo "+++++++++++++++++++++++++++++++" +echo "+++++++++ SUMMARY for `(hostname || uname -n) 2>/dev/null | sed 1q` +++++++++" +echo "CC = $CC" +echo "CXX = $CXX" +echo "FC = $FC" +echo "MPICC = $MPICC" +echo "MPICXX = $MPICXX" +echo "MPIFC = $MPIFC" +echo "CFLAGS = $CFLAGS" +echo "FFLAGS = $FFLAGS" +echo "MPILIB = $MPILIB" +echo "MPIINC = $MPIINC" +echo "MPIROOT = $MPIROOT" +echo "HDF5ROOT = $HDF5ROOT" +echo "PHDF5ROOT = $PHDF5ROOT" +echo "PYTHON_PATH = $PYTHON_PATH" +echo "LDFLAGS = $LDFLAGS" +echo "host_os = $host_os" +echo "host_cpu = $host_cpu" +echo "host_vendor = $host_vendor" +echo "Will Be Building Libraries ... : $MTARGET" +echo "Will Be Building Test Programs ... : $TTARGET" +echo "TOOLS_CXX = $TOOLS_CXX" +echo "TOOLS_H5PART_LIB = $TOOLS_H5PART_LIB" +echo "TOOLS_HDFLIB = $TOOLS_HDFLIB" +echo "PY_WRAPPER = $PY_WRAPPER" +echo "BUILD_TOOLS = $BUILD_TOOLS" +echo "+++++++++++++++++++++++++++++++" + + +################################################################################## +################# EXPORTING VARIABLES & CREATING OUTPUT FILES #################### +################################################################################## +# AC_SUBST (variable, [value]) +# Create an output variable from a shell variable. +# Make AC_OUTPUT substitute the variable variable into output files (typically one or more `Makefile's). +# This means that AC_OUTPUT will replace instances of `@variable@' in input files with the value that +# the shell variable variable has when AC_OUTPUT is called. +# This value of variable should not contain literal newlines. +# If value is given, in addition assign it to variable. + + + + + + + + + + + + + + + + + + + + + + + + + +# Make AC_OUTPUT create each `file' by copying an input file (by default `file.in'), +# substituting the output variable values. + ac_config_files="$ac_config_files Makefile src/Makefile test/Makefile tools/Makefile" + + + +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, don't put newlines in cache variables' values. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +{ + (set) 2>&1 | + case `(ac_space=' '; set | grep ac_space) 2>&1` in + *ac_space=\ *) + # `set' does not quote correctly, so add quotes (double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \). + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n \ + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + ;; + esac; +} | + sed ' + t clear + : clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + : end' >>confcache +if diff $cache_file confcache >/dev/null 2>&1; then :; else + if test -w $cache_file; then + test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" + cat confcache >$cache_file + else + echo "not updating unwritable cache $cache_file" + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +# VPATH may cause trouble with some makes, so we remove $(srcdir), +# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=/{ +s/:*\$(srcdir):*/:/; +s/:*\${srcdir}:*/:/; +s/:*@srcdir@:*/:/; +s/^\([^=]*=[ ]*\):*/\1/; +s/:*$//; +s/^[^=]*=[ ]*$//; +}' +fi + +DEFS=-DHAVE_CONFIG_H + +ac_libobjs= +ac_ltlibobjs= +for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_i=`echo "$ac_i" | + sed 's/\$U\././;s/\.o$//;s/\.obj$//'` + # 2. Add them. + ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext" + ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo' +done +LIBOBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + +if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCXX\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi + +: ${CONFIG_STATUS=./config.status} +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 +echo "$as_me: creating $CONFIG_STATUS" >&6;} +cat >$CONFIG_STATUS <<_ACEOF +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false +SHELL=\${CONFIG_SHELL-$SHELL} +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +## --------------------- ## +## M4sh Initialization. ## +## --------------------- ## + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix +fi +DUALCASE=1; export DUALCASE # for MKS sh + +# Support unset when possible. +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + + +# Work around bugs in pre-3.0 UWIN ksh. +$as_unset ENV MAIL MAILPATH +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +for as_var in \ + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ + LC_TELEPHONE LC_TIME +do + if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + $as_unset $as_var + fi +done + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + + +# Name of the executable. +as_me=`$as_basename "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)$' \| \ + . : '\(.\)' 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } + /^X\/\(\/\/\)$/{ s//\1/; q; } + /^X\/\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + + +# PATH needs CR, and LINENO needs CR and PATH. +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" || { + # Find who we are. Look in the path if we contain no path at all + # relative or not. + case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +done + + ;; + esac + # We did not find ourselves, most probably we were run as `sh COMMAND' + # in which case we are not to be found in the path. + if test "x$as_myself" = x; then + as_myself=$0 + fi + if test ! -f "$as_myself"; then + { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 +echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} + { (exit 1); exit 1; }; } + fi + case $CONFIG_SHELL in + '') + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for as_base in sh bash ksh sh5; do + case $as_dir in + /*) + if ("$as_dir/$as_base" -c ' + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then + $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } + $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } + CONFIG_SHELL=$as_dir/$as_base + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$0" ${1+"$@"} + fi;; + esac + done +done +;; + esac + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a + # line-number line before each line; the second 'sed' does the real + # work. The second script uses 'N' to pair each line-number line + # with the numbered line, and appends trailing '-' during + # substitution so that $LINENO is not a special case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the + # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) + sed '=' <$as_myself | + sed ' + N + s,$,-, + : loop + s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, + t loop + s,-$,, + s,^['$as_cr_digits']*\n,, + ' >$as_me.lineno && + chmod +x $as_me.lineno || + { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 +echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;} + { (exit 1); exit 1; }; } + + # 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 sensible to this). + . ./$as_me.lineno + # Exit status is that of the last command. + exit +} + + +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in + *c*,-n*) ECHO_N= ECHO_C=' +' ECHO_T=' ' ;; + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; + *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +esac + +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + # We could just check for DJGPP; but this test a) works b) is more generic + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). + if test -f conf$$.exe; then + # Don't use ln at all; we don't have any links + as_ln_s='cp -p' + else + as_ln_s='ln -s' + fi +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.file + +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_executable_p="test -f" + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +# IFS +# We need space, tab and new line, in precisely that order. +as_nl=' +' +IFS=" $as_nl" + +# CDPATH. +$as_unset CDPATH + +exec 6>&1 + +# Open the log real soon, to keep \$[0] and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. Logging --version etc. is OK. +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX +} >&5 +cat >&5 <<_CSEOF + +This file was extended by H5Part $as_me Ver.1.0, which was +generated by GNU Autoconf 2.59. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +_CSEOF +echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 +echo >&5 +_ACEOF + +# Files that config.status was made for. +if test -n "$ac_config_files"; then + echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_headers"; then + echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_links"; then + echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_commands"; then + echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS +fi + +cat >>$CONFIG_STATUS <<\_ACEOF + +ac_cs_usage="\ +\`$as_me' instantiates files from templates according to the +current configuration. + +Usage: $0 [OPTIONS] [FILE]... + + -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 + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Configuration commands: +$config_commands + +Report bugs to ." +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF +ac_cs_version="\\ +H5Part config.status Ver.1.0 +configured by $0, generated by GNU Autoconf 2.59, + with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" + +Copyright (C) 2003 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." +srcdir=$srcdir +INSTALL="$INSTALL" +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +# If no file are specified by the user, then we need to provide default +# value. By we need to know if files were specified by the user. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=*) + ac_option=`expr "x$1" : 'x\([^=]*\)='` + ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` + ac_shift=: + ;; + -*) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + *) # This is not an option, so the user has probably given explicit + # arguments. + ac_option=$1 + ac_need_defaults=false;; + esac + + case $ac_option in + # Handling of the options. +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --vers* | -V ) + echo "$ac_cs_version"; exit 0 ;; + --he | --h) + # Conflict between --help and --header + { { echo "$as_me:$LINENO: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&5 +echo "$as_me: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&2;} + { (exit 1); exit 1; }; };; + --help | --hel | -h ) + echo "$ac_cs_usage"; exit 0 ;; + --debug | --d* | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + CONFIG_FILES="$CONFIG_FILES $ac_optarg" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" + ac_need_defaults=false;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&5 +echo "$as_me: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&2;} + { (exit 1); exit 1; }; } ;; + + *) ac_config_targets="$ac_config_targets $1" ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF +if \$ac_cs_recheck; then + echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 + exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion +fi + +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF +# +# INIT-COMMANDS section. +# + +AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" + +_ACEOF + + + +cat >>$CONFIG_STATUS <<\_ACEOF +for ac_config_target in $ac_config_targets +do + case "$ac_config_target" in + # Handling of arguments. + "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "src/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; + "test/Makefile" ) CONFIG_FILES="$CONFIG_FILES test/Makefile" ;; + "tools/Makefile" ) CONFIG_FILES="$CONFIG_FILES tools/Makefile" ;; + "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; + "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; + *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 +echo "$as_me: error: invalid argument: $ac_config_target" >&2;} + { (exit 1); exit 1; }; };; + esac +done + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files + test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers + test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason to put it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Create a temporary directory, and hook for its removal unless debugging. +$debug || +{ + trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 + trap '{ (exit 1); exit 1; }' 1 2 13 15 +} + +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` && + test -n "$tmp" && test -d "$tmp" +} || +{ + tmp=./confstat$$-$RANDOM + (umask 077 && mkdir $tmp) +} || +{ + echo "$me: cannot create a temporary directory in ." >&2 + { (exit 1); exit 1; } +} + +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF + +# +# CONFIG_FILES section. +# + +# No need to generate the scripts if there are no CONFIG_FILES. +# This happens for instance when ./config.status config.h +if test -n "\$CONFIG_FILES"; then + # Protect against being on the right side of a sed subst in config.status. + sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g; + s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF +s,@SHELL@,$SHELL,;t t +s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t +s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t +s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t +s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t +s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t +s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t +s,@exec_prefix@,$exec_prefix,;t t +s,@prefix@,$prefix,;t t +s,@program_transform_name@,$program_transform_name,;t t +s,@bindir@,$bindir,;t t +s,@sbindir@,$sbindir,;t t +s,@libexecdir@,$libexecdir,;t t +s,@datadir@,$datadir,;t t +s,@sysconfdir@,$sysconfdir,;t t +s,@sharedstatedir@,$sharedstatedir,;t t +s,@localstatedir@,$localstatedir,;t t +s,@libdir@,$libdir,;t t +s,@includedir@,$includedir,;t t +s,@oldincludedir@,$oldincludedir,;t t +s,@infodir@,$infodir,;t t +s,@mandir@,$mandir,;t t +s,@build_alias@,$build_alias,;t t +s,@host_alias@,$host_alias,;t t +s,@target_alias@,$target_alias,;t t +s,@DEFS@,$DEFS,;t t +s,@ECHO_C@,$ECHO_C,;t t +s,@ECHO_N@,$ECHO_N,;t t +s,@ECHO_T@,$ECHO_T,;t t +s,@LIBS@,$LIBS,;t t +s,@build@,$build,;t t +s,@build_cpu@,$build_cpu,;t t +s,@build_vendor@,$build_vendor,;t t +s,@build_os@,$build_os,;t t +s,@host@,$host,;t t +s,@host_cpu@,$host_cpu,;t t +s,@host_vendor@,$host_vendor,;t t +s,@host_os@,$host_os,;t t +s,@CC@,$CC,;t t +s,@CFLAGS@,$CFLAGS,;t t +s,@LDFLAGS@,$LDFLAGS,;t t +s,@CPPFLAGS@,$CPPFLAGS,;t t +s,@ac_ct_CC@,$ac_ct_CC,;t t +s,@EXEEXT@,$EXEEXT,;t t +s,@OBJEXT@,$OBJEXT,;t t +s,@CPP@,$CPP,;t t +s,@EGREP@,$EGREP,;t t +s,@BAS_CC@,$BAS_CC,;t t +s,@CXX@,$CXX,;t t +s,@CXXFLAGS@,$CXXFLAGS,;t t +s,@ac_ct_CXX@,$ac_ct_CXX,;t t +s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t +s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t +s,@INSTALL_DATA@,$INSTALL_DATA,;t t +s,@CYGPATH_W@,$CYGPATH_W,;t t +s,@PACKAGE@,$PACKAGE,;t t +s,@VERSION@,$VERSION,;t t +s,@ACLOCAL@,$ACLOCAL,;t t +s,@AUTOCONF@,$AUTOCONF,;t t +s,@AUTOMAKE@,$AUTOMAKE,;t t +s,@AUTOHEADER@,$AUTOHEADER,;t t +s,@MAKEINFO@,$MAKEINFO,;t t +s,@install_sh@,$install_sh,;t t +s,@STRIP@,$STRIP,;t t +s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t +s,@INSTALL_STRIP_PROGRAM@,$INSTALL_STRIP_PROGRAM,;t t +s,@mkdir_p@,$mkdir_p,;t t +s,@AWK@,$AWK,;t t +s,@SET_MAKE@,$SET_MAKE,;t t +s,@am__leading_dot@,$am__leading_dot,;t t +s,@AMTAR@,$AMTAR,;t t +s,@am__tar@,$am__tar,;t t +s,@am__untar@,$am__untar,;t t +s,@DEPDIR@,$DEPDIR,;t t +s,@am__include@,$am__include,;t t +s,@am__quote@,$am__quote,;t t +s,@AMDEP_TRUE@,$AMDEP_TRUE,;t t +s,@AMDEP_FALSE@,$AMDEP_FALSE,;t t +s,@AMDEPBACKSLASH@,$AMDEPBACKSLASH,;t t +s,@CCDEPMODE@,$CCDEPMODE,;t t +s,@am__fastdepCC_TRUE@,$am__fastdepCC_TRUE,;t t +s,@am__fastdepCC_FALSE@,$am__fastdepCC_FALSE,;t t +s,@CXXDEPMODE@,$CXXDEPMODE,;t t +s,@am__fastdepCXX_TRUE@,$am__fastdepCXX_TRUE,;t t +s,@am__fastdepCXX_FALSE@,$am__fastdepCXX_FALSE,;t t +s,@RANLIB@,$RANLIB,;t t +s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t +s,@FC@,$FC,;t t +s,@FCFLAGS@,$FCFLAGS,;t t +s,@ac_ct_FC@,$ac_ct_FC,;t t +s,@MPICC@,$MPICC,;t t +s,@MPICXX@,$MPICXX,;t t +s,@MPIFC@,$MPIFC,;t t +s,@MPIROOT@,$MPIROOT,;t t +s,@HDF5ROOT@,$HDF5ROOT,;t t +s,@PHDF5ROOT@,$PHDF5ROOT,;t t +s,@MPIINC@,$MPIINC,;t t +s,@MPILIB@,$MPILIB,;t t +s,@MTARGET@,$MTARGET,;t t +s,@TTARGET@,$TTARGET,;t t +s,@SZLIB@,$SZLIB,;t t +s,@FFLAGS@,$FFLAGS,;t t +s,@ADDFLAGS@,$ADDFLAGS,;t t +s,@STDCXX@,$STDCXX,;t t +s,@H5P_LIB_LOC@,$H5P_LIB_LOC,;t t +s,@UNDERSCORE_H@,$UNDERSCORE_H,;t t +s,@BUILD_TOOLS@,$BUILD_TOOLS,;t t +s,@PYTHON_PATH@,$PYTHON_PATH,;t t +s,@PY_WRAPPER@,$PY_WRAPPER,;t t +s,@TOOLS_CXX@,$TOOLS_CXX,;t t +s,@TOOLS_H5PART_LIB@,$TOOLS_H5PART_LIB,;t t +s,@TOOLS_HDFLIB@,$TOOLS_HDFLIB,;t t +s,@LIBOBJS@,$LIBOBJS,;t t +s,@LTLIBOBJS@,$LTLIBOBJS,;t t +CEOF + +_ACEOF + + cat >>$CONFIG_STATUS <<\_ACEOF + # Split the substitutions into bite-sized pieces for seds with + # small command number limits, like on Digital OSF/1 and HP-UX. + ac_max_sed_lines=48 + ac_sed_frag=1 # Number of current file. + ac_beg=1 # First line for current file. + ac_end=$ac_max_sed_lines # Line after last line for current file. + ac_more_lines=: + ac_sed_cmds= + while $ac_more_lines; do + if test $ac_beg -gt 1; then + sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag + else + sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag + fi + if test ! -s $tmp/subs.frag; then + ac_more_lines=false + else + # The purpose of the label and of the branching condition is to + # speed up the sed processing (if there are no `@' at all, there + # is no need to browse any of the substitutions). + # These are the two extra sed commands mentioned above. + (echo ':t + /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed + if test -z "$ac_sed_cmds"; then + ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" + else + ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" + fi + ac_sed_frag=`expr $ac_sed_frag + 1` + ac_beg=$ac_end + ac_end=`expr $ac_end + $ac_max_sed_lines` + fi + done + if test -z "$ac_sed_cmds"; then + ac_sed_cmds=cat + fi +fi # test -n "$CONFIG_FILES" + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF +for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case $ac_file in + - | *:- | *:-:* ) # input from stdin + cat >$tmp/stdin + ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + * ) ac_file_in=$ac_file.in ;; + esac + + # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. + ac_dir=`(dirname "$ac_file") 2>/dev/null || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac + +# Do not use `cd foo && pwd` to compute absolute paths, because +# the directories may not exist. +case `pwd` in +.) ac_abs_builddir="$ac_dir";; +*) + case "$ac_dir" in + .) ac_abs_builddir=`pwd`;; + [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; + *) ac_abs_builddir=`pwd`/"$ac_dir";; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_builddir=${ac_top_builddir}.;; +*) + case ${ac_top_builddir}. in + .) ac_abs_top_builddir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; + *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_srcdir=$ac_srcdir;; +*) + case $ac_srcdir in + .) ac_abs_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; + *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_srcdir=$ac_top_srcdir;; +*) + case $ac_top_srcdir in + .) ac_abs_top_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; + *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; + esac;; +esac + + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_builddir$INSTALL ;; + esac + + if test x"$ac_file" != x-; then + { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + rm -f "$ac_file" + fi + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + if test x"$ac_file" = x-; then + configure_input= + else + configure_input="$ac_file. " + fi + configure_input=$configure_input"Generated from `echo $ac_file_in | + sed 's,.*/,,'` by configure." + + # First look for the input files in the build tree, otherwise in the + # src tree. + ac_file_inputs=`IFS=: + for f in $ac_file_in; do + case $f in + -) echo $tmp/stdin ;; + [\\/$]*) + # Absolute (can't be DOS-style, as IFS=:) + test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + echo "$f";; + *) # Relative + if test -f "$f"; then + # Build tree + echo "$f" + elif test -f "$srcdir/$f"; then + # Source tree + echo "$srcdir/$f" + else + # /dev/null tree + { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + fi;; + esac + done` || { (exit 1); exit 1; } +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF + sed "$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s,@configure_input@,$configure_input,;t t +s,@srcdir@,$ac_srcdir,;t t +s,@abs_srcdir@,$ac_abs_srcdir,;t t +s,@top_srcdir@,$ac_top_srcdir,;t t +s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t +s,@builddir@,$ac_builddir,;t t +s,@abs_builddir@,$ac_abs_builddir,;t t +s,@top_builddir@,$ac_top_builddir,;t t +s,@abs_top_builddir@,$ac_abs_top_builddir,;t t +s,@INSTALL@,$ac_INSTALL,;t t +" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out + rm -f $tmp/stdin + if test x"$ac_file" != x-; then + mv $tmp/out $ac_file + else + cat $tmp/out + rm -f $tmp/out + fi + +done +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF + +# +# CONFIG_HEADER section. +# + +# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where +# NAME is the cpp macro being defined and VALUE is the value it is being given. +# +# ac_d sets the value in "#define NAME VALUE" lines. +ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' +ac_dB='[ ].*$,\1#\2' +ac_dC=' ' +ac_dD=',;t' +# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". +ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' +ac_uB='$,\1#\2define\3' +ac_uC=' ' +ac_uD=',;t' + +for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case $ac_file in + - | *:- | *:-:* ) # input from stdin + cat >$tmp/stdin + ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + * ) ac_file_in=$ac_file.in ;; + esac + + test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + + # First look for the input files in the build tree, otherwise in the + # src tree. + ac_file_inputs=`IFS=: + for f in $ac_file_in; do + case $f in + -) echo $tmp/stdin ;; + [\\/$]*) + # Absolute (can't be DOS-style, as IFS=:) + test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + # Do quote $f, to prevent DOS paths from being IFS'd. + echo "$f";; + *) # Relative + if test -f "$f"; then + # Build tree + echo "$f" + elif test -f "$srcdir/$f"; then + # Source tree + echo "$srcdir/$f" + else + # /dev/null tree + { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + fi;; + esac + done` || { (exit 1); exit 1; } + # Remove the trailing spaces. + sed 's/[ ]*$//' $ac_file_inputs >$tmp/in + +_ACEOF + +# Transform confdefs.h into two sed scripts, `conftest.defines' and +# `conftest.undefs', that substitutes the proper values into +# config.h.in to produce config.h. The first handles `#define' +# templates, and the second `#undef' templates. +# And first: Protect against being on the right side of a sed subst in +# config.status. Protect against being in an unquoted here document +# in config.status. +rm -f conftest.defines conftest.undefs +# Using a here document instead of a string reduces the quoting nightmare. +# Putting comments in sed scripts is not portable. +# +# `end' is used to avoid that the second main sed command (meant for +# 0-ary CPP macros) applies to n-ary macro definitions. +# See the Autoconf documentation for `clear'. +cat >confdef2sed.sed <<\_ACEOF +s/[\\&,]/\\&/g +s,[\\$`],\\&,g +t clear +: clear +s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp +t end +s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp +: end +_ACEOF +# If some macros were called several times there might be several times +# the same #defines, which is useless. Nevertheless, we may not want to +# sort them, since we want the *last* AC-DEFINE to be honored. +uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines +sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs +rm -f confdef2sed.sed + +# This sed command replaces #undef with comments. This is necessary, for +# example, in the case of _POSIX_SOURCE, which is predefined and required +# on some systems where configure will not decide to define it. +cat >>conftest.undefs <<\_ACEOF +s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */, +_ACEOF + +# Break up conftest.defines because some shells have a limit on the size +# of here documents, and old seds have small limits too (100 cmds). +echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS +echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS +echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS +echo ' :' >>$CONFIG_STATUS +rm -f conftest.tail +while grep . conftest.defines >/dev/null +do + # Write a limited-size here document to $tmp/defines.sed. + echo ' cat >$tmp/defines.sed <>$CONFIG_STATUS + # Speed up: don't consider the non `#define' lines. + echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS + # Work around the forget-to-reset-the-flag bug. + echo 't clr' >>$CONFIG_STATUS + echo ': clr' >>$CONFIG_STATUS + sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS + echo 'CEOF + sed -f $tmp/defines.sed $tmp/in >$tmp/out + rm -f $tmp/in + mv $tmp/out $tmp/in +' >>$CONFIG_STATUS + sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail + rm -f conftest.defines + mv conftest.tail conftest.defines +done +rm -f conftest.defines +echo ' fi # grep' >>$CONFIG_STATUS +echo >>$CONFIG_STATUS + +# Break up conftest.undefs because some shells have a limit on the size +# of here documents, and old seds have small limits too (100 cmds). +echo ' # Handle all the #undef templates' >>$CONFIG_STATUS +rm -f conftest.tail +while grep . conftest.undefs >/dev/null +do + # Write a limited-size here document to $tmp/undefs.sed. + echo ' cat >$tmp/undefs.sed <>$CONFIG_STATUS + # Speed up: don't consider the non `#undef' + echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS + # Work around the forget-to-reset-the-flag bug. + echo 't clr' >>$CONFIG_STATUS + echo ': clr' >>$CONFIG_STATUS + sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS + echo 'CEOF + sed -f $tmp/undefs.sed $tmp/in >$tmp/out + rm -f $tmp/in + mv $tmp/out $tmp/in +' >>$CONFIG_STATUS + sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail + rm -f conftest.undefs + mv conftest.tail conftest.undefs +done +rm -f conftest.undefs + +cat >>$CONFIG_STATUS <<\_ACEOF + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + if test x"$ac_file" = x-; then + echo "/* Generated by configure. */" >$tmp/config.h + else + echo "/* $ac_file. Generated by configure. */" >$tmp/config.h + fi + cat $tmp/in >>$tmp/config.h + rm -f $tmp/in + if test x"$ac_file" != x-; then + if diff $ac_file $tmp/config.h >/dev/null 2>&1; then + { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 +echo "$as_me: $ac_file is unchanged" >&6;} + else + ac_dir=`(dirname "$ac_file") 2>/dev/null || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + + rm -f $ac_file + mv $tmp/config.h $ac_file + fi + else + cat $tmp/config.h + rm -f $tmp/config.h + fi +# Compute $ac_file's index in $config_headers. +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $ac_file | $ac_file:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $ac_file" >`(dirname $ac_file) 2>/dev/null || +$as_expr X$ac_file : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X$ac_file : 'X\(//\)[^/]' \| \ + X$ac_file : 'X\(//\)$' \| \ + X$ac_file : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X$ac_file | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'`/stamp-h$_am_stamp_count +done +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF + +# +# CONFIG_COMMANDS section. +# +for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue + ac_dest=`echo "$ac_file" | sed 's,:.*,,'` + ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_dir=`(dirname "$ac_dest") 2>/dev/null || +$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_dest" : 'X\(//\)[^/]' \| \ + X"$ac_dest" : 'X\(//\)$' \| \ + X"$ac_dest" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_dest" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac + +# Do not use `cd foo && pwd` to compute absolute paths, because +# the directories may not exist. +case `pwd` in +.) ac_abs_builddir="$ac_dir";; +*) + case "$ac_dir" in + .) ac_abs_builddir=`pwd`;; + [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; + *) ac_abs_builddir=`pwd`/"$ac_dir";; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_builddir=${ac_top_builddir}.;; +*) + case ${ac_top_builddir}. in + .) ac_abs_top_builddir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; + *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_srcdir=$ac_srcdir;; +*) + case $ac_srcdir in + .) ac_abs_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; + *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; + esac;; +esac +case $ac_abs_builddir in +.) ac_abs_top_srcdir=$ac_top_srcdir;; +*) + case $ac_top_srcdir in + .) ac_abs_top_srcdir=$ac_abs_builddir;; + [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; + *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; + esac;; +esac + + + { echo "$as_me:$LINENO: executing $ac_dest commands" >&5 +echo "$as_me: executing $ac_dest commands" >&6;} + case $ac_dest in + depfiles ) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named `Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # So let's grep whole file. + if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then + dirpart=`(dirname "$mf") 2>/dev/null || +$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$mf" : 'X\(//\)[^/]' \| \ + X"$mf" : 'X\(//\)$' \| \ + X"$mf" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$mf" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running `make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # 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 + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`(dirname "$file") 2>/dev/null || +$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$file" : 'X\(//\)[^/]' \| \ + X"$file" : 'X\(//\)$' \| \ + X"$file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p $dirpart/$fdir + else + as_dir=$dirpart/$fdir + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory $dirpart/$fdir" >&5 +echo "$as_me: error: cannot create directory $dirpart/$fdir" >&2;} + { (exit 1); exit 1; }; }; } + + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done +done + ;; + esac +done +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF + +{ (exit 0); exit 0; } +_ACEOF +chmod +x $CONFIG_STATUS +ac_clean_files=$ac_clean_files_save + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || { (exit 1); exit 1; } +fi + diff --git a/configure.ac b/configure.ac new file mode 100644 index 0000000..27c13ea --- /dev/null +++ b/configure.ac @@ -0,0 +1,573 @@ +# Every configure script must call AC_INIT before doing anything else. +# AC_INIT (package, version, [bug-report], [tarname]) +AC_INIT([H5Part], [Ver.1.0], [vis@hpcrdm.lbl.gov]) + + +# Ensure that a recent enough version of Autoconf is being used. +# If the version of Autoconf being used to create configure is earlier than version, +# print an error message to the standard error output and do not create configure. +AC_PREREQ(2.59) + + +# should be called right after AC_INIT. +# configure scripts can create a C header file containing `#define' directives. +# The AC_CONFIG_HEADERS macro selects this kind of output. +AC_CONFIG_HEADER(config.h) + + +################################################################################## +#################### A SIMPLE WORK AROUND TO USE ENV. VARS ####################### +################################################################################## + + +SAVE_CC=$CC +SAVE_CXX=$CXX +SAVE_FC=$FC +SAVE_MPICC=$MPICC +SAVE_MPICXX=$MPICXX +SAVE_MPIFC=$MPIFC +SAVE_MPILIB=$MPILIB +SAVE_MPIINC=$MPIINC +SAVE_CFLAGS=$CFLAGS +SAVE_FFLAGS=$FFLAGS +SAVE_MPIROOT=$MPIROOT +SAVE_HDF5ROOT=$HDF5ROOT +SAVE_PHDF5ROOT=$PHDF5ROOT +SAVE_PYTHON_PATH=$PYTHON_PATH +SAVE_LDFLAGS=$LDFLAGS + + +################################################################################## +################## PATH SERACH FUNCTION - to be used later... #################### +################################################################################## +# /*@@ +# @routine CCTK_Search +# @date Wed Jul 21 11:16:35 1999 +# @author Tom Goodale +# @desc +# Used to search for something in various directories +# @enddesc +#@@*/ + +PATH_Search() +{ + eval $1="" + if test $# -lt 4 ; then + h5part_basedir="" + else + h5part_basedir="$4/" + fi + for h5part_place in $2 + do + echo "Looking in $h5part_place ... $ac_c" #1>&6 + if test -r "$h5part_basedir$h5part_place/$3" ; then + echo "$ac_t""... Found" #1>&6 + eval $1="$h5part_place" + break + fi + if test -d "$h5part_basedir$h5part_place/$3" ; then + echo "$ac_t""... Found" #1>&6 + eval $1="$h5part_place" + break + fi + echo "$ac_t"" No" #1>&6 + done + + return +} + + + +################################################################################## +################ MISC SETTINGS INCLUDING C & C++ COMPILER SETTING ################ +################################################################################## +# Compute the canonical host-system type variable, host, and its three individual +# parts host_cpu, host_vendor, and host_os. +AC_CANONICAL_HOST + + +uname=`uname -s` +if test $uname = "AIX"; then + # Notify the user that configure is checking for a particular feature. + # This macro prints a message that starts with `checking ' and ends with `...' and no newline. + # It must be (?) followed by a call to AC_MSG_RESULT to print the result of the check and the newline. + AC_MSG_CHECKING([if system is AIX]) + + # AC_MSG_RESULT (result-description) + # Notify the user of the results of a check + AC_MSG_RESULT([OK]) + + # If on AIX, define _ALL_SOURCE. Allows the use of some BSD functions. + # Should be called before any macros that run the C compiler. + AC_AIX +fi + + +# DAVINCI SPECIFIC!!! +if test `uname -n` = "davinci"; then + echo "DAVINCI SPECIFIC TESTING FOR STDC++ LIBRARY!" + PATH_Search STDCXX_CHECK '/usr/lib64 /usr/lib' libstdc++.a + + # if STDCXX_CHECK is set... + if test "$STDCXX_CHECK" = "/usr/lib64"; then + echo "STDCXX setting ..." + echo "STDCXX_CHECK = $STDCXX_CHECK ..." + STDCXX="-L/usr/lib64 -lstdc++" + echo "STDCXX = $STDCXX ..." + elif test "$STDCXX_CHECK" = "/usr/lib"; then + echo "STDCXX setting ..." + echo "STDCXX_CHECK = $STDCXX_CHECK ..." + STDCXX="-L/usr/lib -lstdc++" + echo "STDCXX = $STDCXX ..." + fi +fi + + +# Determine a C compiler to use. +# If CC is not already set in the environment, check for gcc and cc, then for other C compilers. +# Set output variable CC to the name of the compiler found. +# Look for mpicc first, then icc, mpcc_r +AC_PROG_CC(pathcc icc cc_r gcc cc) + +# AC_PROG_CC doesn't pick up cc_r in Bassi. The following AC_PATH_PROGS is the fix. +AC_PATH_PROGS([BAS_CC], [cc_r], [], [$PATH]) + +# if BAS_CC not empty +if test -n "$BAS_CC"; then + echo "CC setting for Bassi ..." + CC=$BAS_CC + echo "CC = $CC ..." +fi + + +# Determine a C++ compiler to use. +# Check if the environment variable CXX or CCC (in that order) is set; +# if so, then set output variable CXX to its value. +# Otherwise, if the macro is invoked without an argument, +# then search for a C++ compiler under the likely names (first g++ and c++ then other names). +# If none of those checks succeed, then as a last resort set CXX to g++. +AC_PROG_CXX(pathCC icc cc_r g++ gcc cc) + + +# Set output variable INSTALL to the path of a BSD-compatible install program, if one is +# found in the current PATH. +# Otherwise, set INSTALL to `dir/install-sh -c` +AC_PROG_INSTALL + + +# AM_INIT_AUTOMAKE is required to use autoconf with automake +AM_INIT_AUTOMAKE() + + +AC_PROG_RANLIB + +# Default prefix for bindir, etc... (eg >> ./build/bin) +AC_PREFIX_DEFAULT(`pwd`/build) + + +# AC_DEFINE_UNQUOTED (variable, value, [description]) +# Define the C preprocessor variable variable to value +# Use this macro instead of AC_DEFINE when variable or value is a shell variable. +AC_DEFINE_UNQUOTED(MY_BUILD_VENDOR, "$host_vendor", "") +AC_DEFINE_UNQUOTED(MY_BUILD_CPU, "$host_cpu", "") +AC_DEFINE_UNQUOTED(MY_BUILD_OS, "$host_os", "") +AC_DEFINE_UNQUOTED(MY_GNUNAME, "${host_cpu}-${host_vendor}-${host_os}", "") +AC_DEFINE_UNQUOTED(MY_UNAME, "$uname", "") + + + +################################################################################## +########################### CONFIGURE LINE OPTIONS ############################### +################################################################################## + +######################### 64-bit compilation enabled ############################# +AC_MSG_CHECKING([if 64-bit compilation is enabled]) + +# AC_ARG_ENABLE (feature, help-string, [action-if-given], [action-if-not-given]) +# If the user gave configure the option `--enable-feature' or `--disable-feature', +# run shell commands action-if-given. +# You should format your help-string with the macro AC_HELP_STRING. +AC_ARG_ENABLE([64], + [AC_HELP_STRING([--enable-64],[Compile using 64-bit flags [default=no]])], + [USE_64=$enableval]) + + +# If --enable-64 is set in the configure line +if test "X$USE_64" = "Xyes"; then + echo "YES, 64-BIT ENABLED" + if test $uname = "AIX"; then + CFLAGS="$CFLAGS -q64" + FFLAGS="$FFLAGS -q64" + fi + + if test $uname = "IRIX64"; then + CFLAGS="$CFLAGS -64" + FFLAGS="$FFLAGS -64 -fPIC -fno-second-underscore" + fi +else + echo "NO, 64-BIT NOT ENABLED" +fi + + +############################### fortran enabled ################################## +AC_MSG_CHECKING([if fortran interface enabled]) +AC_MSG_RESULT([OK]) +AC_ARG_ENABLE([fortran], + [AC_HELP_STRING([--enable-fortran], [Compile the Fortran interface [default=no]])], + [USE_FORTRAN=$enableval]) + + +if test "X$USE_FORTRAN" = "Xyes"; then + echo "YES, FORTRAN ENABLED" + + # Start looking for ifort first + AC_PROG_FC(ifort xlf_r pathf90 g95 g90) + + + if test -n $FC ; then + AC_MSG_CHECKING([Test Number of FC Underscores]) + AC_MSG_RESULT([OK]) + `cd src && rm -f TestUnderscore.o TestUnderscoreC.o TestUnderscore` + `cd src && ${FC} ${FFLAGS} -c TestUnderscore.f` + `cd src && ${CC} ${CFLAGS} -c TestUnderscoreC.c` + `cd src && ${FC} ${FFLAGS} -o TestUnderscore TestUnderscore.o TestUnderscoreC.o -lc` + + if test -f src/TestUnderscore ; then + UNDERSCORE_H=Underscore.h + `cd src && cat COPYRIGHT > Underscore.h` + `cd src && ./TestUnderscore >> Underscore.h` + echo "==== Underscore.h contains =============" + cat src/Underscore.h + echo "========================================" + else + AC_MSG_ERROR(could not build fortran executable) + USE_FORTRAN = "no" + fi + else + AC_MSG_ERROR(could not find a fortran compiler) + USE_FORTRAN = "no" + fi +else + echo "NO, FORTRAN NOT ENABLED" +fi + + +########################### parallel interface enabled ########################### +AC_MSG_CHECKING([if parallel interface enabled]) +AC_ARG_ENABLE([parallel], + [AC_HELP_STRING([--enable-parallel], [Compile the MPI/IO interface [default=no]])], + [USE_PARALLEL=$enableval]) + + +# if parallel +if test "X$USE_PARALLEL" = "Xyes"; then + echo "YES, PARALLEL ENABLED" + AC_MSG_CHECKING([ for location of MPI libs------------]) + AC_MSG_RESULT([OK]) + PATH_Search MPIROOT '/usr /usr/local /usr/local/mpi /usr/local/packages/mpi' include/mpi.h + + # AC_PATH_PROGS (variable, progs-to-check-for, [value-if-not-found], [path]) + # Like AC_CHECK_PROGS, but if any of progs-to-check-for are found, set variable to the + # entire path of the program found. + AC_PATH_PROGS([MPICC], [mpicc mpcc_r], [], [$PATH]) + AC_PATH_PROGS([MPICXX], [mpicxx mpcc_r], [], [$PATH]) + + # if MPICC empty + if test ! -n "$MPICC"; then + AC_MSG_CHECKING([ No MPICC detected. Setting MPICC to CC ------------]) + MPICC=$CC + echo "MPICC = $MPICC ..." + else + MPIINC = "-I${MPIROOT}/include" + MPILIB = "-L${MPIROOT}/lib -lmpi" + fi + + # if MPICXX empty + if test ! -n "$MPICXX"; then + AC_MSG_CHECKING([ No MPICXX detected. Setting MPICXX to CXX ------------]) + MPICXX=$CXX + echo "MPICXX = $MPICXX ..." + fi + + # parallel + fortran + if test "X$USE_FORTRAN" = "Xyes"; then + echo "PARALLEL ENABLED WITH FORTRAN" + + AC_PATH_PROGS([MPIFC], [mpxlf_r mpif90], [], [$PATH]) + + # if MPIFC empty + if test ! -n "$MPIFC"; then + AC_MSG_CHECKING([ No MPIFC detected. Setting MPIFC to FC ------------]) + MPIFC=$FC + echo "MPIFC = $MPIFC ..." + fi + + MTARGET="libpH5Part.a libpH5PartF.a" + TTARGET="H5PartTestP H5PartAndreasTest H5testFpar Bench" + else + echo "PARALLEL ENABLED WITHOUT FORTRAN" + + MTARGET="libpH5Part.a" + TTARGET="H5PartTestP H5PartAndreasTest Bench" + fi + +#if not parallel +else + echo "NO, PARALLEL NOT ENABLED" + + if test "X$USE_FORTRAN" = "Xyes"; then + echo "PARALLEL NOT ENABLED WITH FORTRAN ENABLED" + + MTARGET="libH5Part.a libH5PartF.a" + TTARGET="H5PartTest H5testF H5test" + else + echo "BOTH PARALLEL & FORTRAN NOT ENABLED" + + MTARGET="libH5Part.a" + TTARGET="H5PartTest H5test" + fi +fi + +AC_MSG_CHECKING([ for h5pTools file ---------------]) +AC_MSG_RESULT([OK]) +AC_ARG_ENABLE([tools], + [AC_HELP_STRING([--enable-tools], [Compile h5part tools [default=no]])], + [USE_TOOLS=$enableval]) + + +if test "X$USE_TOOLS" = "Xyes"; then + BUILD_TOOLS="h5pAttrib h5pToGNUplot" +fi + +################################################################################## +############################ PATH CHECKING & SETTING ############################# +################################################################################## +AC_MSG_CHECKING([ for HDF5 library location------------]) +AC_MSG_RESULT([OK]) +if test "X$USE_64" = "Xyes"; then +############## FIRST ARG TEMPORARILY SET FOR BASSI!!! ################## +PATH_Search HDF5ROOT '/scratch/scratchdirs/cristina/hdf5/hdf5_serial /usr /usr/local /usr/local/hdf5 /usr/local/packages/hdf5 /usr/common/usg/hdf5_64/1.6.4/serial /usr/common/usg/hdf5_64/1.6.1/serial /usr/local/hdf5/hdf5_serial' include/hdf5.h +else +PATH_Search HDF5ROOT '/scratch/scratchdirs/cristina/hdf5/hdf5_serial /usr /usr/local /usr/local/hdf5 /usr/local/packages/hdf5 /usr/common/usg/hdf5/1.6.4/serial /usr/common/usg/hdf5/1.6.1/serial /usr/local/hdf5/hdf5_serial' include/hdf5.h +fi + +AC_MSG_CHECKING([ for Parallel HDF5 root---------------]) +AC_MSG_RESULT([OK]) +if test "X$USE_64" = "Xyes"; then +PATH_Search PHDF5ROOT '/scratch/scratchdirs/cristina/hdf5/hdf5_par /usr /usr/local /usr/local/hdf5 /usr/local/packages/hdf5 /usr/common/usg/hdf5_64/1.6.4/parallel /usr/common/usg/hdf5_64/1.6.1/parallel /usr/local/hdf5/hdf5_par' include/hdf5.h +else +PATH_Search PHDF5ROOT '/scratch/scratchdirs/cristina/hdf5/hdf5_par /usr /usr/local /usr/local/hdf5 /usr/local/packages/hdf5 /usr/common/usg/hdf5/1.6.4/parallel /usr/common/usg/hdf5/1.6.1/parallel /usr/local/hdf5/hdf5_par' include/hdf5.h +fi + +AC_MSG_CHECKING([if we need to link to libsz]) +AC_MSG_RESULT([OK]) + +if test -n HDF5ROOT; then + if test -f $HDF5ROOT/lib/libsz.a; then + echo "yes" + SZLIB="-L$HDF5ROOT/lib/ -lsz" + else + echo "no" + SZLIB="" + fi +else + if test -f $PHDF5ROOT/lib/libsz.a; then + echo "yes" + SZLIB="-L$PHDF5ROOT/lib/ -lsz" + else + echo "no" + SZLIB="" + fi +fi + +####################### FOR PYTHON WRAPPER ########################### + +AC_MSG_CHECKING([ for Python header file ---------------]) +AC_MSG_RESULT([OK]) +AC_ARG_ENABLE([python], + [AC_HELP_STRING([--enable-python], [Compile Python wrapper [default=no]])], + [USE_PYTHON=$enableval]) + + +if test "X$USE_PYTHON" = "Xyes"; then + + #ADD PATH TO MATCH YOUR SPECIFICATION!! + PATH_Search PYTHON_PATH '/usr/local/include/python2.0 /d/visguests/kheehyon/PYTHON/include/python2.4 /usr/include/python2.3' Python.h + + #if PYTHON_PATH found... + if test -n "$PYTHON_PATH"; then + PY_WRAPPER="_H5Part.so" + fi +fi + + + + +################################################################################## +####################### MISC SETTINGS - path, flags, etc ######################### +################################################################################## + +# if not AIX +if test ! $uname = "AIX"; then +# Additional flags +echo "SETTING ADDITIONAL FLAGS" +ADDFLAGS="-fPIC -fno-second-underscore" +fi + + +H5P_LIB_LOC=`pwd`/src + +################################################################################## +#################### A SIMPLE WORK AROUND TO USE ENV. VARS ####################### +################################################################################## + +#if there was an external input for the variable... +if test -n "$SAVE_CC"; then +CC=$SAVE_CC +fi + +if test -n "$SAVE_CXX"; then +CXX=$SAVE_CXX +fi + +if test -n "$SAVE_FC"; then +FC=$SAVE_FC +fi + +if test -n "$SAVE_MPICC"; then +MPICC=$SAVE_MPICC +fi + +if test -n "$SAVE_MPICXX"; then +MPICXX=$SAVE_MPICXX +fi + +if test -n "$SAVE_MPIFC"; then +MPIFC=$SAVE_MPIFC +fi + +if test -n "$SAVE_MPILIB"; then +MPILIB=$SAVE_MPILIB +fi + +if test -n "$SAVE_MPIINC"; then +MPIINC=$SAVE_MPIINC +fi + +if test -n "$SAVE_CFLAGS"; then +CFLAGS=$SAVE_CFLAGS +fi + +if test -n "$SAVE_FFLAGS"; then +FFLAGS=$SAVE_FFLAGS +fi + +if test -n "$SAVE_MPIROOT"; then +MPIROOT=$SAVE_MPIROOT +fi + +if test -n "$SAVE_HDF5ROOT"; then +HDF5ROOT=$SAVE_HDF5ROOT +fi + +if test -n "$SAVE_PHDF5ROOT"; then +PHDF5ROOT=$SAVE_PHDF5ROOT +fi + +if test -n "$SAVE_PYTHON_PATH"; then +PYTHON_PATH=$SAVE_PYTHON_PATH +fi + +if test -n "$SAVE_LDFLAGS"; then +LDFLAGS=$SAVE_LDFLAGS +fi + +if test -n "$MPICXX"; then +TOOLS_CXX=$MPICXX +TOOLS_H5PART_LIB="-lpH5Part" +TOOLS_HDFLIB="-L$PHDF5ROOT/lib -lhdf5" +else +TOOLS_CXX=$CXX +TOOLS_H5PART_LIB="-lH5Part" +TOOLS_HDFLIB="-L$HDF5ROOT/lib -lhdf5" +fi + +################################################################################## +############################# PRINTING SUMMARY ################################### +################################################################################## +echo "+++++++++++++++++++++++++++++++" +echo "+++++++++ SUMMARY for `(hostname || uname -n) 2>/dev/null | sed 1q` +++++++++" +echo "CC = $CC" +echo "CXX = $CXX" +echo "FC = $FC" +echo "MPICC = $MPICC" +echo "MPICXX = $MPICXX" +echo "MPIFC = $MPIFC" +echo "CFLAGS = $CFLAGS" +echo "FFLAGS = $FFLAGS" +echo "MPILIB = $MPILIB" +echo "MPIINC = $MPIINC" +echo "MPIROOT = $MPIROOT" +echo "HDF5ROOT = $HDF5ROOT" +echo "PHDF5ROOT = $PHDF5ROOT" +echo "PYTHON_PATH = $PYTHON_PATH" +echo "LDFLAGS = $LDFLAGS" +echo "host_os = $host_os" +echo "host_cpu = $host_cpu" +echo "host_vendor = $host_vendor" +echo "Will Be Building Libraries ... : $MTARGET" +echo "Will Be Building Test Programs ... : $TTARGET" +echo "TOOLS_CXX = $TOOLS_CXX" +echo "TOOLS_H5PART_LIB = $TOOLS_H5PART_LIB" +echo "TOOLS_HDFLIB = $TOOLS_HDFLIB" +echo "PY_WRAPPER = $PY_WRAPPER" +echo "BUILD_TOOLS = $BUILD_TOOLS" +echo "+++++++++++++++++++++++++++++++" + + +################################################################################## +################# EXPORTING VARIABLES & CREATING OUTPUT FILES #################### +################################################################################## +# AC_SUBST (variable, [value]) +# Create an output variable from a shell variable. +# Make AC_OUTPUT substitute the variable variable into output files (typically one or more `Makefile's). +# This means that AC_OUTPUT will replace instances of `@variable@' in input files with the value that +# the shell variable variable has when AC_OUTPUT is called. +# This value of variable should not contain literal newlines. +# If value is given, in addition assign it to variable. +AC_SUBST(MPIROOT) +AC_SUBST(HDF5ROOT) +AC_SUBST(PHDF5ROOT) +AC_SUBST(MPIINC) +AC_SUBST(MPILIB) +AC_SUBST(MPICC) +AC_SUBST(MPICXX) +AC_SUBST(MPIFC) +AC_SUBST(MTARGET) +AC_SUBST(TTARGET) +AC_SUBST(SZLIB) +AC_SUBST(CFLAGS) +AC_SUBST(FFLAGS) +AC_SUBST(ADDFLAGS) +AC_SUBST(STDCXX) +AC_SUBST(H5P_LIB_LOC) +AC_SUBST(UNDERSCORE_H) +AC_SUBST(BUILD_TOOLS) +AC_SUBST(PYTHON_PATH) +AC_SUBST(PY_WRAPPER) +AC_SUBST(LDFLAGS) +AC_SUBST(TOOLS_CXX) +AC_SUBST(TOOLS_H5PART_LIB) +AC_SUBST(TOOLS_HDFLIB) + +# Make AC_OUTPUT create each `file' by copying an input file (by default `file.in'), +# substituting the output variable values. +AC_CONFIG_FILES([ +Makefile +src/Makefile +test/Makefile +tools/Makefile +]) + + +AC_OUTPUT diff --git a/depcomp b/depcomp new file mode 100755 index 0000000..ffcd540 --- /dev/null +++ b/depcomp @@ -0,0 +1,529 @@ +#! /bin/sh +# depcomp - compile a program generating dependencies as side-effects + +scriptversion=2005-02-09.22 + +# Copyright (C) 1999, 2000, 2003, 2004, 2005 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, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# 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 Alexandre Oliva . + +case $1 in + '') + echo "$0: No command. Try \`$0 --help' for more information." 1>&2 + exit 1; + ;; + -h | --h*) + cat <<\EOF +Usage: depcomp [--help] [--version] PROGRAM [ARGS] + +Run PROGRAMS ARGS to compile a file, generating dependencies +as side-effects. + +Environment variables: + depmode Dependency tracking mode. + source Source file read by `PROGRAMS ARGS'. + 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. + libtool Whether libtool is used (yes/no). + +Report bugs to . +EOF + exit $? + ;; + -v | --v*) + echo "depcomp $scriptversion" + exit $? + ;; +esac + +if test -z "$depmode" || test -z "$source" || test -z "$object"; then + echo "depcomp: Variables source, object and depmode must be set" 1>&2 + exit 1 +fi + +# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. +depfile=${depfile-`echo "$object" | + sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} +tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} + +rm -f "$tmpdepfile" + +# Some modes work just like other modes, but use different flags. We +# parameterize here, but still list the modes in the big case below, +# to make depend.m4 easier to write. Note that we *cannot* use a case +# here, because this file can only contain one case statement. +if test "$depmode" = hp; then + # HP compiler uses -M and no extra arg. + gccflag=-M + depmode=gcc +fi + +if test "$depmode" = dashXmstdout; then + # This is just like dashmstdout with a different argument. + dashmflag=-xM + depmode=dashmstdout +fi + +case "$depmode" in +gcc3) +## gcc 3 implements dependency tracking that does exactly what +## we want. Yay! Note: for some reason libtool 1.4 doesn't like +## it if -MD -MP comes after the -MF stuff. Hmm. + "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + mv "$tmpdepfile" "$depfile" + ;; + +gcc) +## There are various ways to get dependency output from gcc. Here's +## why we pick this rather obscure method: +## - Don't want to use -MD because we'd like the dependencies to end +## up in a subdir. Having to rename by hand is ugly. +## (We might end up doing this anyway to support other compilers.) +## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like +## -MM, not -M (despite what the docs say). +## - Using -M directly means running the compiler twice (even worse +## than renaming). + if test -z "$gccflag"; then + gccflag=-MD, + fi + "$@" -Wp,"$gccflag$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + echo "$object : \\" > "$depfile" + alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz +## The second -e expression handles DOS-style file names with drive letters. + sed -e 's/^[^:]*: / /' \ + -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" +## This next piece of magic avoids the `deleted header file' problem. +## The problem is that when a header file which appears in a .P file +## is deleted, the dependency causes make to die (because there is +## typically no way to rebuild the header). We avoid this by adding +## dummy dependencies for each header file. Too bad gcc doesn't do +## this for us directly. + tr ' ' ' +' < "$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. +## 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" + rm -f "$tmpdepfile" + ;; + +hp) + # 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 + ;; + +sgi) + if test "$libtool" = yes; then + "$@" "-Wp,-MDupdate,$tmpdepfile" + else + "$@" -MDupdate "$tmpdepfile" + fi + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + + if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files + echo "$object : \\" > "$depfile" + + # Clip off the initial element (the dependent). Don't try to be + # clever and replace this with sed code, as IRIX sed won't handle + # lines with more than a fixed number of characters (4096 in + # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; + # the IRIX cc adds comments like `#:fec' to the end of the + # dependency line. + tr ' ' ' +' < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ + tr ' +' ' ' >> $depfile + echo >> $depfile + + # The second pass generates a dummy entry for each header file. + tr ' ' ' +' < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ + >> $depfile + else + # The sourcefile does not contain any dependencies, so just + # store a dummy comment line, to avoid errors with the Makefile + # "include basename.Plo" scheme. + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +aix) + # The C for AIX Compiler uses -M and outputs the dependencies + # in a .u file. In older versions, this file always lives in the + # current directory. Also, the AIX compiler puts `$object:' at the + # start of each line; $object doesn't have directory information. + # Version 6 uses the directory in both cases. + stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'` + tmpdepfile="$stripped.u" + if test "$libtool" = yes; then + "$@" -Wc,-M + else + "$@" -M + fi + stat=$? + + if test -f "$tmpdepfile"; then : + else + stripped=`echo "$stripped" | sed 's,^.*/,,'` + tmpdepfile="$stripped.u" + fi + + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + + if test -f "$tmpdepfile"; then + outname="$stripped.o" + # Each line is of the form `foo.o: dependent.h'. + # Do two passes, one to just change these to + # `$object: dependent.h' and one to simply `dependent.h:'. + sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile" + sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile" + else + # The sourcefile does not contain any dependencies, so just + # store a dummy comment line, to avoid errors with the Makefile + # "include basename.Plo" scheme. + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +icc) + # Intel's C compiler understands `-MD -MF file'. However on + # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c + # ICC 7.0 will fill foo.d with something like + # foo.o: sub/foo.c + # foo.o: sub/foo.h + # which is wrong. We want: + # sub/foo.o: sub/foo.c + # sub/foo.o: sub/foo.h + # sub/foo.c: + # sub/foo.h: + # ICC 7.1 will output + # foo.o: sub/foo.c sub/foo.h + # and will wrap long lines using \ : + # foo.o: sub/foo.c ... \ + # sub/foo.h ... \ + # ... + + "$@" -MD -MF "$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + # Each line is of the form `foo.o: dependent.h', + # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. + # Do two passes, one to just change these to + # `$object: dependent.h' and one to simply `dependent.h:'. + sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" + # Some versions of the HPUX 10.20 sed can't process this invocation + # correctly. Breaking it into two sed invocations is a workaround. + sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | + sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +tru64) + # The Tru64 compiler uses -MD to generate dependencies as a side + # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. + # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put + # dependencies in `foo.d' instead, so we check for that too. + # Subdirectories are respected. + dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` + test "x$dir" = "x$object" && dir= + base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` + + if test "$libtool" = yes; then + # With Tru64 cc, shared objects can also be used to make a + # static library. This mecanism is used in libtool 1.4 series to + # handle both shared and static libraries in a single compilation. + # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. + # + # With libtool 1.5 this exception was removed, and libtool now + # generates 2 separate objects for the 2 libraries. These two + # compilations output dependencies in in $dir.libs/$base.o.d and + # in $dir$base.o.d. We have to check for both files, because + # one of the two compilations can be disabled. We should prefer + # $dir$base.o.d over $dir.libs/$base.o.d because the latter is + # automatically cleaned when .libs/ is deleted, while ignoring + # the former would cause a distcleancheck panic. + tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 + tmpdepfile2=$dir$base.o.d # libtool 1.5 + tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 + tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 + "$@" -Wc,-MD + else + tmpdepfile1=$dir$base.o.d + tmpdepfile2=$dir$base.d + tmpdepfile3=$dir$base.d + tmpdepfile4=$dir$base.d + "$@" -MD + fi + + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" + do + test -f "$tmpdepfile" && break + done + if test -f "$tmpdepfile"; then + sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" + # That's a tab and a space in the []. + sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" + else + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +#nosideeffect) + # This comment above is used by automake to tell side-effect + # dependency tracking mechanisms from slower ones. + +dashmstdout) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout, regardless of -o. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test $1 != '--mode=compile'; do + shift + done + shift + fi + + # Remove `-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + test -z "$dashmflag" && dashmflag=-M + # Require at least two characters before searching for `:' + # in the target name. This is to cope with DOS-style filenames: + # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. + "$@" $dashmflag | + sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" + tr ' ' ' +' < "$tmpdepfile" | \ +## 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" + rm -f "$tmpdepfile" + ;; + +dashXmstdout) + # This case only exists to satisfy depend.m4. It is never actually + # run, as this mode is specially recognized in the preamble. + exit 1 + ;; + +makedepend) + "$@" || exit $? + # Remove any Libtool call + if test "$libtool" = yes; then + while test $1 != '--mode=compile'; do + shift + done + shift + fi + # X makedepend + shift + cleared=no + for arg in "$@"; do + case $cleared in + no) + set ""; shift + cleared=yes ;; + esac + case "$arg" in + -D*|-I*) + set fnord "$@" "$arg"; shift ;; + # Strip any option that makedepend may not understand. Remove + # the object too, otherwise makedepend will parse it as a source file. + -*|$object) + ;; + *) + set fnord "$@" "$arg"; shift ;; + esac + done + obj_suffix="`echo $object | sed 's/^.*\././'`" + touch "$tmpdepfile" + ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" + sed '1,2d' "$tmpdepfile" | tr ' ' ' +' | \ +## 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" + rm -f "$tmpdepfile" "$tmpdepfile".bak + ;; + +cpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test $1 != '--mode=compile'; do + shift + done + shift + fi + + # Remove `-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + "$@" -E | + sed -n '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | + sed '$ s: \\$::' > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + cat < "$tmpdepfile" >> "$depfile" + sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +msvisualcpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout, regardless of -o, + # because we must use -o when running libtool. + "$@" || exit $? + IFS=" " + for arg + do + case "$arg" in + "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") + set fnord "$@" + shift + shift + ;; + *) + set fnord "$@" "$arg" + shift + shift + ;; + esac + done + "$@" -E | + sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" + echo " " >> "$depfile" + . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +none) + exec "$@" + ;; + +*) + echo "Unknown depmode $depmode" 1>&2 + exit 1 + ;; +esac + +exit 0 + +# 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-end: "$" +# End: diff --git a/doc/2006-Berkeley-Visit/BethelSAP_1page-4.doc b/doc/2006-Berkeley-Visit/BethelSAP_1page-4.doc new file mode 100644 index 0000000..72f3359 Binary files /dev/null and b/doc/2006-Berkeley-Visit/BethelSAP_1page-4.doc differ diff --git a/doc/2006-Berkeley-Visit/H5Part.ppt b/doc/2006-Berkeley-Visit/H5Part.ppt new file mode 100644 index 0000000..55c9d71 Binary files /dev/null and b/doc/2006-Berkeley-Visit/H5Part.ppt differ diff --git a/doc/2006-Berkeley-Visit/H5xxx.ppt b/doc/2006-Berkeley-Visit/H5xxx.ppt new file mode 100644 index 0000000..0156742 Binary files /dev/null and b/doc/2006-Berkeley-Visit/H5xxx.ppt differ diff --git a/doc/2006-Berkeley-Visit/H5xxxVisIt.fig b/doc/2006-Berkeley-Visit/H5xxxVisIt.fig new file mode 100644 index 0000000..9e4288e --- /dev/null +++ b/doc/2006-Berkeley-Visit/H5xxxVisIt.fig @@ -0,0 +1,294 @@ +#FIG 3.2 +Landscape +Center +Inches +Letter +100.00 +Single +-2 +1200 2 +0 32 #c6b797 +0 33 #eff8ff +0 34 #dccba6 +0 35 #404040 +0 36 #808080 +0 37 #c0c0c0 +0 38 #e0e0e0 +0 39 #8e8f8e +0 40 #aaaaaa +0 41 #555555 +0 42 #bebebe +0 43 #515151 +0 44 #e7e3e7 +0 45 #000049 +0 46 #797979 +0 47 #303430 +0 48 #414141 +0 49 #c7b696 +0 50 #8e8e8e +0 51 #414541 +0 52 #8e8e8e +0 53 #000079 +0 54 #ff8200 +0 55 #007d00 +0 56 #0000be +# Desktop computer +6 375 2400 2025 4050 +6 1575 3825 2025 4050 +2 3 0 1 -1 7 2 0 20 0.000 0 0 -1 0 0 8 + 1615 3916 1719 3874 1908 3874 1950 3853 1972 3853 1846 3937 + 1615 3937 1615 3916 +2 3 0 1 -1 7 2 0 20 0.000 0 0 -1 0 0 6 + 1888 3853 1846 3874 1908 3874 1950 3853 1908 3853 1888 3853 +2 3 0 1 -1 7 2 0 20 0.000 0 0 -1 0 0 5 + 1846 3874 1888 3853 1846 3853 1803 3874 1846 3874 +2 3 0 1 -1 7 2 0 20 0.000 0 0 -1 0 0 5 + 1803 3874 1740 3874 1803 3853 1824 3853 1803 3874 +2 3 0 1 -1 7 2 0 20 0.000 0 0 -1 0 0 6 + 1846 3958 1866 3916 1972 3853 1992 3895 1846 3979 1846 3958 +2 3 0 1 -1 7 2 0 20 0.000 0 0 -1 0 0 5 + 1615 3937 1866 3937 1846 3958 1615 3958 1615 3937 +2 3 0 1 -1 7 2 0 20 0.000 0 0 -1 0 0 9 + 1615 3958 1594 4000 1719 4000 1846 4000 1866 4000 1992 3916 + 1992 3895 1846 3958 1615 3958 +-6 +6 600 2400 1950 3675 +2 3 0 1 -1 7 2 0 15 0.000 0 0 -1 0 0 6 + 669 2530 648 3307 1594 3307 1615 2468 1594 2468 669 2530 +2 3 0 1 -1 7 0 0 10 0.000 0 0 -1 0 0 5 + 1615 2468 1594 3307 1719 3307 1719 2509 1615 2468 +2 3 0 1 -1 7 0 0 15 0.000 0 0 -1 0 0 5 + 1762 2677 1908 2719 1908 3139 1762 3203 1762 2677 +2 3 0 1 -1 7 2 0 15 0.000 0 0 -1 0 0 6 + 732 3349 732 3412 1594 3454 1594 3371 753 3349 732 3349 +2 3 0 1 -1 7 1 0 15 0.000 0 0 -1 0 0 5 + 1594 3371 1846 3280 1846 3348 1594 3454 1594 3371 +2 3 0 1 -1 7 2 0 15 0.000 0 0 -1 0 0 5 + 732 3433 732 3559 1594 3601 1594 3454 732 3433 +2 3 0 1 -1 0 2 0 20 0.000 0 0 -1 0 0 5 + 1594 3454 732 3412 753 3433 1572 3454 1594 3454 +2 3 0 1 -1 7 2 0 8 0.000 0 0 -1 0 0 5 + 1594 3454 1594 3601 1635 3580 1635 3433 1594 3454 +2 3 0 1 -1 7 2 0 8 0.000 0 0 -1 0 0 5 + 1719 3538 1846 3475 1846 3349 1719 3391 1719 3538 +2 3 0 1 -1 7 2 0 10 0.000 0 0 -1 0 0 5 + 1635 3496 1719 3454 1719 3391 1635 3433 1635 3496 +2 3 0 1 -1 7 2 0 10 0.000 0 0 -1 0 0 5 + 1635 3580 1719 3538 1719 3475 1635 3517 1635 3580 +2 1 0 2 -1 7 2 0 8 0.000 0 0 -1 0 0 2 + 1635 3496 1719 3454 +2 1 0 2 -1 7 2 0 8 0.000 0 0 -1 0 0 2 + 1635 3517 1719 3475 +2 3 0 1 -1 7 3 0 10 0.000 0 0 -1 0 0 7 + 732 3559 732 3601 816 3601 963 3559 963 3538 816 3559 + 732 3559 +2 3 0 1 -1 7 3 0 10 0.000 1 0 -1 0 0 5 + 1490 3596 1490 3641 1594 3643 1594 3601 1490 3596 +2 3 0 1 -1 7 3 0 10 0.000 1 0 -1 0 0 5 + 1594 3643 1635 3601 1635 3580 1594 3601 1594 3643 +2 3 0 1 -1 7 3 0 10 0.000 0 0 -1 0 0 5 + 1846 3475 1846 3496 1803 3517 1803 3496 1846 3475 +2 3 0 1 -1 7 3 0 10 0.000 0 0 -1 0 0 4 + 1803 3517 1740 3517 1803 3496 1803 3517 +2 3 0 1 -1 7 4 0 15 0.000 1 0 -1 0 0 6 + 879 3307 732 3349 1594 3371 1846 3279 1762 3265 879 3307 +2 3 0 1 -1 7 0 0 10 0.000 1 0 -1 0 0 5 + 1719 2509 1719 3307 1762 3265 1762 2552 1719 2509 +3 1 0 1 -1 7 1 0 20 0.000 0 0 0 11 + 774 2656 816 2614 1488 2572 1510 2593 1530 2636 1530 3139 + 1510 3181 1467 3203 837 3203 795 3181 774 3160 + 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 + 1.000 1.000 1.000 +-6 +6 375 3675 1650 4050 +2 3 0 1 -1 7 0 0 20 0.000 0 0 -1 0 0 8 + 1207 3935 1205 3897 1229 3888 1265 3890 1264 3922 1244 3937 + 1212 3937 1207 3935 +2 3 0 1 -1 7 0 0 20 0.000 0 0 -1 0 0 8 + 1264 3939 1261 3900 1285 3892 1320 3893 1319 3925 1300 3940 + 1268 3940 1264 3939 +2 3 0 1 -1 7 0 0 20 0.000 0 0 -1 0 0 8 + 1318 3950 1315 3912 1339 3904 1374 3905 1374 3937 1355 3953 + 1322 3953 1318 3950 +2 3 0 1 -1 7 0 0 20 0.000 0 0 -1 0 0 8 + 1151 3935 1150 3897 1173 3888 1209 3890 1207 3922 1188 3937 + 1157 3937 1151 3935 +2 3 0 1 -1 7 1 0 20 0.000 0 0 -1 0 0 8 + 1169 3900 1166 3861 1190 3853 1226 3854 1224 3886 1205 3901 + 1173 3901 1169 3900 +2 3 0 1 -1 7 1 0 20 0.000 0 0 -1 0 0 8 + 1225 3904 1223 3865 1247 3857 1282 3858 1281 3891 1262 3906 + 1230 3906 1225 3904 +2 3 0 1 -1 7 1 0 20 0.000 0 0 -1 0 0 8 + 1281 3908 1279 3869 1303 3860 1338 3862 1337 3893 1318 3909 + 1286 3909 1281 3908 +2 3 0 1 -1 7 1 0 20 0.000 0 0 -1 0 0 8 + 1344 3909 1342 3870 1366 3862 1401 3863 1399 3895 1381 3911 + 1349 3911 1344 3909 +2 3 0 1 -1 7 0 0 20 0.000 0 0 -1 0 0 9 + 1214 3854 1214 3835 1233 3822 1272 3825 1272 3831 1260 3839 + 1258 3856 1211 3854 1214 3854 +2 3 0 1 -1 7 0 0 20 0.000 0 0 -1 0 0 9 + 1258 3855 1258 3836 1277 3823 1315 3826 1315 3831 1304 3839 + 1302 3857 1255 3855 1258 3855 +2 3 0 1 -1 7 0 0 20 0.000 0 0 -1 0 0 9 + 1300 3862 1300 3843 1319 3830 1359 3833 1359 3838 1346 3846 + 1344 3863 1297 3862 1300 3862 +2 3 0 1 -1 7 0 0 20 0.000 0 0 -1 0 0 9 + 1344 3863 1344 3845 1363 3831 1402 3835 1402 3839 1390 3848 + 1389 3865 1341 3863 1344 3863 +2 3 0 1 -1 7 0 0 20 0.000 0 0 -1 0 0 9 + 1387 3869 1387 3850 1406 3836 1444 3839 1444 3845 1436 3871 + 1417 3882 1383 3869 1387 3869 +2 3 0 1 -1 7 0 0 20 0.000 0 0 -1 0 0 9 + 708 3798 708 3779 727 3766 766 3769 766 3774 755 3783 + 752 3800 705 3798 708 3798 +2 3 0 1 -1 7 0 0 20 0.000 0 0 -1 0 0 9 + 747 3803 747 3784 766 3771 805 3775 805 3780 793 3788 + 791 3805 744 3803 747 3803 +2 3 0 1 -1 7 0 0 20 0.000 0 0 -1 0 0 9 + 794 3805 794 3787 813 3773 852 3777 852 3781 840 3790 + 839 3807 791 3805 794 3805 +2 3 0 1 -1 7 0 0 20 0.000 0 0 -1 0 0 9 + 832 3810 832 3792 850 3778 889 3781 889 3787 878 3795 + 876 3812 828 3810 832 3810 +2 3 0 1 -1 7 0 0 20 0.000 0 0 -1 0 0 9 + 876 3812 876 3793 894 3780 934 3784 934 3788 921 3797 + 919 3814 872 3812 876 3812 +2 3 0 1 -1 7 0 0 20 0.000 0 0 -1 0 0 9 + 919 3816 919 3797 938 3784 977 3787 977 3792 965 3800 + 964 3817 916 3816 919 3816 +2 3 0 1 -1 7 0 0 20 0.000 0 0 -1 0 0 9 + 962 3816 962 3797 981 3784 1019 3787 1019 3792 1008 3800 + 1006 3817 959 3816 962 3816 +2 3 0 1 -1 7 0 0 20 0.000 0 0 -1 0 0 9 + 1001 3819 1001 3800 1019 3787 1058 3790 1058 3795 1047 3803 + 1045 3820 997 3819 1001 3819 +2 3 0 1 -1 7 0 0 20 0.000 0 0 -1 0 0 9 + 1049 3819 1049 3800 1067 3787 1106 3790 1106 3795 1094 3803 + 1092 3820 1045 3819 1049 3819 +2 3 0 1 -1 7 0 0 20 0.000 0 0 -1 0 0 9 + 661 3822 661 3803 679 3790 718 3793 718 3799 706 3807 + 704 3824 658 3822 661 3822 +2 3 0 1 -1 7 0 0 20 0.000 0 0 -1 0 0 9 + 704 3831 704 3812 724 3799 762 3802 762 3807 750 3816 + 748 3832 702 3831 704 3831 +2 3 0 1 -1 7 0 0 20 0.000 0 0 -1 0 0 9 + 748 3834 748 3816 768 3802 806 3805 806 3810 794 3819 + 793 3835 746 3834 748 3834 +2 3 0 1 -1 7 0 0 20 0.000 0 0 -1 0 0 9 + 789 3838 789 3819 808 3805 847 3808 847 3814 835 3822 + 833 3839 786 3838 789 3838 +2 3 0 1 -1 7 0 0 20 0.000 0 0 -1 0 0 9 + 832 3840 832 3822 850 3808 889 3812 889 3817 878 3825 + 876 3842 828 3840 832 3840 +2 3 0 1 -1 7 0 0 20 0.000 0 0 -1 0 0 9 + 874 3842 874 3824 893 3810 932 3814 932 3819 919 3827 + 918 3844 871 3842 874 3842 +2 3 0 1 -1 7 0 0 20 0.000 0 0 -1 0 0 9 + 916 3846 916 3827 934 3814 974 3817 974 3822 962 3831 + 960 3847 913 3846 916 3846 +2 3 0 1 -1 7 0 0 20 0.000 0 0 -1 0 0 9 + 961 3846 961 3828 980 3814 1018 3817 1018 3823 1007 3831 + 1005 3847 957 3846 961 3846 +2 3 0 1 -1 7 0 0 20 0.000 0 0 -1 0 0 9 + 1005 3849 1005 3831 1023 3817 1062 3821 1062 3826 1050 3834 + 1049 3851 1002 3849 1005 3849 +2 3 0 1 -1 7 0 0 20 0.000 0 0 -1 0 0 9 + 1049 3851 1049 3832 1067 3819 1107 3823 1107 3828 1095 3836 + 1093 3853 1045 3851 1049 3851 +2 3 0 1 -1 7 1 0 20 0.000 0 0 -1 0 0 8 + 656 3866 655 3827 678 3819 714 3820 713 3853 693 3868 + 662 3868 656 3866 +2 3 0 1 -1 7 1 0 20 0.000 0 0 -1 0 0 8 + 700 3869 698 3831 722 3822 757 3824 755 3856 737 3871 + 704 3871 700 3869 +2 3 0 1 -1 7 1 0 20 0.000 0 0 -1 0 0 8 + 744 3876 741 3838 766 3829 801 3831 799 3862 781 3878 + 748 3878 744 3876 +2 3 0 1 -1 7 1 0 20 0.000 0 0 -1 0 0 8 + 792 3882 790 3842 814 3834 849 3835 848 3868 829 3883 + 797 3883 792 3882 +2 3 0 1 -1 7 1 0 20 0.000 0 0 -1 0 0 8 + 832 3884 830 3846 854 3837 889 3839 887 3870 869 3886 + 836 3886 832 3884 +2 3 0 1 -1 7 1 0 20 0.000 0 0 -1 0 0 8 + 880 3890 879 3851 902 3842 938 3844 936 3876 918 3892 + 886 3892 880 3890 +2 3 0 1 -1 7 1 0 20 0.000 0 0 -1 0 0 8 + 932 3893 930 3854 954 3846 989 3847 988 3879 969 3895 + 936 3895 932 3893 +2 3 0 1 -1 7 1 0 20 0.000 0 0 -1 0 0 8 + 982 3895 981 3856 1004 3847 1040 3849 1038 3882 1019 3897 + 988 3897 982 3895 +2 3 0 1 -1 7 1 0 20 0.000 0 0 -1 0 0 8 + 1025 3898 1023 3860 1047 3851 1082 3853 1080 3885 1062 3900 + 1029 3900 1025 3898 +2 3 0 1 -1 7 1 0 20 0.000 0 0 -1 0 0 8 + 618 3861 616 3822 640 3814 675 3816 674 3847 655 3862 + 623 3862 618 3861 +2 3 0 1 -1 7 1 0 20 0.000 0 0 -1 0 0 8 + 572 3888 571 3849 594 3840 630 3842 629 3875 609 3890 + 578 3890 572 3888 +2 3 0 1 -1 7 0 0 20 0.000 0 0 -1 0 0 9 + 609 3888 609 3869 629 3856 667 3860 667 3864 655 3873 + 654 3890 607 3888 609 3888 +2 3 0 1 -1 7 0 0 20 0.000 0 0 -1 0 0 7 + 654 3893 984 3934 988 3898 664 3866 652 3882 652 3888 + 654 3893 +2 3 0 1 -1 7 0 0 20 0.000 0 0 -1 0 0 9 + 986 3931 986 3913 1004 3900 1043 3902 1043 3908 1032 3916 + 1029 3933 982 3931 986 3931 +2 3 0 1 -1 7 5 0 15 0.000 0 0 -1 0 0 9 + 429 3871 683 3743 1551 3816 1576 3831 1573 3840 1426 3990 + 427 3883 427 3869 429 3871 +2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 3 + 423 3910 1434 4014 1575 3875 +2 3 0 0 -1 7 5 0 10 0.000 0 0 -1 0 0 8 + 429 3885 429 3928 1430 4050 1580 3895 1576 3831 1423 3990 + 425 3882 429 3885 +-6 +-6 +6 4050 3000 7500 3750 +2 1 0 1 0 0 0 0 -1 0.000 0 0 -1 0 0 4 + 7500 3000 5430 3000 6120 3690 4050 3690 +-6 +# TB Data +6 8025 6000 9000 7425 +5 1 0 1 -1 -1 0 0 -1 0.000 0 1 0 0 8490.000 5700.000 8040 6300 8490 6450 8940 6300 +5 1 0 1 -1 -1 0 0 -1 0.000 0 1 0 0 8490.000 6600.000 8040 7200 8490 7350 8940 7200 +1 2 0 1 -1 -1 0 0 -1 0.000 1 0.0000 8490 6150 450 150 8040 6000 8940 6300 +2 1 0 1 -1 -1 0 0 -1 0.000 0 0 0 0 0 2 + 8940 6225 8940 7200 +2 1 0 1 -1 -1 0 0 -1 0.000 0 0 0 0 0 2 + 8040 6225 8040 7200 +4 1 -1 0 0 2 12 0.0000 6 135 270 8490 6675 TB\001 +4 1 -1 0 0 2 12 0.0000 6 135 405 8490 7275 Data\001 +-6 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 1 2 + 0 0 1.00 60.00 120.00 + 0 0 1.00 60.00 120.00 + 2025 3075 2475 3075 +2 4 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 5 + 3750 4650 3750 2100 2550 2100 2550 4650 3750 4650 +2 4 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 5 + 9075 4650 9075 2100 7875 2100 7875 4650 9075 4650 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 1 2 + 0 0 3.00 60.00 120.00 + 8400 4800 8400 6000 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 1 2 + 0 0 3.00 60.00 120.00 + 8250 4800 8250 6000 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 1 2 + 0 0 3.00 60.00 120.00 + 8100 4800 8100 6000 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 1 2 + 0 0 3.00 60.00 120.00 + 8850 4800 8850 6000 +2 4 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 5 + 12000 4500 12000 3975 8175 3975 8175 4500 12000 4500 +4 0 0 50 0 2 15 0.0000 4 30 360 8475 5550 ......\001 +4 0 0 50 0 0 20 0.0000 4 195 570 2625 3375 VisIt\001 +4 0 0 50 0 0 20 0.0000 4 195 570 7950 3375 VisIt\001 +4 0 0 50 -1 2 16 0.0000 4 225 1410 9375 4275 H5xxx plugin\001 +4 0 0 50 0 0 20 0.0000 4 255 1650 6450 5550 n-way parallel\001 diff --git a/doc/2006-Berkeley-Visit/SAP-Combined-v6.doc b/doc/2006-Berkeley-Visit/SAP-Combined-v6.doc new file mode 100644 index 0000000..3304214 Binary files /dev/null and b/doc/2006-Berkeley-Visit/SAP-Combined-v6.doc differ diff --git a/doc/2006-Berkeley-Visit/aqpsi2006mar22.pdf b/doc/2006-Berkeley-Visit/aqpsi2006mar22.pdf new file mode 100644 index 0000000..8fd751c Binary files /dev/null and b/doc/2006-Berkeley-Visit/aqpsi2006mar22.pdf differ diff --git a/doc/2006-Berkeley-Visit/hdf.ps b/doc/2006-Berkeley-Visit/hdf.ps new file mode 100644 index 0000000..8b613b8 --- /dev/null +++ b/doc/2006-Berkeley-Visit/hdf.ps @@ -0,0 +1,1994 @@ +%!PS-Adobe-3.0 +%XpPrinter-Model: Generic PostScript Printer +%%Creator: Wind/U Xprinter Version 3.1.0 (linux) (Compile Date: Aug 27 1998 18:14:52) (jshalf) +%%Title: +%%CreationDate:Fri Oct 29 15:14:31 1999 +%%DocumentSuppliedResources: (atend) +%%Pages: (atend) +%%LanguageLevel: 1 +%%EndComments +%%BeginProlog +/XPrinterDict dup 200 dict def load begin +/bdf{bind def}bind def +/ldf{load def}bdf +/m/rmoveto ldf +/l2/rlineto ldf +/gs/gsave ldf +/gr/grestore ldf +/np/newpath ldf +/sv/save ldf +/rs/restore ldf +/tl/translate ldf +/mt/matrix ldf +/l/length ldf +/z/dict ldf +/d/def ldf +/e/exch ldf +/a/array ldf +/ac/arc ldf +/an/arcn ldf +/b/begin ldf +/pi/putinterval ldf +/t/moveto ldf +/lo/lineto ldf +/st/stroke ldf +/p/add ldf +/s/sub ldf +/c/mul ldf +/v/div ldf +/cp/closepath ldf +/sl/scale ldf +/ff/findfont ldf +/mf/makefont ldf +/sf/setfont ldf +/f/fill ldf +/sw/setlinewidth ldf +/sc/setlinecap ldf +/sj/setlinejoin ldf +/sg/setgray ldf +/ski/ISOLatin1Encoding where{pop true}{false}ifelse d +/fcd{ff dup l z b{1 index /FID ne{d}{pop pop}ifelse}forall /Encoding ISOLatin1Encoding d currentdict end}bdf +/fdf{e definefont pop}bdf +/sdt 22 z d +sdt b +/tpm mt d +/tpt mt d +/tps mt d +/cps +{/pr2 e cvlit d +/pr1 e cvlit d +/npc pr1 l pr2 l p a d +npc 0 pr1 pi +npc pr1 l pr2 pi +npc cvx +}bdf +/rmx mt d +/frs +{72 0 rmx defaultmatrix dtransform +/yres e d /xres e d +xres dup c yres dup c p sqrt +}bdf +end +/sus +{sdt b +/spf e d +/sag e d +/ces e d +300 ces v sag /spf load +setscreen +end +}bdf +/spt 18 z d +spt b +/bts +{/ybit e d /xbit e d +/byv bstr ybit bwd c xbit 8 idiv +p get d +/mask 1 7 xbit 8 mod s bitshift d +byv mask and 0 ne +}bdf +end +/bsf +{spt b +/y e d /x e d +/xix x 1 p 2 v bpx c cvi d +/yix y 1 p 2 v bpy c cvi d +xix yix bts +{/onb onb 1 p d 1} +{/ofb ofb 1 p d 0} +ifelse +end +}bdf +/setpattern +{spt b +/csz e d +/agl e d +/bwd e d +/bpy e d +/bpx e d +/bstr e d +/onb 0 d /ofb 0 d +csz agl /bsf load +sus +{ }settransfer +ofb ofb onb p v setgray +end +}bdf +/picstr 500 string d +/inch{72 c}bdf +/DP{gs np 0 360 ac cp f gr}bdf +/DL{gs np t lo st gr}bdf +/RGB{setrgbcolor}bdf +/C{gs t show gr}bdf + +/ren 12 z d +/REn +{ren b +/nwc e d +/nwf e d +/bft e d +/bfd bft ff d +/nf bfd maxlength z d +bfd +{e dup /FID ne +{dup /Encoding eq +{e dup l a copy +nf 3 1 roll put} +{e nf 3 1 roll put} +ifelse +} +{pop pop} +ifelse +}forall +nf /FontName nwf put +nwc aload pop +nwc l 2 idiv +{nf /Encoding get 3 1 roll put} +repeat +nwf nf definefont pop +end +}d +/rots{gs t rotate show gr}bdf + +%%EndProlog +%%BeginSetup +%%BeginFeature: *PageRegion Letter + letter +%%EndFeature +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +/#copies 1 def +sv +1.00 -1.00 sl +18.00 -774.00 tl +%%EndPageSetup +%%BoundingBox: (atend) +gs +gr gs +0 0 t 0 755.04 lo 574.80 755.04 lo 574.80 0 lo cp clip np +0.000 0.000 0.000 RGB +ski{/Helvetica-Bold fcd /Helvetica-Bold-ISO8859-1 fdf}if +/Helvetica-Bold-ISO8859-1 ff [18.00 0 0 -18.00 0 0] mf sf +<4d6f7469766174696f6e> 72.24 71.28 C +gr gs +0 0 t 0 755.04 lo 574.80 755.04 lo 574.80 0 lo cp clip np +0.000 0.000 0.000 RGB +0.240 sw +[] 0 setdash +0 sc +0 sj +gs np 72.24 72.96 t 72.24 74.16 lo 162.48 74.16 lo 162.48 72.96 lo cp f st gr +gr gs +0 0 t 0 755.04 lo 574.80 755.04 lo 574.80 0 lo cp clip np +0.000 0.000 0.000 RGB +ski{/Times-Roman fcd /Times-Roman-ISO8859-1 fdf}if +/Times-Roman-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<48444635206973206120766572792067656e6572616c2073656c662d64657363726962696e67206461746120666f726d617420666f722073746f72696e6720636f6d706c65782064617461> 108.72 86.16 C +<6f626a65637473206f6e206469736b2e2020486f77657665722c207468652067726f7570696e6720616e642061747472696275746520737472756374757265732061726520736f2067656e6572616c20776974686f7574> 72.24 99.60 C +<736f6d65206e616d696e6720616e642073747275637475726520636f6e76656e74696f6e20666f72207468652067726f75707320616e642061747472696275746573207573656420746f206465736372696265> 72.24 113.04 C +<73696d756c6174696f6e2064617461736574732c20736369656e74697374732077696c6c20626520756e61626c6520746f20656173696c792065786368616e676520696e666f726d6174696f6e2077697468206f6e652d> 72.24 126.48 C +<616e6f746865722e2020476976656e207468652063757272656e742067656e6572616c697479206f6620484446352c207265616465727320776f756c64206e65656420746f2062652066617220746f6f> 72.24 139.92 C +<636f6d706c6963617465642e> 72.24 153.36 C +<5468697320646f63756d656e742077696c6c20666972737420646573637269626520766172696f7573206461746120736368656d6173207573656420696e2073696d756c6174696f6e20636f646573> 108.72 166.80 C +<7768696368206d75737420626520737570706f727465642062792074686973206879706f746865746963616c2022536369656e7469666963204461746122204150492e2020546869732077696c6c206265> 72.24 180.24 C +<666f6c6c6f77656420627920612070726f706f73656420696d706c656d656e6174696f6e2073706563696669636174696f6e20776869636820697320612063616e6f6e6963616c20736574206f662067726f7570696e67> 72.24 193.68 C +<616e64206e616d696e6720636f6e76656e74696f6e7320746f2073746f72652062617369632064617461736574207479706573207468617420617265206f6620696e74657265737420746f207468652073696d756c6174696f6e> 72.24 207.12 C +<736369656e63657320636f6d6d756e69747920696e20484446352066696c65732e2020496e636c75646564206172652064617461206465736372697074696f6e7320666f7220737472756374757265642067726964732c> 72.24 220.56 C +<66696e69746520656c656d656e742c20616e6420414d522064617461736574732e204e6f7420696e636c756465642061726520666f726d61742073706563696669636174696f6e7320666f722073656e736f7220646174612c> 72.24 234.00 C +<47656f6772617068696320446174612028474953292c20616e64206368656d697374727920646174612074797065732e20204368656d6973747279206461746120287768696368206d617920696e636c756465> 72.24 247.44 C +<6368656d6963616c20626f6e64696e672073747275637475726573206f72206372797374616c6f677261706869632064617461292c2047656f67726170686963616c204461746120287768696368206d6179> 72.24 261.12 C +<68617665207665727920737472616e67652070726f6a656374696f6e20636f6f7264696e6174652073797374656d73206c696b65206d65726361746f72292c20616e642073656e736f72206461746120287768696368206973> 72.24 274.56 C +<6f6674656e2073636174746572206461746120776974682061206c6f74206f662063616c6962726174696f6e20696e666f726d6174696f6e292073686f756c642070726f6261626c7920626520696e636c7564656420696e> 72.24 288.00 C +<616e792066696e616c2073706563696669636174696f6e2c20627574204920646f206e6f7420686176652074686520657870657274697365206e656365737361727920696e2074686f73652072657370656374697665206669656c6473> 72.24 301.44 C +<746f20737567676573742073756368206120737065632e20204920747269656420746f2064657369676e2074686520636f6e766574696f6e7320666f722067726f7570696e6720746f2062652061626c6520746f> 72.24 314.88 C +<6163636f6d6d6f64617465206e6577206461746120736368656d6173206173207468657920617269736520776974686f757420726571756972696e6720612072657772697465206f66206578697374696e67> 72.24 328.32 C +<736368656d61732e> 72.24 341.76 C +<496e746572737065727365642077697468207468657365206465736372697074696f6e732077696c6c20626520736f6d6520736f6d652067656e6572616c204170706c69636174696f6e> 108.72 355.20 C +<50726f6772616d6d696e6720496e746572666163652067756964656c696e657320776869636820617265206261736564206f6e206d79207061737420657870657269656e63652077726974696e67204844462d> 72.24 368.64 C +<6261736564206170706c69636174696f6e7320616e642068656c70696e67206f7468657273206275696c642048444620726561646572732f7772697465727320666f722074686520706173742033> 72.24 382.08 C +<67656e65726174696f6e73206f66204844462e20205468657265206e6565647320746f2062652061206c6f74206f6620617474656e74696f6e20746f2073696d706c696679696e67207468652022736369656e74666963> 72.24 395.52 C +<657874656e73696f6e732220746f2074686520484446352041504920736f2074686174207068797369636973747320616e6420656e67696e656572732077696c6c2062652077696c6c696e6720746f207573652069742e20204279> 72.24 408.96 C +<66756c6c792073706563696679696e67207468652063616e6f6e6963616c206c61796f7574207573696e67206665617475726573206f66207468652063757272656e742048444635204150492c2070656f706c652077686f> 72.24 422.40 C +<72657175697265206d6178696d756d20666c65786162696c6974792028435320616e642056697375616c697a6174696f6e2070726f6772616d6d657273292063616e207374696c6c20686176652066756c6c> 72.24 435.84 C +<61636365737320746f2069742e2020486f77657665722c20746865206d616a6f72697479206f6620736369656e746973747320287468652070656f706c65207765206e65656420746f2072656375697420746f207573652074686973> 72.24 449.28 C +<415049292c2077696c6c2072657175697265206d6f72652073696d706c6963697479207468726f75676820616e20415049207468617420656e666f7263657320746869732072617468657220696e766f6c766564> 72.24 462.72 C +<73706563696669636174696f6e20666f722064617461206f72646572696e67206f6e206469736b2e> 72.24 476.16 C +/Helvetica-Bold-ISO8859-1 ff [18.00 0 0 -18.00 0 0] mf sf +<4261736963205072696e6369706c6573> 72.24 509.52 C +0.240 sw +[] 0 setdash +0 sc +0 sj +gs np 72.24 511.20 t 72.24 512.40 lo 211.92 512.40 lo 211.92 511.20 lo cp f st gr +/Times-Roman-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<4f6e652070726f626c656d20776974682048444634206f626a656374206e616d696e6720776173207468617420697473206170706c69636174696f6e2077617320696e636f6e73697374656e742e> 108.00 524.40 C +<496e20736f6d652063617365732c2070656f706c6520776f756c64206e616d65206f626a6563747320696e20612066696c65206261736564206f6e206e616d65206f662074686520636f6d706f6e656e742074686174> 72.24 537.84 C +<7468657920726570726573656e74656420287375636820617320227072657373757265222c202264656e73697479222c202274656d7065726174757265222e2e2e292e2020486f77657665722c206f74686572732075736564> 72.24 551.28 C +<697420746f2073746f726520657874726120696e666f726d6174696f6e2061626f75742074686569722064617461206c696b6520697473206e657374696e6720696e20616e20414d52206869657261726368792e2020536f6d65> 72.24 564.72 C +<69676e6f72656420746865206e616d6520706172616d6574657220656e746972656c79207768696368206361757365732048444620746f2063726561746520697473206f776e206e616d65732022646174617365742d> 72.24 578.16 C +<31222c2022646174617365742d32222c206574632e2e2e292e202042656361757365206f6620746869732c20612076697375616c697a6174696f6e20726561646572204755492063616e6e6f7420646570656e64206f6e20746865> 72.24 591.60 C +<6e616d65206669656c6420666f7220616e7920696e666f726d6174696f6e206f662076616c75652e202054686520226e616d6522206669656c6420666f7220616e204844463520736369656e74696669632064617461> 72.24 605.04 C +<73706563696669636174696f6e2073686f756c6420626520726571756972656420616e642069742073686f756c642068617665206f6e6c79206f6e65206d65616e696e673b207468652074797065206f6620746865> 72.24 618.72 C +<70726f70657274792073746f72656420282264656e73697479222c202274656d7065726174757265222c206574632e2e2e292e> 72.24 632.16 C +<4c696b65776973652c207468652074696d6520617370656374206f66206f6c6465722048444620646174617365742041504927732077617320616c7761797320616d626967756f75732e> 108.00 645.60 C +<536f6d652070656f706c652073746f72656420636f6e73656375746976652074696d65737465707320617320636f6e736563757469766520646174617365747320696e20612066696c652e2020456163682066696c65> 72.24 659.04 C +<636f6e7461696e6564207468652074696d657365726965732f65766f6c7574696f6e206f6620646966666572656e7420636f6d706f6e656e7473202869652e20796f752764206861766520612070726573737572652e686466> 72.24 672.48 C +<66696c6520746f2073746f7265207468652065766f6c7574696f6e206f6620746865207072657373757265206669656c64292e20204f746865722070656f706c652063686f736520746f2073746f726520616c6c206f6620746865> 72.24 685.92 C +<636f6d706f6e656e74732066726f6d206120706172746963756c61722074696d657374657020696e20612073696e676c652066696c6520616e642068617665206f6e652066696c65207065722074696d65737465702e2020536f> 72.24 699.36 C +gr +%%PageTrailer +rs +%%BoundingBox: 18 72 522 774 +showpage +%%BeginSetup +%%BeginFeature: *PageRegion Letter + letter +%%EndFeature +%%EndSetup +%%Page: 2 2 +%%BeginPageSetup +/#copies 1 def +sv +1.00 -1.00 sl +18.00 -774.00 tl +%%EndPageSetup +%%BoundingBox: (atend) +gs +gr gs +0 0 t 0 755.04 lo 574.80 755.04 lo 574.80 0 lo cp clip np +0.000 0.000 0.000 RGB +ski{/Times-Roman fcd /Times-Roman-ISO8859-1 fdf}if +/Times-Roman-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<227072657373757265222c202274656d7065726174757265222c20616e64202264656e736974792220776f756c642062652073746f72656420636f6e73656375746976656c7920696e20612066696c65> 72.24 64.80 C +<636f6e7461696e696e67207468652066697273742074696d657374657020282274696d653030302e68646622292e202050726f7065727469657320666f7220746865206e6578742074696d65737465702073746f72656420696e> 72.24 78.24 C +<746865206e65787420636f6e73656375746976656c79206e756d62657265642066696c6520282274696d653030312e68646622292e20205468697320636f6d62696e656420776974682074686520616d62696775697479> 72.24 91.68 C +<696e2074686520757365206f6620746865206461746173657420226e616d6522206669656c642c20686173206d616465207468696e6773207665727920646966666963756c7420666f722076697375616c697a6174696f6e> 72.24 105.12 C +<73797374656d2047554927732e2020536f2073706563696669636174696f6e206f66202274696d65222073686f756c6420626520726571756972656420666f7220646174617365747320696e206164646974696f6e20746f> 72.24 118.56 C +<746865206461746173657420226e616d65222e202041742061206d696e696d756d2c20746865204150492073686f756c642062652061626c6520746f2073656172636820666f72206461746173657473206261736564> 72.24 132.00 C +<656e746972656c79206f6e207468656972202274696d652220286576656e20612074696d6520696e74657276616c2920616e6420226e616d6522206669656c64732e2020496e207468697320636173652c2073656c656374696f6e206f66> 72.24 145.44 C +<64617461736574732077696c6c20626520756e616d626967756f7573207265676172646c657373206f662077686963682073746f7261676520636f6e76656e74696f6e2069732063686f73656e20627920746865> 72.24 158.88 C +<757365722e20205468697320776f756c6420676f2061206c6f6e672077617920746f776172647320737570706f7274696e67206d6f726520736f70686973746963617465642076697375616c697a6174696f6e> 72.24 172.32 C +<73797374656d2047554927732e> 72.24 185.76 C +ski{/Helvetica-Bold fcd /Helvetica-Bold-ISO8859-1 fdf}if +/Helvetica-Bold-ISO8859-1 ff [18.00 0 0 -18.00 0 0] mf sf +<4465736372697074696f6e73206f6620536369656e7469666963204461746120536368656d6173> 72.24 219.36 C +gr gs +0 0 t 0 755.04 lo 574.80 755.04 lo 574.80 0 lo cp clip np +0.000 0.000 0.000 RGB +0.240 sw +[] 0 setdash +0 sc +0 sj +gs np 72.24 221.04 t 72.24 222.24 lo 417.84 222.24 lo 417.84 221.04 lo cp f st gr +/Times-Roman-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<54687265652066756e64616d656e74616c206461746174797065732077686963682061726520636f6d6d6f6e6c79206465616c74207769746820696e20736369656e74696669632073696d756c6174696f6e7320617265> 72.24 234.00 C +<7374727563747572656420677269647320286d756c746964696d656e73696f6e616c20726567756c617220617272617973292c2066696e69746520656c656d656e742064617461202846454d292c20616e64> 72.24 247.44 C +<68696572617263686963616c204164617074697665204d65736820526566696e656d656e742028414d52292e20> 72.24 261.12 C +<20> 309.12 261.12 C +<53747275637475726564204772696473> 72.24 288.00 C +gs np 72.24 289.20 t 72.24 289.92 lo 152.16 289.92 lo 152.16 289.20 lo cp f st gr +/Times-Roman-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<537472756374757265642067726964206461746120636f6e7461696e7320626f74682061> 72.24 301.44 C +gr gs +0 0 t 0 755.04 lo 574.80 755.04 lo 574.80 0 lo cp clip np +0.000 0.000 0.000 RGB +ski{/Times-Italic fcd /Times-Italic-ISO8859-1 fdf}if +/Times-Italic-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<206c6f676963616c207368617065> 243.84 301.44 C +/Times-Roman-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<20616e642061> 311.28 301.44 C +<20> 340.08 301.44 C +/Times-Italic-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<706879736963616c207368617065> 343.20 301.44 C +/Times-Roman-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<2e2020546865> 414.00 301.44 C +<20> 442.08 301.44 C +/Times-Italic-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<6c6f676963616c> 445.20 301.44 C +<7368617065> 72.24 314.88 C +/Times-Roman-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<2069732068616e646c6564206279204844463520696e7472696e736963616c6c7920617320746865204835532028736861706529206f662074686520646174617365742e2020486f77657665722c20746865> 100.08 314.88 C +<636f6e76656e74696f6e7320666f722067726f7570207374727563747572657320636f6e7461696e696e672074686520706879736963616c207368617065206d6179206469666665722067726561746c792066726f6d> 72.24 328.32 C +<746865206c6f676963616c207368617065206f6620746865206d656d6f727920696d61676520616e642077696c6c207265717569726520736f6d652073706563696669636174696f6e20616e64206d757374206265> 72.24 341.76 C +<646566696e656420696e646570656e64656e746c792066726f6d20746865206c6f676963616c20636f6f7264696e617465732e2020466f7220696e7374616e636520796f752063616e206861766520616e206172726179> 72.24 355.20 C +<776974682032206c6f676963616c2064696d656e73696f6e7320746f20696e6465782069747320656c656d656e747320696e206d656d6f72792028746865> 72.24 368.64 C +<20> 375.84 368.64 C +/Times-Italic-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<6c6f676963616c207368617065> 378.96 368.64 C +/Times-Roman-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<292c20627574206974> 443.28 368.64 C +<64657363726962657320612063656c6c2d63656e7465726564206d656d6272616e6520656d626564656420696e2033442073706163652028746865> 72.24 382.08 C +<20> 374.40 382.08 C +/Times-Italic-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<706879736963616c207368617065> 377.52 382.08 C +/Times-Roman-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<292e2020536f2065616368> 448.32 382.08 C +<656c656d656e74206f66207468652064617461736574206d75737420686176652061203320636f6f7264696e617465732028782c20792c20616e64207a20696e2063617274657369616e20737061636529> 72.24 395.52 C +<6173736f636961746564207769746820697420616e6420746865206461746120636f6f7264696e61746573206c696e652075702077697468207468652063656c6c2d63656e74657273206f6620746865206772696420726174686572> 72.24 408.96 C +<7468616e2074686520677269642076657274696365732e20204d616e7920646174612073746f7261676520736368656d6573206465616c2077697468207468697320627920666f7263696e67207468652073746f72616765206f66> 72.24 422.40 C +<6578706c6963697420636f6f7264696e6174657320666f72206576657279206c6f676963616c206461746120656c656d656e742073746f726564206f6e206469736b2e2020486f77657665722c2073746f72696e6720746865> 72.24 435.84 C +<636f6f7264696e61746573206578706c696369746c79206973207665727920636f73746c7920696e207465726d73206f66206469736b20737061636520616e6420776f756c6420726573756c7420696e2061> 72.24 449.28 C +<7369676e69666963616e7420706572666f726d616e63652070656e616c74792e2020546865206d6f737420636f6d7061637420706f737369626c65206461746120726570726573656e746174696f6e> 72.24 462.72 C +<617661696c61626c652073686f756c6420626520757365642e2020547261646974696f6e616c6c79207468697320686173206d65616e20746861742c2073747275637475726564206772696420636f6f7264696e6174657320617265> 72.24 476.16 C +<73746f726564207573696e67203320646966666572656e7420736368656d617320646570656e64696e67206f6e20686f7720726567756c61722074686520636f6f7264696e61746520646174612069732e202054686973206973> 72.24 489.60 C +<736c696768746c7920636f756e74657220746f20736f6d6520766563746f722d62756e646c652d6c696b6520736368656d61732c206275742049207468696e6b206974206973206e6f7420656e746972656c79> 72.24 503.04 C +<696e636f6d70617461626c652073696e636520796f752063616e20616c776179732067656e657261746520746865206578706c6963697420636f6f7264696e617465732066726f6d20746865206d6f7265> 72.24 516.48 C +<636f6d70616374206469736b20726570726573656e746174696f6e2e2020546865207374727563747572656420646174612073746f7261676520736368656d617320617265> 72.24 529.92 C +<2d756e69666f726d3a2020646566696e6520626f756e64696e6720626f7820666f72207468652064617461736574> 130.32 557.28 C +<2d72656374696c696e6561723a2020646566696e65206564676520636f6f7264696e6174657320666f7220746865206461746173657420286a757374206c696b652044465344292e> 130.32 570.72 C +<2d6972726567756c61723a2020646566696e65206578706c6963697420636f6f7264696e6174657320666f72206561636820706f696e742e> 130.32 584.16 C +<466f722065616368206f6620746865736520736368656d61732c20796f752073686f756c642062652061626c6520746f207265717565737420646174612061626f757420746865697220636f6f7264696e6174657320696e2061> 72.24 611.04 C +<76617269657479206f66206d616e6e6572732074686f7567682e20205468652074797065206f6620696e666f726d6174696f6e2070726f766964656420696e20726573706f6e736520746f20612072657175657374> 72.24 624.72 C +<61626f757420746865206461746120636f6f7264696e617465732073686f756c64206e6f74206265206c696d6974656420746f2074686520706172746963756c61722074797065206f6620636f6f7264696e617465> 72.24 638.16 C +<73746f7261676520736368656d6120757365642e> 72.24 651.60 C +gr gs +0 0 t 0 755.04 lo 574.80 755.04 lo 574.80 0 lo cp clip np +0.000 0.000 0.000 RGB +ski{/Times-Bold fcd /Times-Bold-ISO8859-1 fdf}if +/Times-Bold-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<436f6f7264696e617465205265717565737473> 108.72 678.96 C +/Times-Roman-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<2d756e69666f726d3a2063616e207265717565737420626f756e64696e6720626f782c20656467652d636f6f7264696e617465732c20616e642066756c6c20636f6f7264696e617465732d> 129.60 692.40 C +gr +%%PageTrailer +rs +%%BoundingBox: 18 79 521 774 +showpage +%%BeginSetup +%%BeginFeature: *PageRegion Letter + letter +%%EndFeature +%%EndSetup +%%Page: 3 3 +%%BeginPageSetup +/#copies 1 def +sv +1.00 -1.00 sl +18.00 -774.00 tl +%%EndPageSetup +%%BoundingBox: (atend) +gs +gr gs +0 0 t 0 755.04 lo 574.80 755.04 lo 574.80 0 lo cp clip np +0.000 0.000 0.000 RGB +ski{/Times-Roman fcd /Times-Roman-ISO8859-1 fdf}if +/Times-Roman-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<7065722d766572746578> 138.72 64.80 C +<2d72656374696c696e6561723a2063616e207265717565737420656467652d636f6f7264696e6174657320616e642066756c6c20636f6f7264696e61746573206f7220626f756e64696e67> 129.60 78.24 C +<626f78> 138.72 91.68 C +<2d6972726567756c61723a202063616e207265717565737420626f756e64696e6720626f7820616e6420636f6f7264696e617465732d7065722d7665727465782c20627574> 129.60 105.12 C +<72657175657374696e67206564676520636f6f7264696e6174657320697320616e206572726f72> 138.72 118.56 C +<496e206164646974696f6e20746f20646566696e696e672074686520706879736963616c20636f6f7264696e61746573206f662074686520646174617365742c20796f75206d7573742062652061626c6520746f> 107.28 145.44 C +<646566696e65207468652063656e746572696e6720666f722074686520646174612077697468207265737065637420746f2074686520636f6f7264696e6174652073797374656d202863656c6c2d63656e74657265642c> 72.24 158.88 C +<7665727465782d63656e74657265642c206f722074686520766172696f757320666f726d73206f6620666163652d63656e746572696e67292e2020497420686173206265656e206f6620677265617420636f6e6365726e20746f> 72.24 172.32 C +<666c7569642064796e616d6963732072657365617263686572732074686174206d6f7374206461746120666f726d61742073706563696669636174696f6e732028696e636c7564696e67204844462d534420616e64> 72.24 185.76 C +<4446534429206f7665726c6f6f6b207468697320617474726962757465207768696368207468657920636f6e736964657220612066756e64616d656e74616c20666561747572652e20204f6e652077617920746f20646f> 72.24 199.20 C +<7468697320697320746f2070726f76696465206f66667365747320696e20782c792c7a20746f20646566696e6520686f7720746865206461746120697320616c69676e656420746f2074686520677269642e2020546869732063616e206265> 72.24 212.64 C +<67656e6572616c697a656420746f2061726269747261727920636f6f7264696e6174652073797374656d7320736f206c6f6e6720617320746865206e65696768626f722d636f6e6e6563746976697479206973> 72.24 226.32 C +<756e69666f726d202877686963682073686f756c6420626520746865206361736520666f722073747275637475726564206772696473292e> 72.24 239.76 C +<46696e616c6c792c207468652061637475616c206461746120746861742069732073746f72656420746f206469736b206d7573742062652061626c6520746f2068616e646c6520766563746f7220616e64> 107.28 253.20 C +<70657268617073206576656e2074656e736f72206461746174797065732028766563746f72732061726520686967686572207072696f72697479207468616e2074656e736f7273292e20204f6e65206f6620746865> 72.24 266.64 C +<70726f626c656d7320776974682070726576696f75732067656e65726174696f6e73206f66204844462077617320746865206c61636b206f6620612073706563696669636174696f6e20666f72206465616c696e67> 72.24 280.08 C +<6578706c696369746c79207769746820766563746f7220646174612028666f72206578616d706c6520666c6f7720726174657320696e2074686520782c20792026207a20646972656374696f6e73292e2020536f6d65> 72.24 293.52 C +<70656f706c6520776f756c6420657870726573732074686520766563746f722061732033207365706172617465207363616c61722064617461736574732077686572656173206f746865727320776f756c64207061636b> 72.24 306.96 C +<74686520766563746f727320696e20612073696e676c65206461746173657420627920616464696e6720616e2065787472612064696d656e73696f6e20746f2069742e2020546865206c61636b206f662061207374616e64617264> 72.24 320.40 C +<6d6164652076697375616c697a6174696f6e2073797374656d732077686963682072656164204844462066696c657320766572792066726167696c65207768656e2069742063616d6520746f2072656164696e6720696e> 72.24 333.84 C +<64617461207468617420776173207772697474656e207769746820656974686572206f6620746865736520636f6e76656e74696f6e732e2020536f20766563746f72206c61796f7574206d7573742062652061> 72.24 347.28 C +<746f706c6576656c2066656174757265206f66207468652073706563696669636174696f6e2e> 72.24 360.72 C +<492070726f706f736520746861742077652073686f756c6420726570726573656e7420766563746f727320696e7465726e616c6c79206173207365706172617465207363616c6172206461746120617272617973> 107.28 374.16 C +<626f756e6420746f67657468657220696e20616e20484446352067726f75702e202049207468696e6b20746869732077696c6c20626520626574746572207468616e20616e20696e7465726c61636564> 72.24 387.60 C +<726570726573656e746174696f6e2077686572652074686520766563746f722069732065787072657373656420696e20612073696e676c65206461746173657420617320616e2065787472612064696d656e73696f6e20746f> 72.24 401.04 C +<7468652073746f7265642064617461206f72207573696e6720616e2048355420636f6d706f756e6420646174617479706520646566696e6974696f6e20626563617573652069742069732065617369657220616e64> 72.24 414.48 C +<6d6f726520656666696369656e7420746f20646f206761746865722d73636174746572206f7065726174696f6e73206f6e206461746120696e206d656d6f7279207468616e206f6e206469736b20287468696e6b> 72.24 427.92 C +<61626f757420686f7720746f20636f6e76657274206265747765656e20696e7465726c6163656420616e64206e6f6e2d696e7465726c616365642073746f726167652e20205468697320697320657373656e7469616c6c792061> 72.24 441.36 C +<726573747269637465642063617365206f662061206761746865722d73636174746572206f7065726174696f6e292e2020546869732073686f756c64206265206120706f696e74206f662064697363757373696f6e> 72.24 454.80 C +<686f77657665722e20204920646f6e2774206b6e6f77207768696368206c61796f757420776f756c64206265206d6f737420656666696369656e7420666f722072656164696e672f77726974696e67> 72.24 468.24 C +<616c74686f7567682049207375737065637420746865207363616c6172732d696e2d612d67726f7570206d6574686f64206d69676874206265206d6f737420656666696369656e743f> 72.24 481.68 C +ski{/Times-Bold fcd /Times-Bold-ISO8859-1 fdf}if +/Times-Bold-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<46454d2044617461> 72.24 509.04 C +gr gs +0 0 t 0 755.04 lo 574.80 755.04 lo 574.80 0 lo cp clip np +0.000 0.000 0.000 RGB +0.240 sw +[] 0 setdash +0 sc +0 sj +gs np 72.24 510.24 t 72.24 510.96 lo 126.72 510.96 lo 126.72 510.24 lo cp f st gr +/Times-Roman-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<46696e69746520656c656d656e7420646174617365747320636f6e73697374206f6620616e206172726179206f6620636f6f7264696e617465206c6f636174696f6e732028706f696e74732f766572746963657329> 106.80 522.48 C +<616e642061206c697374206f662063656c6c7320776869636820646566696e652074686520636f6e6e6563746976697479206265747765656e20746865736520706f696e74732e20205468652063656c6c> 72.24 535.92 C +<636f6e6e656374697669747920696e666f726d6174696f6e20666f7220656163682063656c6c20697320757375616c6c7920657870726573736564206173206120736574206f6620696e646963657320696e746f20746865> 72.24 549.36 C +<6172726179206f6620706f696e747320286f6e6520696e746567657220696e6465782070657220766572746578206f66207468652063656c6c292e20205468652063656c6c7320617265206f66207365766572616c> 72.24 562.80 C +<66756e64616d656e74616c207479706573207769746820646966666572656e74206e756d62657273206f6620636f6e6e656374697669747920656c656d656e747320666f72206561636820747970652e> 72.24 576.24 C +<486f77657665722c207468657265206d75737420626520737570706f727420666f7220646566696e696e67206172626974726172792063656c6c2074797065732073696e6365206e6f626f64792063616e206b6e6f77> 72.24 589.92 C +<612d7072696f72692077686174206b696e6473206f6620636f6e6e656374697669747920736369656e7469737473206d7920636f6d65207570207769746820696e20746865206675747572652e> 72.24 603.36 C +<536f2046454d2064617461736574732020636f6e73697374207072696d6172696c79206f6620616e206172726179206f6620706879736963616c20636f6f7264696e61746573> 108.00 691.92 C +gr gs +0 0 t 0 755.04 lo 574.80 755.04 lo 574.80 0 lo cp clip np + 112.08 617.28 t 112.08 654.24 lo 371.76 654.24 lo 371.76 617.28 lo +cp clip np +gs +0.7527 0.7494 sl +148.9048 823.7124 tl +345 49 8 [1 0 0 1 0 1] +/datastr 345 string def +/pp 1 string def +/s 1 string def +/rn{currentfile s readhexstring{0 get}{pop exit}ifelse}def +/unpack{ + /DC 0 def + /BC 0 def{ + DC datastr length ge{exit}if + rn + /BC exch def + BC 127 le{ + /BC BC 1 add def + DC 1 DC BC add 1 sub{ + datastr exch rn put + }for + }{ + /BC BC 126 sub def + rn + /pp exch def + DC 1 DC BC add 1 sub{ + datastr exch pp put + }for + } ifelse + /DC DC BC add def + }loop + datastr +}bdf +{unpack} bind +image +80fe05f8f6fef9fefc80fe02f1fefd80fe09f8fef8fefdfef8fef6fa80fe00e680fe02edfefa80fe03fcf9fefb80fe02f8fef380fc00fb80fe06fcf7fefcfef7fa8efe0dfcfbfefafef5fefbfeeffefbfef981fe04fbfef9fef781fe01fcfe80f608fef9fef5fefcfdfefc88fe05fbfef7fef9fe80fd04fcfafef7fe80fd07fbfef7feeffef6fb81fe01f9fc81fe00f880fe04fdfefcfef780fe0cedfbfeedf9fef7fdfcfdfcf9f781fe00fd81fc01fefb80fe05f7feeffef6fb80fe00f880fe0bfcfbfefcfefdfef7fef6fef980fe06fbfef2fef5fefb80fd05fef7fefafcf780fe00fa80fe00f580fe06fafefcfdfafef680fe05fbfefbf3fef580fe04f8fdf6feef81fe03faf7fef780fd0afef1fefbfef8fef3f4fcf580fe1bf8fefaf5fef7fdfefcf9f4f6fef8fefaeafefdfefaf8fef3fefcfafe80fb80fe80fb03fef8fefb80fe04ebfefaf0fd80fe00fd80fa81fe01fcf581fe06f9fdfcfdfcf9f781fe +01f9ef82fe02f6fefc80fe08f5fefbf1fefafeeef080fe00f381fe03e9fefaf181fe07effef7feeefef6fb81fe00f480fe03effefbf880fe00ee91fe02edfefc80fe00ef82fe00ed83fe05f1fdfef9fef580fe00e482fe00fa81fe02f3fcee80fe00f986fe00ef80fe06f4fefcfefbfef180fe02f3fef581fe06f8fef9fcfee7f481fe01f7f880fe04faf5fef7f680fe00ed81fe05ebfef8f7fdf880fe00f880fe80f207f6fef3feeff4feee80fe0ef8fef9fcfee7f9fefbfef6fefaf6f781fe00e882fe00ec83fe04fafef5fef380fe06f1fefbfef7f8fc80fe02f4fef680fe02f8fdfe80fa02f5fef280fe04f2fef5fefc80fe00fa80fe01f7f081fe03fdf6fef981fe04fdf1fefafd80fe07f2f9fbfef5fefbf580fe00e781fe02faf6fb80fe00f080fe01fbfc80fe01edf988fe00df80fe00f380fe00fb80fe02fde8fa80fe04f6f2fef9fe80f302fdfef880fe00f880fe80f200fe +81fe00dc80fe00f180fe01f7fc80fe00fa81fe80fc00fe80fd80fe01eff880fe0aeef8fefbeffef8fef6fef780fe02f5fef480fe02effef282fe02fbfef38efe80f702fefdeb80fe0cfdf8f0fef6f8fef9feecfef5fb81fe01faf380fe05fafef1fef6ec83fe00fa88fe00f480fe07f2fcfafef3fef2f782fe00f580fe01fcf282fe02faf2f880fe03fdf8fef180fe09fbfcf0fef3fef3fef3fa81fe05f3fef1fef6fc81fe00f880fe00fd80fe00f580fe01fcf281fe00f880fe00f580fe00fb80fe02f0fef580fe04e6fef5fef480fe02f0fbfc82fe11f7f2fef3fefdfbfefbf2fef9faf6fef1feea81fe00e980fe05f0fcfef9fef880fe01f8f983fe00dd80fe00f080fe02f4f2f480fe00ed80fe05e0fcfefbfefa80fe03e9fef1f680fe02f8f9fb80fe00e780fe05fbf8fef7f2fc80fe01f9fe80f880fe80f882fe07f7fefdeafdf6fefa81fe00f680fe02fbfef181fe09f6fef3fef1fef6fcfefc +0cf6faf3fef1fefcf3f7fcf6feea80fe03eff3fef381fe01f6f181fe00f780fe05f8f7f2fefcf180fe0ef6f2fbfef9fcfee6fef0fafef0fcef91fe00f680fe03fafcf9fa81fe80fc0afefcfefafefbfee4fafef380fe80f700f180fe00f480fe02fcfedf80fe00f787fe02ecfee680fe02f9fef780fe19fdfcfeeafaf8fef4fef1fefadffaf4f8fafefcf9f2fef4fef1fc80fe00fb80fe02fdfbf380fe0af1f9fef6f4fef2fefbf0f680fe03f9fefced80fe0ef4fef1fefadffafef1f8f5f9f0f8fd80fe03f6f5fef681fe01fcfe80fa08fef6fef8faeafefcfd81fe00ef80fe07fbfef7fefdfeefee80fe04ecfefcfefb81fe81f180fe00f180fe0ae1fef4fbf5fef0fefcf4f082fe03eefef0f181fe03f8ecfefc80fe00f880fe07f2fef2faf8e9fef981fe02eefefc81fe02effef480fe80f480fe05f4f7fef9fefa83fe04ecfef3fef880fe00ea81fe01f1ef80fe07f6f4fef2fefbf0fe +80fe00f780fe01edfb82fe03eefcfee180fe04e6fef9faf681fe05f0f5fefcfaf680fe04f2f4fef5f383fe07fbecfcfefbfef6fd81fe00ef8ffe02faedef80fe07f1fbf3f4fbf9f5f480fe02f8fee781fe00f180fe01fdf680fe05f7fafef9feec80fe03f1fcfefa86fe00f980fe00ef80fe06fbfefdedfef6e780fe03f8fef0f982fe01f7fa80fe03f7fbfefa83fe05fcecfef7fefa80fe04fafefbfeec81fe08f2f7fef8fef5fee9f780fe03f7fef0f982fe01f7ed81fe05edfef7fdf4f380fe00ea80fe02f2fef280fe04f9f6fee9f880fe08e7f6feedfdf0fef6f481fe02eefef680fe01f9f680fe06fcfbf7fee8fef981fe03f4fef5f882fe00f880fe01ebfb80fe04eef1fef3f982fe01f8f180fe02f5fef080fe03fafbfefb82fe03f7fcfeec82fe03f5f8fef780fe80fc80fe80fc81fe06f3fef2fefdf9f680fe09f7fefdfef6f9fee8fef580fe01f9ec81fe04f2f7fef8fe +0afcfef9effefbfefcebfef480fe03f1fe010081fe05f5fef9f2000282fe02f8faf480fe020006fe800002f3fefa81fe07eafef6f4fef4fefa93fe00f2800003fef7fef980fe060600f1fef5fef483fe04f9fef8f5fe80f680fe01070380fe02f1fefb87fe06e8fefcfefdfef880fe00f181fe08fafefafef7feeafefd800000d980fe08fcfefbf60500fefbf981fe07fafe0004fcf4fef580fe07f9edfefdf8fe020080fe02fdfef980fa0dfef7feeafefd0005fef0eefef3fb80fe02f9fee680fe08fdfefbfeeefefdfefb80fe00fa81fe00f180fe00fb83fe01f5fe80fa03fef6fef982fe1ff8fe0100feebfcfa0005fbfefdf2fbfefaf0fefafefdfcfdfef1fe0600fefdef80fe00f980fe00f581fe00fc80fe0fecf6f7f2f30a00f3fef7faebfefafef781fe80fc80fe80fc80fe00f780fe0a0104fef8fafcf7fef9fefd80fe01fdfe800002fefcfa80fe06f9edfefdf8fefc +0cfef2fef9fdfef2fef9fef3ecf281fe05f3fcf7f4fef780fe0a0800f1f9f1fefbfcfee4fe800082fe02fbfef781fe00f780fe00ed80fe02f7fef58efe0bf9fbfcfe0005fbf3f7fee9f780fe00f680fc08fef5f9fef2fef0fbf780fe04fcfef5fefc800004fcfeebfef686fe01fdfb80fe07f2fef7fefdf4fef680fe03f8f1fef281fe80f501000d80fe01f2f581fe01000180fe02fbfef581fe800081fe0efbfde9fef1fbfef6fe0300feedfef781fe00f281fe80f5800081fe01f2f680fe11f8fefbfefcfbf9f3fcf7fefcf8f9eff8f1f880fe08f6fef4fdfeecf8faf280fe00f380fe03fbfef9fe80fa0df9effefdf7fefdfef7fb1500feed81fe05f2fefafcfef280fe05f6f1fef4fef681fe0bf4fbfefcfefcfef0fefcfeea81fe01fcfe800080fe00fc80fe06effef5f6fef1fb80fe80fb80fe07fbfefafefa0006f682fe01fafe80fd00f580f40cfe0700fef9fefde9fef1fbfef680fe +04fef2fe00f9800513f8fefc000110edfe0007fd01fe0002f9fe00090082fe0ef9fef6fd0105f30800f908f20500f580fe03001100f380fe00f792fe01dd08800003fe00fa0c81000afef7000500fef803fd040080fe0af20d00fe00fb0003f6fb05800087fe09f9fd0005fb00f90200fe80000dfef50c000ffaf7fd01020300fef680fe1ef3f9fe000100fafe020005fafe000a00fe00fe0100fe000800f5fe0005000b80fe00f780000a0ffaf7fd01020308fb00fe800003fb00070080fe0e00f50c00fef8f7feef01fe000cf5fe80001bfe0002f408fa0a00fe000b00fefd00fe0200fe0014eff90700fefd0280001103fcfafef9fef2fe00f90305f9f704fe000b800001fafe8000130cf0fe00fe0300fe0001fefbfef8fef40006020080fe07fc0e0007fbf8070080fe800080fe80000d05fefa00020009f7fdfe000609e780fe0f00020400fd04f60100fe000800f5fe00 +02fee7fe800009fe0002f70204f30608ec800008fe0005fe000ff9030080fe06fcf6fef7fef9f8800000fc80000ff6000bf60802f10906f90800fbecfef48efe07fbfee5fa0007e2fe80000a04f70d00ee05f4fe0b00fe800012fe0206fe0200f80600f30a00f4000feb060bec80fe14f1f9fef8fdfc0600fe0300fe0004fb0e00f904f0fe800006f5020bee0a00f980fe07fbfdf9fe0c00fdfe800007fe0100fe0200f8fe810003fe03f8fe800003fe0010f8800206f80f00fe0001fe800003fe0006fe810000fe800000fe800003fe000af880002cfef2fefd0014f4000deb0204f20300fe001600fa07effe0003fa0400fe0002f6000bf60802f10904fc0004f7fd81fe01eafe80000dfe0005f5080100fb0a00fc0010f0800300f9800006f01100f01501f181fe03fc0100fe80001ff21000f70700fefc00060006fefa04f6f9000bfe0003fd0306fa0004fe0004f8800003fe0400fe80000801f00e00fa0001fb01 +02f1fef3800003f4fe00fb800000fa80000dfe0700f50b00fe1000fa060af8ed80fe04e8fef3f9fe800000fe800000fe800000fe800000fe80000007800092fe03fdf1eced80000afcf3000aeefd000aede80280000402fe000dfe800001fa0080fe800006f90900fc03000a800002fef6ec84fe0d00feed0500f80f00fb0006fefa1180000207fe0080fe04000af8f3f880fe01fcfd80001efcfe08000f0009f70008fee50810fcfbec0a0c0007f90800fd0500f7050706800006f20bfafe0300fe800080fe0b0401f00b02fe0900f80705ec80fe02ed030080fe0100fe800000fe800006f80200fefdfe01810000fe800003fe0006fe800000fe800005fe00fefc000380fe80f904effeee020580fe0300fe000780fe01070080fe80000505f5fe0700fe800000fe800004fef8f3fcfe800000fe800003fe000a02800002fef7fe800005fefdedfc030c800003f30b00fe800001f11a8000030900fe0080fe80000bfe0001fbfe0004fe0009fa00 +08fdf2fe0004fefc04f7800000fe800009fe0001fa0008fc000ff9800002fdfee683fe06f80703fe0007f7800000fe800000fe800082fe01f8eb8ffe05fafef4fc070080fe030800f7fe80000dfe0001fe0e00ee0600e50013e60480fe070010fe0400ec010580fe00fb81fe80f780fe02f7fe0080fe020014fe800000fe800000fe800000fe800005fe00f9fe0a0081fe01fdf280fe1d0907fef20306ebfef9fe0005eafe0a00fcfe0d00fc0507fb0300fe0001fe800006f3fef5fe00f5fa80001ffe0006f8fe0005fe1000ec0a00f70400fefafdfe0500faf900fe0009f60005fe80000dfefd0012fe0005f00c00e60600f7800000fe800008fe00f1fe0800fef8ee80fe01f3fe800080fe0b0af30b00fedb0007f3f6fcfe80000afe0300fd0c00fb0100fefd80fe06fa0601fe0004fe800080fe80f702fd060180001bfefd0006f11509f60009f70600fe0002f9feebfe00fef11000f7000280fe800004fe0003fd00 +02fefcf5800009ee0302fe060fdf0301fd800000fa800000fb800000fe800008fefafeeefeeefef5ed800000fb800000fe800006fd0001f10c02fe800000f680fe00fc8ffe06f5fefb0005feee800080fe800003fe0200f4800003fe0003f7800009f90b00f51600fe0004fe800000fa800000f180f71cfef9fcf4fefd0500fe1400ef0608f80906eb0a02f11100fe0900ee000a80fe00f581fe00ed800012fcfe0800fe000bf6000bf6fe000dfef50006fd800012f70600f50006fe000afe000ef80605fd0d00fe800004feef0600f8800025fe000ff00003fbfef1fb0009f1000ffafe00010a00f60004f8fe0500f40a00fe0003fe1100fe800009fd0001f10c00fe000beb80fe06f2fbfafe0d00ed800004fc0e00f5fe800006fd0700f41100fe800000e9800400f4800000f980fe01f7ef800000fd800003f20800fe800000fe800007fefc0d00fe0200fe800006fe1200f8010ef0800006fe000af50300fe800000fe800008feee0013f60800f900 +80f70ffe000b0203f9f2ec000700fef20500fe800004fd0803e6fe800081fe12eefee6fcfe0800fb1100f70014ef0700f8fa06800080fe02f0feea8efe02eefeef80fe800002fe000b80f1060001f6fc0a00fe8000061000fe0700fefb800009060cfe0008f3fe000f0081fe08f1f2fefafef3fef6028000000780fe800001fe0080fe0a0011e01600fa00090705d781fe08f3fefdfe040ef3fa04800005f6feec0109f8800007f8fcfe0d00f90b0c800004fe0203eefe810080fe00fa82000afe0001fcfef4000701fefc800000fe800000f280fe02fd0005800700eb80fe06f60500f2fe100080fe04fc0009ee1180000105fa800008f70014ef0700f8fa0480000302fef8f582fe81001a05fef40001fef60100f7ec0a0400fbfe0002fe0005fb0800f5fee680fe060800fe1500fefc8000060dfdfe000ffbf6800080fe800000fd81000109fe800080fe810080fe05fd01080014fa800000f880fe810080fe0000 +80fe04f60008fdf280fe00fc81fe08e5fdfef8fefaf1fef480fe00ed80fe04f3fdf4f3f480fe0ad7fdfef4f1fdf3fef1fbfa81fe01f7f980fe02f2fef692fe00f381fe00ed80fe00e880fe00f380fe06f3feeeeafefafc80fe04f3fefdf5fe800080fe08f1fdfbfefafef6feeb80fe05f9fef6fbfef080fe800084fe00e880fe02f6fef681fe00fa81fe03f9f3fefb80fe03fafef3f881fe06f6fdf8effef9fd81fe16f0fef7fef9f2fefbfef4fef2fef3f8fef4f5f9fafcfefd81fe01fde780fe01f9ed80fe00f381fe05f5feeffef3fe800005fef7fefbeefe800001fef780fe01faec80fe05eefefbfefbf181fe04f3fef1fbfa81fe01fdfb80fe00f880f90afef6fef50014fef0f4fef980fe00ed84fe01f9f180fa05feeafee9fef580fe00f980fe00da80fe0ef8f5fefaeafef5f9feddfef4f7fef580fe00ee80fe02f7fef680fe1afcfef7feeeeffefae6fefbfef0faecf7fef7fcfbf4fef8f5fef1fe +05f8eefe1100fb80fe03f0f7fee881fe05f6f9f0fef2fa80fe08edfefbf0f1fef3f2fe80f604fefcf8feed80fe00f580fe0bf5fdf4f1fef6fef1fef6fefc8efe09fcf5f6fee8fef7fef7f180fe00ea80fe03f5fefbc480fe07f2fee9fefbf4fa01800001feed82fe00f683fe06f2fbfee9fef8f580fe07fc0400fbf4fef7fc80fe04f4f9fafefb80fe04f1fdfbf2f082fe02f5fcf782fe00ed83fe06f5fef6eefaf8ed80fe08f5fefdfafef6fe0bf381fe00ee80fe00f680fe08f5f2f9fafefcfeedf180fe00ed81fe03fbfafdf881fe0ef90002fafdfefbf60209feeff7fef481fe00e780fe00f181fe01f2f880fe00f580fe11f5fdf4f1fcf6fdf8fcfef4fcfeeffe0900fd80fe80fb01fef180fe04f7f2feeff682fe00f880fe13f9fefbfaf6f2f5f8fefcf8fef0fef6fefcf8fef282fe07f7fee3fefbfcfee880fe01f7fe80f501000780fe0eecfefdfaf4f7fdfefbfeedfef7fef581fe02e8fefb +80fe03ecfef9fe81fb00fd80fe02f3fef680fe02f4fef680fe00f280fe09f6f3ddfdf2e6f9fdfefb80fe03f5fef6f780fe00f080fe04f4fefcfef080fe01fcf68ffe03f7fef5f280fe00f981fe03fdf6fefb80fe09f7fe9cf3fcfef0fef6fa80fe00fd80fe02f9feed80fe00f880fb80fe00fa83fe00f680fe8200061300060006000280000102fc80fe02e9fef881fe03f4fef6f280fe0ffafef2fefdf6fef3fefaf9f7fbfafefd81fe0becfefaf4fefaf5fe030009fe80f905fefcf3fefbe981fe03fbfef8f980fe10f7fefdfef7f8fefdfbfef7fefafdfafef980fd0afef8feeefefafefcfdfef680fe03f6f8fef280fe00fc80fe00f780fe00f080fe09f4fefafefcfdfef9fefc80fe05f5fef6fef7fd80fe04effef8fdfc82fe08fdf1fef3fefaf2fef980fe04f9fefafefc80fe06f8fef6fdfefdf480fe01f7fb80fc00f780fe01effe80f80afe03000700070304fbfef680fe80fb80fe0cf5fafbfef4fdfef8fef7fdfef780fe +cefe0ef6fef3f7fef3fafef9624f45fefbf999fe0d00fef9fefcfef5feeffef9fef00c86000601000800fdfef38ffe04f5fdfefcfa80fe04fdf8fe00fe800003feeffef580fe02f3fef490fe00f481fe05f6fefdf9f7fb80fe01f1f880fe02f6fefa80fe01fafd9ffe0cf3fefcf5fdf8fefbfef7f9feee81fe00f581fe00f288fe0bf8fef9fbf8feeefefcfefafe80fb000780000104f280fe01f50180020200fef580fe04f1fefcfef582fe00fc87fe +cefe00f684fe07fb2f25fe3aecfef297fe06f1fe00fefdfef681fe00ee80fe02fafef086fe00fa80fe000093fe12eff8fefdf8fef7fef600fe010200fef4fef2f881fe00f98ffe00f181fe01f7f081fe810002fefaf880fe03e7fef1f8a0fe04f3fefafefc80fe0df1f8edf3fef4fef7fb001ceafcf980fc87fe03fbf3fe0081fe01f7fe80000009800002fef9fa83fe0c00fdfe000af3fef3f2feedfefb81fe00fb88fe +cffe07edfef5fee8f3fd1680fe030816fbf998fe08f500effafefdfef7fd82fe01f2fe86fc04fef500fef280fe00f58efe00ec80fe06f2feeffef9fe0080fe0200f30082fe04f8fef3fefc8efe00fd80fe01f5fb82fe0efa13000408eefefbf6f9fefbf0fef19ffe07f8fef5f9f6f5fefa80fe00e880fe03f7001a0080fe03f7fef3fa88fe0100028200000981fe02fafefb80fc01fee381fe0600fef1fe0008f380fe00f580fe01faed80fe00f788fe +cefe03fbf7fef280fe06fd10fef4f8fe0280fe00f096fe08f2f80efef7fef6fefa80fe04eafafef4f888fe040bf9fef5f790fe03f2fafef381fe0500f4fef20bfe800000f181fe02f4fef88ffe00fd81fe01f2f580fe03f604000d8000080afdf7fef5f6fbfefd9ffe03f1fef2eb81fe0fedfdfeeafdfe000102e409fef7f8fef789fe02ec000d81fe01f6fe80f101fef580fe00ed81fe0df6f911fcfeeafe0700f8fdfef2ef81fe01f8f388fe +cefe00f581fe0afae40800feecfef9f600f298fe03f301faf480fe01fdfe80fb02fefcfa88fe07f8fe00f3fef8fefd8ffe0ffcfef5f2fef904f4fef8fe00f2fe00fe81f880fe00f690fe01f0ef82fe03f4fe00fe80000608fe0001f9fefa80fe01f7f19efe06faf5fbfefafefd80fe80fd03fe00070080fe0100fc80fe01fafb87fe08f8f0fe07f803eaf7fa83fe00f380fe04ebfef6fe0080f481fe09fbfe00fef3fefbfcfefb80fe00fd87fe +cffe06fafef6f4fe00fa80fe05f0fafe0103fc96fe06f3fe00fefdfef880fe01faf980fe02f1feef86fc03f809fef980fe01f5f48efe02f7fceb80fe07f20500feecf1fb0c81fe0100f380fe00f080fe00f78efe00f980fe05f8f4feeefe0280f90400fe00effe800080fe00f8a1fe00fc80fe0eecfee7fdf3fef301000500fef0fe0081fe02f5fef586fe03f6fefa0080fe01000d80fe08e7fbfef8fefafbf4fb80fe0106fa80fe0bf2eef7fbfd0afee6fef5fef680fe00f987fe +cffe00e680fe01fb0080fe05f1fef8fef6fb800097fe000080fe80f401fef180fe02f8f5f980fe00fc87fe0500fbfefafbfa8ffe00fd81fe03e8fe00fb82fe000080fe08eafe01f2fef8effefc91fe14f6fef70002fef9fe02fb0806e2fc180002fefbfdf49ffe01fcfb80fe01edfe80000b0dfe0200f2f8fefd00f9f6f880fe00fa87fe05f8fe00fef6fe800000f580fe05f1fef9f7fefc80fe04f508fee8f883fe03e80914e880fe02f8f7ef88fe +cefe06f7fefcfe00fef080fe00fd80fe00fa80fe000096fe03fb07f5f980fe02fbfef380fe00fa80fe00f287fe05f806fcfbf9fe80fa8ffe01f8f380fe000080fe0aeffef1fe0af6e9fef9020381fe00f490fe00f380fe07f9fe0bf9f6fefb0080fe060009feebfe0001a1fe00fb80fe02f6fdfe800004fef900fefa80fe02f8fe0282fe01fafc86fe00f580fe0200fef181fe01050080fe08fbf8fefcfef7fdf80081fe05f6feedfef410800002fefaf480fe00f088fe +86fe00fc80fe00fc80fe00f487fe06fafeeafdfef6fe97fd01fef480fe02f2fef387fe02f9fdf380fe00f780fe02fafef980000cfefdfef5feeffef9fef00c00f481fe02f6fef98ffe0400fdfefafe80fd8ffe0400fdfefafe80fd88fe04fcfefdfef180fe0ef8fef80003f0fefbf8fefa00fafefd80fe01f30480fe05f1fefbf8fdf880fe05f8fef3fef9f480fe01fdfc80fe0ffafefc00fcfbf1fef80401000700080081fe040001f5fef880fe00ed80fe00f88ffe05f1fefafefaf380fe04f8f607000380fe020300f480fe08f9fef6fe00fdfefafe80fd86fe04fdfefa02fc81fe07fafd0306ecfefdfa80fe03fafe00fb80fe06f9fefbf707020090fe +86fe02f8fce580fe02fafef48afe03fdf6f9fb96fe03fceef7fd8efe0be3fdfefdfee20604fef7fef380fe00ee80fe09fafef00901fef2f5fede90fe0400fdfefafe80fd8ffe0400fdfefafe80fd86fe00fc80fe04fdfef4fef680fe05f70300fafeef80fe0debfe03fef5fefcf5fdfe00fefbf180fe03fbfef7f080fe01fced81fe08effef9fef5fafe00fc81fe01ea0d800004fef500fe07800006f9fe00feebfef381fe00ee92fe03ebf1fef980fe07000806fdfcfef40080fe01f3f282fe0400fdfefafe80fd86fe04fdfefa02fc83fe06f10700fef1fef380fe0cf500fcfef4fbfe0010e7f600f88ffe +89fe04fd0102fbfd86fe06f8fbfef3fbfefb99fe00f780fe02fdfef287fe01f7ef80fe07fbf9f6fe0003fef081fe01f7fd82fe05f2fef700fefa81fe00fd8ffe0400fdfefafe80fd8ffe0400fdfefafe80fd86fe03faf6fdfe80fd80fe03fafd050080fe06f0fef3fdfefb0080fe06f5fefbfef60e0080fe00ec80fe00fd80fe00fb82fe00e681fe07fcf8fef806eefcfb80000201fc0380fe00f680fe0ef9fe02000ef400f7feecfef4fbfef88efe02fafbf180fe01f503820080fe04ebfd06feef80fe02fdfce980fe0400fdfefafe80fd86fe04fdfefa02fc82fe00f880fe80000bfefafef3fef900fe0003000b80fd80fe000090fe +86fe06f8fcf9000107ea89fe00fd81fe01f4fd99fe01fcf589fe05fcfefbf8fef380fe800006f9fefafef6fefa80fe0beafafef4f8fe0609fef3f7e690fe0400fdfefafe80fd8ffe0400fdfefafe80fd87fe07fcfef5f0fefafcfe800002fefdfa80f80cfef6fcfd02fbf2fefbfef5edfc800080fe02f9fefc80fe00ed80fe00ed80fe03fcf6f9fa80fe0f0005fe000900fefafe00fef5f6fef6fe80fd04f40012f70180fe00e780fe01fcf88ffe00f880fe010005810004fefceefe0f810002fefaf381fe06f3fe00fdfefafe80fd86fe04fdfefa02fc81fe0af3fef9fcfe000cfafef2fe81000507fef8eefef580fe000090fe +86fe03f4fef605800088fe04eefeeffef381fe96fa04fee5fef1fe80f800fa87fe00f980fe0ceffef4fb00fef5f9feeefef8fe80fb02fefcfa80fe07f5fb00fefbf9fef38ffe0400fdfefafe80fd8ffe0400fdfefafe80fd86fe01f9fb80fe0cf6fef2fe000afbf6fefafefcf181fe06ea00fef9feeaf981fe100102f1fef7fef7fefcfefbfef4f0fcfef380fe830080fe00f780fe0105f980fe00f180fe00f380fe01f9f7820003fefcfbf28ffe04fdfcfd030780001609f6fbeefe0100fef70800fcfee8f6fef5fe00fdfefafe80fd86fe04fdfefa02fc81fe05fdfef3fef5fb83000115fa80fe00f281fe04faf7f208fb8ffe +87fe06e9f61900fcfaf187fe06dbfef1fe0007009602060024000e00fef887fe09f4fefceefef00800fefc80fe02f6fdf680fe01faf980fe03f1feeff680fe000081fe00f98ffe0400fdfefafe80fd8ffe0400fdfefafe80fd87fe05f5fcf0fef6fe800008fefdf2feecfdf9feed80fe010011800002020514820006040cfefbf9fef680fe02fdfef880fe06fcfefc000d070080fe08e2fefbfefb00fef3fa80fe0bedfeefe5fef8fe05040cfef480fe00fd90fe01e9fb800007fe00fe001900fee680fe01f303800080fe00f580fe0400fdfefafe80fd86fe04fdfefa02fc82fe07fcfef3fcfe0ffeee80fe0300f8feef80fe00ec82fe0109f78ffe +86fe00f580fe800080fe00fb86fe00ea82fe02f0fcfd96fc07fef2f5f4f6fefcfb87fe0afdf1fefb0005f9fafef9ed80fe00f481fe02f8f5f980fe07fcfee8fdfa01f9fa90fe0400fdfefafe80fd8ffe0400fdfefafe80fd87fe80fb0afef1fb000200100002050e80000a06000a00f000fef5fef6ed81fe0002800080fe00f280fe00f380fe00ec80fe00ed80fe04000200fedd80fe00f980fe0afbfe00e1f9fefbfafefdf880fe07f8f4f6fb000400f390fe00f880fe000080fe06f2000300f8fee880fe03f8fefcfe800001fef480fe0400fdfefafe80fd86fe04fdfefa02fc81fe02f2feee80fe06f805f4feecfe0081fe07f6fef5fefbf2fe0090fe +86fe03fdfefcf780fe00f388fe02fcfeee80fe01fcfb96fe05f7fefbfef7fb88fe00f880fe06f9fe02f1fefcf980fe04effefdfaf380fe00fa80fe03f2fef8fb80fe800001fefa8ffe0400fdfefafe80fd8ffe0400fdfefafe80fd87fe02f8fef480fe0cf3030bebfefbfef1fefcf7fef280fe000080fe00ee80fe03f3fef90081fe04f8fef3fef280fe12f8fcfef9030005fefdeffeeff6fefdfefbfc0080fe00f883fe02fbfaf881fe05fc000201fef28ffe020002fe8000020d00f980fe0af7fef2fefbfeedfdfe000180fc05fe00fdfefafe80fd86fe04fdfefa02fc82fe00f580fe80fa0400fef4fe0080fe05f2fdfef7fefa80fe0107f790fe +c6fe80fc02fef1088000000480000212000f800080fe0df7fdfefdf6fefcfaf8fefdfe00068ffe04f605faf6fa80fe00f68efd07fe00fef7fcfdfefb8efe03fc0100f880fd03fefdfaf481fe0200fcfd81fe03eafe00f78afe06eefe00f1fefcf980fe12effefdfaf3fef300fef7f4fefdfefbfcf9fef583fe02fd000188fe04fafbfafef680fe12000e000d0beefc02f7fef6fbfef6fefbf2fef181fe090400fe09f7fbfef8fef486fe08f8fefc00fefcf8fef980fe03fafef50080fc05fb15eafefdfa80fe00f880fe03f303fef88ffe +c6fe00fa81fe800082fe02dffef180fe80000007800002030f0080fe04f9eefdf8fe80008efe06080af4fefcf5f490fe0508fefbfdfefa90fe05f70100fef7f680fe05f5fcfef400fb80fe03fbf6060380fe00f786fe01fcf780fe070003fef4fafef9ed80fe00f480fe03e9fe00f080fe05f4feeef8fef880fe08f9fef5fcfefafe000486fe01f8fb80fe02edfef2810005fee8fbfdfe0081fe01f6f580fe08f9feeefeeff6fdfe03800001fef98cfe03f209fefb82fe14ecfdfe00fef4000200fafefcfef9fcfefdf1fe03fd90fe +c7fe02fcfef380fe04effbf6fefc80fe01f8fc81fe09f7f8fefb000800110306800080078efe000080fe00ec81fe00f28efe06f405f9fbf9fef78ffe00fb80fe07f00f00fef2fbfef980fe0209f3f581fe020ffbf289fe02f4fefc80fe03000dfefc80fe02f6fdf681fe0702f9fee8fbfefcfe80f70bedfbfdfef8fefbf0fef40d0088fe00ed80fe04f000080bf080fe05faf8fa01fcec80fe04faf9f7fee883fe09f2fe03000100f5f1fef687fe03e9fe02e280fe06edfefcfefdfa0a80000f0df8060cebf2fefdfefafcfef300fefa8ffe +c7fe00f180fe80f903fefdfeeb80fe05f4fefbf5fcf780fe0bf3fefbf3fcebfdf7fef4fef98efe0102f680fe02f8fcf090fe0200f8fc80fe01f5fd8efe06f9f3f1fef5030080fe04eafef2fe0080fe06f0fe03faf8feed88fe00f380fe02fdfef280000afef5f9feeefef8f5ea10fd81fe01f4ed80fe00f980fe00f782fe00f6800000f087fe02effefa8000030704f4f180fe04fcfef7fe0080fe01f3f980fe01fcfd80fe00ee80fe03f4fefdfe8000000680fe00f887fe00f780fe0800f9fef1fee9fe0b00800180fe04f3fef9001180fe00f780fe00e880fe0103fb90fe +c6fe02f3fee580fe02eafef580fe00f780fe01f6f884fe00e681fe05f1fefaf4feeb8ffe0300fef8f180fe01fbfe8efa01fd0080fe02f9fef592fe02f4fcfe800000fa81fe06f70019f4fe08f582fe00fd86fe05eef8fefdf1ed80fe800004f9fefafef680fe01f90080fe01f7f980fe01e9fb80fe09f7f9fdf5f20003fef7f888fe80fb0004800081fe08fbfef7fdfef9fe00ed80fe06fbf5fefcf1f4fe80f680fe04fb0008fef481fe00fa86fe03f9fde20e82000d1103fbf8ec04f8fafefdf4fb000281fe06eefefd00fcfbf58ffe +cafe1afbfeecfefdf7fef4f2fefcfefbf8fbf1f6fefdfafcfefbfafee3fc8ffe0704000c0f001400098e0204f514f2edf691fe02ebfef480fe01fcfe800002fafef180fe0207fe0e80fe04eef7eafefb88fe00f881fe06f8f7fe0003fef083fe0507f4fef8fefd81fe06f8f4feecfe150080fe00f280fe00ea86fe05f2fdfbfe000280fe08f5fef8f5fef4fef30080fe00f081fe03f5fdfee880fe02fc000380fe01eef981fe00f386fe0a0500090300fef7f2f1fbf580fe000080fe04faf5feeefe810004fef4fee20092fe +c6fe06f0fcfafcf8fef681fe00f380fe04f1fbf9fee980fe08f7fef3feeffefbf6f780fe00fd8efe07fcfef9f6f2fef9fe8efc020102ee80fe02f4f1fb8ffe00f980fe07e2f4fef9fe0009fb80fe0411363efafd81fe00f087fe0ff7fdfefafef9fef9fee20604fef7fef380f7000080fe00f982fe00ef80fe01fb0a800001f8fb80fe01f8fb87fe04fcfbfeecfe800080fe03f8fdfef980fc03fe00fbfa80fe06f4fafef3f8fef8800003fefdfef080fe00e589fe00fc80fe0200fef981fe0afafef6fa00feeef2fef6fb80fe08f6fe0012fafe13e6f290fe +c7fe00f680fe02f8fcfe80f680fe00f781fe00fb81fe01f5f783fe00fa81fe01fcfd90fe04f5fefcfef790fe03f7fefbf091fe02f6fef180fe12f7fafbf3fe06040ef92f38fdf5fef9f6fcfef189fe02f4fef880fe02fafef9800001fefd80fe05ef0bf9f7fbfe80fc80fe03f200050082fe04f9fcf0fef487fe0af6f3fef8fe0c00fafefaf880fe03f5fc05f880fe00f583fe0d0004fef8fefcf9fef9f7fef3fefa86fe01f3fe800005fcfef9f8fef980fe0200fef680fe00f480fe80fc80fb00fe820092fe +fefeaffe00f180fe03161a445b82fe03fcfbfcfd8ffe03fbf6fafe80000efef6fe00f5fefcfefaf8f9040601f998fe030100f8fd81fe00f2800005fefdf1fef9fe800002fefdf680fe00fb8efe06f8fe070008feec81fe04fcfb00fbf780fe01fcfa80fe03f7fefaf981fe800001fef58ffe +fefeaefe00f180fe05f3fef64b5efb81fe02fcfafd8ffe00ef81fe03effe000480fe000080fe00ef80fe02f8190081fe00ec98fe050007f9fef4e280fe0100f781fe0005800001feed80fe01fbfc91fe0700fe0001fefcf6f880fe000080fe07fdfeecfeeaf5f8fa80fe05f8080007fbfc90fe +fefeaffe01eeef81fe04fb8ab5cdee81fe01fcfa8ffe0beffdfef5f0fe0002f516f0e180fe050506f7fef4e999fe00f580fe01020080fe04fdf215f3f5810005fef3fde7feec80fe00fc8ffe01e90080fe03000efcfe80f604fe0ffef2f180fe00eb81fe000a80000201fefa80fe01f1fd8ffe +fefeaefe04f5fcfef1f080fe03fde4ecf580fa00fb90fe03f3fefbf280fe00fa80fe800080fe05000100eff8f780fe02f7fef097fe00ec80fe00f8800080fe0500fe0108feec80fe06fdfefafefbf5fa8efe00fd80fe00f780fe07e800f4fefcfe00fa80fe00f781000a0100f3fefbfde8fafcf8fb90fe +fefeaffe00fd80fe00fd80fe00fd82fe81fc00fb8efe02f9fbfd80fe00f381fe010001810001fef781fe02f8f9f798fe02f6feeb81fe02f70004810004f2fcfef7ed81fe03ebf2fef18efe00f180fe02effcf480fe0c00f0fef712f1f9ee0a00fefdef80fe00f882fe00f080fe00f78ffe +fefeaefe0afafed9f9fef6fcf8f0f2f981fe01fdf490fe05ebfef2fafef480fe040006f5fef380fe02fbf0fb80fe00fc98fe05fbfef4f5f7fc80fe800080fe01f1f580fe05f5f6f9f5fef890fe02fdf6fd80fe00f280fe1100fef10705000cf4f6fef2fef6f2feeffee180fe02f5fefd8ffe +fefeaefe00f983fe00ee81fe03fdf8f9fd90fe02f6fef480fe00f280fe01faea80fe03faf4feee82fe00fa80f197fe03fbfdfee480fe00ec82fe00fa80fe02f5fcf180fe04fcfefafef38efe00e581fe02f8e7fe80f70607000ef9f1fef980fe01f6ea80fe09f8fafef8fef5f2fef7fd8ffe +fefeaefe09fdfef2fef8f0fef0fafc80fe00fc80fa00fb8ffe00f080fe00f980fe00f580fe07fbeefefbfefafeee80fe00fc80fe00f697fe00f880fe01eff980fe0ef9fbfef4fef8fefafef8fdf5fcfef393fe02f5fef880fe02effeec80fe03fbfdfef180fe02effefc80fe06f1fbfefafefdfc8ffe +fefefefed7fe +gr +gr +%%PageTrailer +rs +%%BoundingBox: 18 80 521 774 +showpage +%%BeginSetup +%%BeginFeature: *PageRegion Letter + letter +%%EndFeature +%%EndSetup +%%Page: 4 4 +%%BeginPageSetup +/#copies 1 def +sv +1.00 -1.00 sl +18.00 -774.00 tl +%%EndPageSetup +%%BoundingBox: (atend) +gs +gr gs +0 0 t 0 755.04 lo 574.80 755.04 lo 574.80 0 lo cp clip np +0.000 0.000 0.000 RGB +ski{/Times-Roman fcd /Times-Roman-ISO8859-1 fdf}if +/Times-Roman-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<28706f696e74732f7665727469636573292e20205468697320697320666f6c6c6f77656420627920616e206172726179206f662063656c6c2074797065732077686963682063616e206265207573656420746f> 72.24 64.80 C +<64657465726d696e6520746865206e756d626572206f6620636f6e6e656374697669747920656e7472696573207065722063656c6c2e2020412063656c6c20636f6e6e656374697669747920617272617920636f6e7461696e73> 72.24 78.24 C +<61206c697374206f6620696e746567657220696e646963657320696e746f20746865206172726179206f6620636f6f7264696e61746573202874686520696e6469636573207374617274206174203020666f72204320616e64207374617274> 72.24 91.68 C +<6174203120666f7220466f727472616e20756e6c657373206f746865727769736520737065636966696564292e202054686572652063616e206265206d756c7469706c6520617272617973206f662064617461207768696368> 72.24 105.12 C +<63616e206265206465636c6172656420746f2062652063656c6c2d63656e74657265642c207665727465782d63656e7465726564206f7220616e7920636f6d62696e6174696f6e206f66206f666673657473> 72.24 118.56 C +<28656467652d63656e7465726564206f7220666163652d63656e7465726564292e20205468652063656c6c20616e64207665727465782063656e7465726564206172726179732077696c6c2068617665206120312d746f2d31> 72.24 132.00 C +<636f72726573706f6e64656e63652077697468207468652063656c6c20616e64207665727465782064617461206c6973747320726573706563746976656c792e202054686520656467652d63656e74657265642c20666163652d> 72.24 145.44 C +<63656e746572656420616e64206f74686572207479706573206f66206f666673657420646174612077696c6c20626520616c69676e656420746f207468652063656c6c206c6973747320616e6420646566696e656420696e2061> 72.24 158.88 C +<63616e6f6e6963616c206f726465722028656163682063656c6c206d75737420646566696e6520746865206f7264657220696e20776869636820666163657320616e642065646765732061726520696e6465786564292e20> 72.24 172.32 C +<20> 494.16 172.32 C +<50656f706c65206f6674656e2073746f7265206f66667365747320746f20656163682063656c6c20696e2074686520636f6e6e65637469766974792061727261792073657061726174656c792066726f6d20746865> 109.20 185.76 C +<61637475616c2063656c6c207479706520696e666f726d6174696f6e20696e206f7264657220746f20737570706f72742072616e646f6d206163636573732e20205468697320646174612063616e206265> 72.24 199.20 C +<67656e6572617465642066726f6d207468652063656c6c207479706520696e666f726d6174696f6e2c20686f77657665722c20696e206120706172616c6c656c20656e7669726f6e6d656e742c20697420776f756c64> 72.24 212.64 C +<6e6f74206265206665617369626c6520746f2073746570207468726f756768207468652063656c6c207479706520696e666f2073657175656e7469616c6c7920696e206f7264657220746f20616371756972652074686973> 72.24 226.32 C +<696e666f726d6174696f6e2e2020536f20736f6d6520666f726d206f6620696e666f726d6174696f6e20746f20737570706f72742072616e646f6d20616363657373206f662063656c6c20636f6e6e6563746976697479> 72.24 239.76 C +<6d6179206e65656420746f20626520737570706f727465642e2020416c736f2c20736f6d6574696d65732c2074686520766572746963657320686176652061206c697374206f6620696e646963657320696e746f20746865> 72.24 253.20 C +<63656c6c2061727261792e20205065726861707320746865726520697320612077617920746f206175746f6d61746963616c6c792067656e6572617465207468697320696e666f2c20626563617573652074686973206973206e6f742061> 72.24 266.64 C +<766572792066756e64616d656e74616c207175616e746974792028616e64206973206e6f74206f6674656e2075736564292e20204f74686572776973652061207574696c6974792066756e6374696f6e20636f756c64206265> 72.24 280.08 C +<70726f76696465642077686963682067656e657261746573207468697320646174612066726f6d207072652d726561642076657274657820616e642063656c6c20696e666f2e> 72.24 293.52 C +<5468652073616d65206973737565732061626f75742073746f72696e6720766563746f7220616e642074656e736f72206461746120657869737420666f722046454d20646174612061732077697468> 107.28 306.96 C +<7374727563747572656420677269642064617461736574732e2020416761696e2c20492070726f706f7365207468652073616d6520736368656d65206f662073746f72696e67206561636820766563746f722061732061> 72.24 320.40 C +<7365706172617465207363616c6172207175616e746974792077686963682069732067726f7570656420696e746f206120766563746f72207573696e672074686520484446352067726f7570696e67> 72.24 333.84 C +<6d656368616e69736d20726174686572207468616e207573696e67207468652048355420636f6d706f7369746520747970696e67206d656368616e69736d20746f206163636f6d706c69736820746869732e> 72.24 347.28 C +<414d522044617461> 72.24 374.16 C +gr gs +0 0 t 0 755.04 lo 574.80 755.04 lo 574.80 0 lo cp clip np +0.000 0.000 0.000 RGB +0.240 sw +[] 0 setdash +0 sc +0 sj +gs np 72.24 375.36 t 72.24 376.08 lo 125.04 376.08 lo 125.04 375.36 lo cp f st gr +/Times-Roman-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<4164617074697665204d65736820526566696e656d656e74206461746173657473206f662074686520736f7274207468617420726573756c742066726f6d204265726765722026204f6c69676572206f72> 107.28 387.60 C +<426572676572202620436f6c6c656c61207374796c652073696d756c6174696f6e20616c676f726974686d7320617265206120726172652c2062757420696e6372656173696e676c7920706f70756c61722064617461> 72.24 401.04 C +<736368656d612e20204927766520696d706c656d656e7465642061206d65746164617461206e616d696e6720636f6e76656e74696f6e20666f722064657363726962696e67207468652068696572617263686963616c> 72.24 414.48 C +<72656c6174696f6e7368697073206265747765656e20414d5220677269647320666f72204844462d747970652066696c65732e2020486f77657665722c2074686520636f6e76656e74696f6e20697320726174686572> 72.24 427.92 C +<6c696d6974656420696e20746861742069742063616e206f6e6c792068616e646c65207468652072656c6174696f6e7368697073206265747765656e206e6f6e2d726f74617465642072656374696c696e6561722067726964732e> 72.24 441.36 C +<556e666f7274756e6174656c792c20414d5220616c676f726974686d732063616e2075736520616e79206f6620746865206461746120736368656d617320492068617665206465736372696265642061626f7665> 72.24 454.80 C +<2846454d2c206f7220616e79206f66207468652073747275637475726564206772696420666f726d61747320696e636c7564696e672063757276696c696e656172206772696473292e2020536f2074686520414d52> 72.24 468.24 C +<6461746120736368656d61206d757374206e6f7420636172652061626f7574207768617420736f7274206f6620677269647320617265207573656420696e20746865206869657261726368793b206f6e6c7920746865> 72.24 481.68 C +<67656e6572616c2074696d652d7374657070696e6720616e64207370617469616c20737472756374757265206f66207468652073696d756c6174696f6e20646174612e> 72.24 495.12 C +<4920776f756c6420757365207468652073616d65206261736963206d6574616461746120636f6e76656e74696f6e7320646573637269626564206174> 107.28 508.56 C +gr gs +0 0 t 0 755.04 lo 574.80 755.04 lo 574.80 0 lo cp clip np +0.000 0.000 0.502 RGB +/Times-Roman-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<687474703a2f2f626163682e6e6373612e756975632e6564752f486967684c65762e68746d6c> 72.24 522.00 C +0.240 sw +[] 0 setdash +0 sc +0 sj +gs np 72.24 523.20 t 72.24 523.92 lo 263.28 523.92 lo 263.28 523.20 lo cp f st gr +0.000 0.000 0.000 RGB +/Times-Roman-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<486f77657665722c2074686520226d696e5f657874222c20616e6420226d61785f65787422206174747269627574657320617265206f6e6c792075736566756c20666f722072656374696c696e656172206461746173657473> 72.24 535.44 C +<616e64206d7573742062652067656e6572616c697a656420746f20737570706f72742061206d6f72652067656e6572616c20636c617373206f662067726964732e202054686520636f6e76656e74696f6e732075736564> 72.24 549.12 C +<666f722065616368206772696420636f756c64206265207468652073616d652061732074686f7365206465736372696265642061626f766520666f722046454d20616e6420737472756374757265642067726964732c> 72.24 562.56 C +<616e64207573652074686520414d52206174747269627574657320616e6420736f6d6520636c657665722067726f7570696e6720746f2064657363726962652074686569722072656c6174696f6e736869707320746f> 72.24 576.00 C +<6f6e652d616e6f746865722e202049276c6c2074727920746f2070757420616c6c206f66207468697320746f67657468657220696e746f206120636f686572656e74207374616e6461726420696e20746865206c6173742073656374696f6e> 72.24 589.44 C +<6265636175736520697420646570656e6473206f6e207468652067726f7570696e67206d656368616e69736d7320646566696e656420666f7220746865207374727563747572656420616e642046454d> 72.24 602.88 C +<646174617365747320696e2074686520666f6c6c6f77696e672073656374696f6e2e> 72.24 616.32 C +ski{/Helvetica-Bold fcd /Helvetica-Bold-ISO8859-1 fdf}if +/Helvetica-Bold-ISO8859-1 ff [18.00 0 0 -18.00 0 0] mf sf +<50726f706f7365642043616e6f6e6963616c2044617461204c61796f757473> 72.24 657.60 C +gs np 72.24 659.28 t 72.24 660.48 lo 365.52 660.48 lo 365.52 659.28 lo cp f st gr +/Helvetica-Bold-ISO8859-1 ff [18.00 0 0 -18.00 0 0] mf sf +<20> 365.52 657.60 C +gs np 365.52 659.28 t 365.52 660.48 lo 370.56 660.48 lo 370.56 659.28 lo cp f st gr +gr gs +0 0 t 0 755.04 lo 574.80 755.04 lo 574.80 0 lo cp clip np +0.000 0.000 0.000 RGB +ski{/Helvetica-Oblique fcd /Helvetica-Oblique-ISO8859-1 fdf}if +/Helvetica-Oblique-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<287769746820706c656e7479206f6620726f6f6d20666f72> 370.56 657.60 C +0.240 sw +[] 0 setdash +0 sc +0 sj +gs np 370.56 658.80 t 370.56 659.52 lo 493.44 659.52 lo 493.44 658.80 lo cp f st gr +/Helvetica-Oblique-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<657874656e73696f6e732067726f75707329> 72.24 672.96 C +gs np 72.24 674.16 t 72.24 674.88 lo 174.24 674.88 lo 174.24 674.16 lo cp f st gr +gr +%%PageTrailer +rs +%%BoundingBox: 18 99 522 774 +showpage +%%BeginSetup +%%BeginFeature: *PageRegion Letter + letter +%%EndFeature +%%EndSetup +%%Page: 5 5 +%%BeginPageSetup +/#copies 1 def +sv +1.00 -1.00 sl +18.00 -774.00 tl +%%EndPageSetup +%%BoundingBox: (atend) +gs +gr gs +0 0 t 0 755.04 lo 574.80 755.04 lo 574.80 0 lo cp clip np +0.000 0.000 0.000 RGB +ski{/Times-Roman fcd /Times-Roman-ISO8859-1 fdf}if +/Times-Roman-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<436f6e76656e74696f6e73> 72.24 64.80 C +gr gs +0 0 t 0 755.04 lo 574.80 755.04 lo 574.80 0 lo cp clip np +0.000 0.000 0.000 RGB +%%BeginResource: font StarBats +%!PS-AdobeFont-1.0: StarBats 001.000 %%CreationDate: 09.09.98 at 15:50 %%VMusage: 1024 36745 % Generated by Fontographer 4.1 % \(c\) Copyright 1998 Star Division GmbH % ADL: 917 200 0 %%EndComments FontDirectory/StarBats known{/StarBats findfont dup/UniqueID known{dup /UniqueID get 4092170 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse 20 dict begin /FontInfo 16 dict dup begin /version (001.000) readonly def /FullName (StarBats) readonly def /FamilyName (StarBats) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch false def /UnderlinePosition -133 def /UnderlineThickness 20 def /Notice (\(c\) Copyright 1998 Star Division GmbH) readonly def /em 1000 def /ascent 917 def /descent 200 def end readonly def /FontName /StarBats def /Encoding 256 array dup 0/.notdef put dup 1/.notdef put dup 2/.notdef put dup 3/glyph140 put dup 4/glyph141 put dup 5/ch5 put dup 6/ch6 put dup 7/.notdef put dup 8/.notdef put dup 9/.notdef put dup 10/.notdef put dup 11/.notdef put dup 12/.notdef put dup 13/.notdef put dup 14/.notdef put dup 15/.notdef put dup 16/.notdef put dup 17/.notdef put dup 18/.notdef put dup 19/.notdef put dup 20/.notdef put dup 21/.notdef put dup 22/.notdef put dup 23/.notdef put dup 24/.notdef put dup 25/.notdef put dup 26/.notdef put dup 27/.notdef put dup 28/.notdef put dup 29/.notdef put dup 30/.notdef put dup 31/.notdef put dup 32/space put 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/quotesingle 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/grave 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 dup 127/.notdef put dup 128/Euro put dup 129/.notdef put dup 130/quotesinglbase put dup 131/florin put dup 132/quotedblbase put dup 133/ellipsis put dup 134/.notdef put dup 135/daggerdbl put dup 136/circumflex put dup 137/perthousand put dup 138/Scaron put dup 139/guilsinglleft put dup 140/OE put dup 141/.notdef put dup 142/.notdef put dup 143/.notdef put dup 144/.notdef put dup 145/quoteleft put dup 146/quoteright put dup 147/quotedblleft put dup 148/quotedblright put dup 149/bullet put dup 150/endash put dup 151/emdash put dup 152/.notdef put dup 153/trademark put dup 154/scaron put dup 155/guilsinglright put dup 156/oe put dup 157/.notdef put dup 158/.notdef put dup 159/.notdef put dup 160/.notdef put dup 161/exclamdown put dup 162/cent put dup 163/sterling put dup 164/currency put dup 165/yen put dup 166/brokenbar put dup 167/section put dup 168/dieresis put dup 169/copyright put dup 170/ordfeminine put dup 171/guillemotleft put dup 172/Tom put dup 173/Pete put dup 174/registered put dup 175/macron put dup 176/degree put dup 177/plusminus put dup 178/twosuperior put dup 179/threesuperior put dup 180/acute put dup 181/mu1 put dup 182/paragraph put dup 183/middot put dup 184/cedilla put dup 185/onesuperior put dup 186/ordmasculine put dup 187/guillemotright put dup 188/onequarter put dup 189/onehalf put dup 190/threequarters put dup 191/questiondown put dup 192/Agrave put dup 193/Aacute put dup 194/Acircumflex put dup 195/Atilde put dup 196/Adieresis put dup 197/Aring put dup 198/AE put dup 199/Ccedilla put dup 200/STARling put dup 201/Idee put dup 202/nbspace put dup 203/Edieresis put dup 204/Igrave put dup 205/Iacute put dup 206/Icircumflex put dup 207/Idieresis put dup 208/Eth put dup 209/Ntilde put dup 210/Ograve put dup 211/Oacute put dup 212/Ocircumflex put dup 213/Otilde put dup 214/Odieresis put dup 215/multiply put dup 216/Oslash put dup 217/Ugrave put dup 218/Uacute put dup 219/Ucircumflex put dup 220/Udieresis put dup 221/Yacute put dup 222/Thorn put dup 223/germandbls put dup 224/agrave put dup 225/aacute put dup 226/acircumflex put dup 227/atilde put dup 228/adieresis put dup 229/aring put dup 230/ae put dup 231/ccedilla put dup 232/egrave put dup 233/eacute put dup 234/ecircumflex put dup 235/edieresis put dup 236/igrave put dup 237/iacute put dup 238/icircumflex put dup 239/idieresis put dup 240/eth put dup 241/ntilde put dup 242/ograve put dup 243/oacute put dup 244/ocircumflex put dup 245/otilde put dup 246/odieresis put dup 247/divide put dup 248/oslash put dup 249/ugrave put dup 250/uacute put dup 251/ucircumflex put dup 252/udieresis put dup 253/yacute put dup 254/thorn put dup 255/uni20AC put readonly def /PaintType 0 def /FontType 1 def /StrokeWidth 0 def /FontMatrix[0.001 0 0 0.001 0 0]readonly def /UniqueID 4092170 def /FontBBox{-12 -210 1083 917}readonly def currentdict end currentfile eexec +d8061d93a824650eefe2785f13cd28a8a226cfb0a1a9915b91e00d2c2cb80ac548a1ab21bed4518a56748942842eff6121b01bc269e7837046266cb27dafd3a4fd0344e68245aa98a5f1b5bc9db554ebffb879f1c082989cf6c044b76f4814df51dcd03f9e3397f3c73d94f85771983bd52fbe6ecbcd9a2cbb7b3636cfb819daa5469925fc89a188732d68c6d06c906d183cb4bd495aed0c41fe6b7333ad90a1674478062c8996476573a0cdad62593c86e4741ecab7b8c75a6bf02971dfdc2c5a2e1c8f74ab1e91315c54e72426da3a62dede611d5967201fe8bfaa5a21c612c0b245fa35c6706b7b9aa3f73ce16604e3109770d367fb30fa663aa8d2b246de733d27174a0b818d54c58c3676435d43949eb9e5e335396296bc3f096fc154616c0b723b0b4a100ed45072f371f77f26e02f1dcc41376638097d79af0a4ddbfc37dd6cb60d0d34ea5a7536c655d95549b8a5a269e7e927c3d89f74b88e17973c2e8d64688089d329abe6b1009c0334d57a6dc34f22efdd933023231fa03fc81093ef255a199448f17d8f67dbc57c38b2fa163b8cef97a6f42e74af55319eb81a6fb9de18810ba9e3659a7144b80aa066a9f386de3030fc4985efffd13c0cab7049a09a71dc1dfa21a1540f4289b13dde08c0d3b4a01fd2bcb4e256b398c94036935bc270713a24c51042bac575ed4827e17e5dc2997753fcee0ecaaca582c85518edc0c3dee2851fa4d2581f7b399f07013ca3d1d4702cc27be134cfa8aa1cbfecac76f1b406b5b3126c3b7b60ec34340aac6433997656b3dcc1af6c8036f051edfc109a493243546721683fe5c0e48790848079c74ea0640c3f9c92cdd22fab8af9b5575a5d1d2cea0f1f715505cb02a1e200cbe4ea5563d0475cb13bda929286f9c11eab10ddd676314996954ae3c94bd14f364d5202e6ddd20b1b4c7abec1c061b2d8a1776577387a2f2dc424f56d44e58b96f91f7b871627089498d76bbc6664e1ebc9b26486cb727d4a5d62fe405324ceb0a5dbf51c9619f2913e4dcea44c5bac49d74bd049f28b83955e13f0fc77d998a307b0bb560757b21e4a982b59cd5723d66952b8a7ad0311ee6874842f454046538c475b86983b4b8d9c00e814009235a058f6d5fca9e8339555518ba2b64ee925cf0944deff5c14069a1ee1de2cadafaa6421f495c21c042690b3a7c9e6a5a137ee005240308e63e0b1d4bead90ec607d19c57ecc24c2ea9b8ed4af8e5ec19575ba230c19156ff9b23915a7b50666ec4b655a2946f97c5013cdfc31825f2c1040fb28bb8876b1accb1fc005010e5e5d061651dc9df17b7bb37c495a37df9659962680951290f3f4168dffb294f83b2a3c423526a97451e2504fc0c819f4d263834ef7c8588ea4d68c98eb5e3ee3c2de20a6da219b3256400a7c745059581d33158a505d5bb07c75bda324c2d8fe34eadb98520c7b82838835e92ddd1d89516478cb1ca795324f802e1f7a5547f671588fc3e5b909f5ab9d573bb0766569a36e89586b7410b76867cad6577022e9be567d1a5578361d83b817fb994758c679fcfd6b22c9fa7c6c76f2a72be566e42167247c831f826d9a10e03874b9747783adece88750be1206a07923cd9fe06b677b61c69a7dd9e0f9dc60771ac529f6adaeee9ee6652cdeca5789c7f242266d86f0154a1984402c720adbc3dc79b6eece6d378555d78873844ba1cf057f385e70474132e0bdfabe169a631e07d12fd21f18736013499081e58d72e9cd451df304a5bf52c1f1723a5ec8b7992d8fa3f33d5be97d4c114fd435a94607f8be09812bc1fa4db028644e2fcef5d86ffb947a14993a93185b054a7cd9ad734c62f2d9ce3c0f9e2e8678bae5b92315f60169aa85d4ae22488cfab72b841374ac3f39966b9e126ad64c0307b54085b6e25d51caef51fecae4c5ddbfb5c29b15cc90ec0795123a84d3c31173b49096d617707d9e192da82493ac9884759115c02ba4686ed464d523aad69167e24e5303ac3eb3da0eebcc420fdc256cc26d466f979c8e637344958f02ba9d3a481693fbf13283d7d276af546abf2f2bb4e6c6f835c97e532bd5b40e8b08eea4441e8a9e03021add36c4fe28180ea466082e4fd7facb03f7abd47c929c4e0d84132835e59f8276ac7fddec7755cba924dd1c97e02691f13f2e159b1e358ef2ba347e2298b0b39f5ffdab57daae22d94ba5064abf716c866b64add8e3981b76a77a3a8be0a462594b9e1257e7940b237875e000c0e23a0841a85da6eb5af931dc0ddfe912285d160f12a66ebc8717fd37c13d20cc132218d31680d596ffbbb2f2805fd931c61693bcbe365f0d19c8fea4ff3eceefe09c5e29b7fde3782b8adf4bb1aa7f89ce01fa59d1322a1ccc4d92705e274bdc287312b23ab830968143efe12c8d4ac45e0c72c11f630eb5ae0c835b7f7d32cf261c20f04b7df8e362cb15cf38c531a3988afc8eb957fcee0364049ccc8d8a6935200970293486bb69db1969a2aeb39829cc4bed803e0c266c77b0dffd349ff9ae8f95558a3977775b1bc2dba5be54800a9e9645155315b062d0b5a0491cf90a66e84b581070f30d5796f71e88db0352432e8df588d25c9c9b2dd12b976618551d5625e357737966d9a15fe3cd9d54bc275b6f5993ecfcfbb373c419e2f8ed32fcd56d30db1345987a445ad259e03053244a1ff80c9343538c74845a907b0480f013289cf475df6c989a81aa5ba904a63db328292553fd4fc3a783fb76ee6ae50be4809ea0aaac9a9ba429c9990eb45affca8587972c54fdd677cd14f81404c77e4358212f44826316a927983c968767e7be1c7a36f308b6cab1648780b4f1a568cbb0ea49f6a6352d6ab18d54d442c176037ad16e18a17d88cd8fda7e86895c89368239f0f75f8c26f850316a328c40efcf316d8829ddb0fb69b250e41b94144e0475acadf63e51f27f6ecb6af4ed78ddce68c055b7a1f78ec1174bf9d67f54838da11655980a909ae1b80a2e6282137c75e49d703e6d5b4be616e62b020a8d08efd14912337a75857920f1d3515ab2771d38d8d8f610c9801d0b0c8d3388c75d211ac4e4c0c491d3b70e1bf1b926a6fabf60487613e76e6f779c4aed60929561ed06c676de7d5052f60db62e446ca4e2775b966f74a2ab55466ecac93c65e48d5e6b88080f24534ca63dd1e6781920be3010f3e9ceb771c5509754ebf963de75b4b9c9116ba7f4e21d9d89d2df167d8c5674b2fa61f49f016b4269e602c6e144de4a382fb7f185dcd82942081d6362f335695587d2ed1071a70bb27d51200a1de03763bec6b2c7a86d8f200505c07f25fc6be9c044110607154cb69efcbfce495dc86dc634e20349712d3754ce99a8b33cc59ce272e39f481b729c878399e51976652b4a525d107ebbd809909ec95f07f2012672601eb9ada5e0b3292d68b6ff8d529a2dcd23f7150d77ba5b1a36701d5954d37ee96501f9efa8e037290f6dca8c024ec0a2ced95b8dcbfea0ddc55dac8ffa55e224d33fdae74502f8f0085fdb5d6d031d34a609db4ed63ceeb285f3697049800bd560e31bfdc6862a49da0ff4b4e84bac9f184e08181c7870058559f826977e851f7dde09163b8b3cc82be8103f7baea3072202ffce888f1bbe37cadb748e2a3b3b53cf38b4336a4eadd0afffd76389b1dd9d067888c4e647b07a7643b81fc08a15872f08f6295eb45e7838021253432f2bdfca6c2a85aa70efea06863d3ebfdc555f41abceb6fc1a5f92448e917ae97706dc04adf0b7bc817c1b93d2f924b118fac5fe6053093401a4676c6d7ce7b4ceae1f5c149b1d8d712d32d56bc8430c210a7124e192e387ed9696df38ac2763e3a065c3ae4726afe9c16b07891bf5243c16add2bf494f9ae8b7566d4ee600a7fcc945d4bdd305daf4df51b1c0222e5594c65af003b51549e0e790ef194943d4accef39419ba173d05788ff822d4e3d4fb5a612fb13292aa377e50a44a6953bb793d0c521c2179012a882b74ece2f79723fb75624ae9c446ba358a3effd738ccb59a856f1bb5afe8635e1033936d58da18ea1f7464758e4647ac03552bcd1be22ef9d4c0f4aea0d7d1c91234ac50d5192bda73b0e63a8303ee284009e6f42c0a8671cbac1c02ac67f096cdb67e83a8d3a8b0e2915fe4e498d50a80892a374cf637cbdc145c2a4a16e0449fd300f7f03b9c80b320addb404d3b7388e5473a6502c74a9d614b21f2526b2e4f9fd9c5adca0f01677b57de5a55d60d9c428c6833d7abb14514926e09bba6b07763aad75d0a934b7c44976be43c289fb238aeff7556183515a5c4b085447922adff5498d29e101a60ff02e893ce8fb8d446874914eb3d3009db46a579d14dfe884d22d9ca5bfde436f4bf334c8c8e73cad66d26b9b711b3a2a3ea84d6864945e529bf59d397ed0acca03a3bb32e470c46cd6639cdae83b4e8e6decd2e8574e1b9361e2600bdccd6c9231ddb2b5981f4148984e0d21d2bc7c54fa7b32144192d32a60bb17520e855b14ea6ba31068d4e209a5add8dd6cec44932063adac2280f985cc70099a1fffb3cdc3134604bb8e50ede70ce9db412a309a21a0541662050f545cf6f2fbb39e9106e83d34dd1a7f9f08b66e68052482a68778687aac8b793ca24cf3d258d7991c4d2c0eb760d1b83dec08277bce87bef9883ff7af63a927a509eb44ffdf2f8f2a529baee6c68478a1f8a10c81fc3fe0a88004843f05d15b34d04149508d7b29ff2b11ad5e150269dd78545f0f57ca1752f6197a8539ab3aef587645b5dda3dbf18060d30c3426f2fff04d9bf22f1591762597d72cd6225f01377293696235f084801440fb9590bf6468e73c11d7de5c7c9899d6a84a9bbe18c8238e117ae4e74ce9c087957935630399f186f4712caa2775ee026f1c9f334bfa2ea897f2cef8f6d2f200bb2fd7d9292c056149cb3091d54be657c5efb690dd7290b7f866330d8b64cdb134019ba3c608bebca348fac2ee3891d54ce18d427de0e8270ca0b19b5cb9ab69ff7bfce6b5c6431fc794f1a2ae04975dfca6d865e38a85d0092b339119f43ee8f11f999ff0132145ef65f2786d9dae9c45dff0ff2195bfc604db64e4da4b681dcb6a3e2be4f691bad02abb6347e7ffb00172df452182679d10029a878d14569825c6df61c229e158f92a6a0e0590722313729ecc3c93a9de9f044e62d3abdf500ea46557e90649aeb8cc582bfb6fa71042b330800d50aebe27e1b7605c3aca1f67c4116d93a1d59d7f9a9d7dacb2c949193b0e901291474ed0f6b746c680b337ccc6adcccddfee2ba9e31f588940931c6d697222b14220ece34f97d640f78eafe33d689d8c5e94ba3eaccb197728d58924f1325c5951246898b2477057915ce4caea524151e7f3cb049441ae88014b89fe7730eed66c4161b2e01d608d977d674edd37527433214b40081ec8a262da3f69f07dd54acc3a8dc5058a927bf7ac5d3ff18e0e526cda9eeacc331cfecac11d2bec5872fdd5cff5f7459a42f263304294b139fd7106149b962873b757a2db3ee8e030a8ea3af3366fa5f3226d9f9de3c48dcc0f701ac74385d2b753e655804a834456e17ee576872bb5e9815bd6ab6a4555ce5fdcfd0b1637357424813dfa6443a46200dbcd46f7a15d342c14e5b99c1e53953283d83e81311eb2537162005d2bc0f18b336e33f7190d4cc4ab8a86f596ac2522b6fe3aec0befaf024e35f811a309c8a03734e432ac4695d977d6fc14c93773edfe0eab4b5a0a6d55b4ccd205086b92107a434b119d15f145d0f3511f823e69a4b3777b659555f06116cd99075982c200e36eff85d7931c7b918af5504bb4129cf65c8a33964b3b6fd3b2340fd3737c73f7667632cbf81535b88096e99a5e98ffee00409948eb2b46010a275ffdf345bc0e359ae4c2b6b804a36ec5018db1ddfd43ed28e0982be3dd61a41fc78221bfaf4eea3c94e8819e2d296a355bf61cc29ad69e2baa9caa77f4587be6bccfb178d553bb99bdf52716e6a8e2626505b819cc595f5173d13340fde8dbb4db3313a66348c8cf5fddfe7d7fd04becc8fec0ee1385ce5329088e772f1939fd59e2dce71c2946044fdcd131e06695ebfe5ae6e512640d0ea79492c20880391bffb1b3c9851cfba1b5b16d5860baa2a2b1f4e0a571aa3551cd73256e171c2590687e3596108defc56ca6cefb27095380b0bfff828d897c5f4a1f7710cc1fbe37ce9254c27edb772093e789a7e2a941d676fa8f14edf641dcb06fbd638e74a3764be77ccb7f93b5f961be59a6df0c5305b6ab3a20ead2d3eadd749fff40762a25833c9efbe377d2aae40b18e7785a77f9eb4f05f987ac7572854859f5fc5f56240e94305543baf5df3fb905a1122d20d09d7133923783f4d1e30ce9bc990e1d4989280cdcae75b5a78ff48ec68254373f9a57663255c0d5a18bc78b3cf2002befdf0cbb3cb5e76243b963e16ef7a34a06016dbd728117ed141ce213dae5acc96930ef9320938084dec3f77ee4e595b496648896de03deef6fcf49f6477a04a0b190fa668ecb8dec555db55d7ba7d0151042dd4f205e50f53ca706d93c9ae1b67b51989ad1b3ebb27f2416588397429d2129bfe0d5fbc7888fe0ca49754024224ba6fbd089214122d5c5dfacf7fe314c34581b80fe2f0786f7a70788a1dc27bce9f69daf04f197e9fe3f735a339f6f88067636e23559d1a02cd1d8b70fb07146532a5b404a4491d8650a22ed0f49088e86054e76656f079074ae121f5039c5a128109551c3ad7bfb874de16f639a82f0cae1ba1e26cb21bb8ab0ffd0fdda61da950d00e9a9d319c32757cceb80c07716cecf71f96dc167d760bcb54c8c41387d7fb8b5f884a0f7f53acced99690e1316a8f2005edcce538b3b511a637736a08c932fe9f54e281535c9ebe5716228cef9648813df7f0ce70b5107833eb4025e11f93aa574ca8215ce3dc6a5069f03f22a2224d9d2f8c819714b3b02f32066785f9aaf616afa69a3c031f1d1ece51d541f60d6b8e739b63b0f6472b93e5e34cbca3474b47deec1d72ddf91baaafa42078c177469e8099ef4a80758225c7839a0ba643dc3c88fb01ca0f278f077675f0f3bf3319931f129dbd9ef04dd0daa8cf8bc6573b6b2091b64326a366df67a739f27f8c20f47ea3bea9a9880b0aa3b558c56f6596b0f51b124b78b717336142cc03823f2d75c0ad84c09868cbd0dcfae4ccf37b345a26d5e08b20c36505447042ee2ce81f450a835d7e0b679c0c9eae37ef6982001a8c52708c5db0ec2294a90b9876eb789ab09af859a0a879cc27d2f52dde9e9a6960fca2530244cc26d3a21cb294458d707dbe2441460d79d1783fb334a3d144339bdd635b676a1b260f5969bf089d59a526f56bdcf92bbb2d52cb268ccca6c66e4ceefa57c72cbdf8a4e1a2b57ff356f8fa49db680fdbaa3d4df9f1d6201307a44a9ebef9ab8c893518d71beceba645d6df155f6aa68163f8d66b40c1084b673ac16b287f763d40db303c4c9f9e76a3e8fff77d595e97f7e59e56b02aa8f005d0c6830931892207e25a11520efbce320b99362de47e093fdd48318cef9458ab6b4093d1480ab1424e82695527412d0c5e3c299eac02b67ee503a9d04d31431d172f50666fa59e778dc43ffb7eb3f78324a5cd88601f7109bf3bc03f0256ec90473715c9a626a8488a4ac0403438c7fb97438334506f3718c262c6fb671cc1501e1616281c50c1f1abb0e796b5a989d9419e9146784619689562ee006255b58c5030d4deb7bd4e723d5dddced22c58905adb6a1b319ff10a8610912023c965c87e8b9f50babf746950ca2b356c1a9cc1cb8180a3536b2a639a147f65a8178fbe711c5fffb8fba62069c74e02ee7bb219bde7f581ed080e33ada55e37013823fbe5eaf8f7b774209a75b047e7626b8b82733f525e57792ca6c79bd882c5bfa323fc5ed98227c892ff958a359fcf654cb8facb6827d717a899ab9b4d2093e7a3762ba0c9f7ad55124173a5bb29f9f8769484f698dc8f8b394816dd74eff3b1a7dbdf16096bd0ad1b5bd409d56783b6d418631be43d241d6b834e1e8107bd9e296f9aa43e90ef753d6ad527875f230f6b1d3914692840fd51e8048ef5ecc8e7d2da90645c8e0acbdb3803d677cb07714a5fbaf0caa48234e6abfd0cc1be8a80ea7e956ec40a54ce712c979d9d108c28566d3c71c93c25fd7c202c637aa06f1baa00ed6262f87062cbc03e7722983a7c87645ad8d6e0df84112139cd220b03e3b874dea9b9705efa254db06927ab7951eb72ea84b253e0bb877b77fb1810b078ba9f20280d7e85fd9d134ee7166cb1cd51525a5bde7cf96b26569af11b40dbf5b4b25a662c9e14dc084cc349bf451cc976d1de3ef735d001c18d7e6027fdba88d29016ba395ab7f6b1d232151acca1ee234a287c2d7843223db3df6e3e5325a9fc82d92b0baa4a28fc927a3c3d307f7a7ca1ec7a54e8b4a56c177aedb633425bc7676a10c0c2d51b5555f4757c2c9908cf39eee8f85913216c5df40fc6a04dc460e99f55844700b4e02ef7a81ddf4bfa798e5ea327d2c66db67c608afb6ea5753ade25c620d52a5ff2c1d43385737d41e7e6cc645b1f9dffacdc0e8cf72a9128abd66cfe77f2c273e7efb2c6d3ddf4848a023911b7287797cb7a3baff8df5f4d8baf2d30d8ef3daa330fe4728f2fc405bf82b6360d1c9f78d17fe13bad721756ec2bba578702ab8a41c094b22a2ea393e9d4d597e5d0c2f12ab5f21d4546ac61e0b96ad5bc47586bd42edd8caf964cd2b997e0bd816ffd593d5481a8ab543384f8090d7cc0d9d4dba9001992366bbd61949f2b33bb6633f45554e879ec6399f11a13be5d195c927f9e4fb503c2f7f1af69725add00166a3c6f0b72230416d09687ac6109eb06d16b8321ab293cc112cccae7bd8233a6206b814694eb0057b708a76f7c793115dbd09b6b6808cddd0dccbc2a20c5abd02a91f0846ac0856a5cf7be1319057e48631937a3bfff2d24f0fecb55e929c1c7d8dfddf2fb892926e20c9fe4a84bc1d9dfd203d438a7f989ba23836bd55b1089bcaadbbbf19e8cf001f75059a1dc3daace5ef08b0b55231f3b63ccbcb50805601c86e10e48f90dbae123b55d421df8301a9c67f4cdead045d1ace302b93f9337ada9ed3ea36369cf35577e868383d69cd425ece04e0cdc1940b296c35e1314d837d6fa900d661eed125ada136ae005179a03494e23a245d96e60cbd7a04f9503c227e835e58935e28bdba5446128f0db08dcd9b85049c5c67e357a3a511f37a71df23c25f971df40b9982b1b5ab845bd4870fbcdf4ea319afa2e225dcbe3b4b06b73429467ab402aeb48e3b661a0355cdeefdb754d43b66d1b576a1ec93994587b16fef1d493d53263ba10fae3dd01736b479e33dcf87dd9af58b353bc55b8a5382aff065773ca8e932d8e55a80537dc04193176a1c38082e3d4fbc38ffbac68bfcbd80ea1682b79961ca070d3f7938571303267b2be5afc70f196383a01fabd8952db19f7c5921fd66ef6f44523adb1bb09ed0cd03c14b8fa91b088ecc5152d6e288f2f388b5870733b489081581fcdc2e1483d3a2dd9b1bfabe1732b2ae37041d49727a2bde007820f328cc2118b610793e6a6996e1f336a061eef6b61120049fd0b9f0847409cb3a8ab404c563c1769de2660b073dcb30bb916f3679b5819958ce2f5330634e2361cff5c0915861ec791b0dedf34a845103f7e1041a366e6109b88bcdfea2e0d0d260f16717d67e20c9a0b624f15f1f05339a408dbc7fa3b8395895bf50691bbeaccbfe69bc22e136a37fb9d074d668eaaa2f98af8ee35119d46af0dd9939462cfd2ddeb85792ca7d38d61e2c5109d2c91fc8232503900396ae6a85b7a88c80136699e77c0d7408eb88538cc544a3db250e2bcccbfa8076d70b026d46cefa250c128f8ab95d1ed9f028d56b01489d81da013201747b80513f318b84fca9dd1c4d65f36a82d09d847d550e1854341338456714e0a93424e6146e34994f84cc6bee325ae41d716920dcc0bfec62368546c901a8d43bf94c9bd2cb56283888ca54b758135fbff776c9fa98d50271b172889414b7e948180c03700d2cf3ebf390f0f9c8985900a76be9171f7439c60e18a0db5a46983722ff1489f77d24f2112b9035e65cfd10fe4c560426e464b6759ae5f24116d16f9a3167eadd85389114535f44f8054d463c1b8bab08779d40b74ee854aa6d652aaf40c30d63622eda14aacdbc002c0891abcc764b676a3b049deaf49d6789c7f9cb12bb6f0d1619548bc12b6df69c98a4af5b085c76966b116d6a2cffe4a00733efe59a473985d5602319fab0f04dc3a55be53e9c87726d6ace09dd8343e3e111858a3ae45b35de08b1730fc628265f0afcd3924b9c143450128aaf68f41fd5bd4aedfaa9411bd33032a81405dc45005c62b682112ce0952e1926a47571a8790d639580797e33f991aa9c0b7178448591f044dc794e31acd413e6ec84b3ec0ac0df66e08e9a89727f91620f3f18f9238ada2abf4557d72553f01bebdf62bdf5742d25b47def93114918c643aa2bf8761441ba5e6699760f9370b5c29545606f6003e4c6e4725dbe4078b416022b20c1d2aa30d0dcbb724783777fcae6d2487bb793e9435218f93573064f47408d08a9c39bc44caa91c24177e8283e59cb9be2c46c5329b150478beed8c6e1e35bf56c3becbcadaef963bbc70128a1518c635420921fb37e2252910e270692e8bd641832740d67f2174ff3171ac73c23512bb0682a305899af28fce475f399ffcb310dd96cd469fbbb7629fbceccfc497fc2e469a14943fbd5c4d24c8c89b66f6638daa38cbf9dcb49dcf016d768acdf758356834503afa00b7f5c8116e147c5397c2aa8ec8a241bb2a5dcfd45627821a79dee1ad9b162796b53c59e3938c94a2a531b737b7d108b9f1f42a2164027e7d3922858aa7931dc0f7e0ec8e0fc30c27d4722a4d083115c916da5976680da42e3a7fdbcb8084abde4d1f95f62a2291847c4358cfe83b13b9ec2f1378f75f787b2b573a027b24e9eb8a47188be809666df8772e43672f910eeb1c23355987358a1bf34c3a88c2647a46eb85c1429e2e5123acfce3504e0ccf4b89e9b3de548e2bc16b8e765bb53568070a17b23aee93b0988b67e10dca6129f19083a22e950a6beaffbf958a232d2b40a7966f96d8d6c1d30d4e9d42ee28dbcf0bfde533a8b5c07c32c90c634bbb90471c53658d596fd066db06cf96e76f5563b2dbf17c284fb88a7e389b9340cb17c0707caee7791234d4b9cdc0406a59ad5aa3ebe06c7ac21851139171b188bbe7b43422e3847e30014dc2f4966126c2d23e1d54d0db34fb2f415347f14ccdb4f533d2f4ccfeae45f21b027cda966933daa5732464d7e125f32b05447fe1d15170654b53a5fc3ee1d2d8427096d1f71f2bfa3e240740c879ab752f0b14d1d17fd880f05d65ff64a05bc08f69d97fb63dd78346b9ca038d79764cabd013d57fb3506d4b0ccef1c92bbd704aaba9cb912e6034ec9ab77210531c9a1266c272ce3261dde19b9a574fe5a7a031416011100ef594396adaed9f884d18173f0fbf256e47d5c57a47864a3d592c2324c39bb6b9f8cd770e23e5884fbfc119eace855f4f21356a57f912c9e27fcd292534cf2ce0e0490aca08b4df6a3faa614239252279fd2c3df91e054129e1ba23fd9b7a90ed0cbc1f9f8790ebb11bec7b0b07a228054e1f8bb4241ab3a66bb6a224bafa455ebf835e5cc1b0f7701e2e64190091a577dd835afc77e72f3970721e1b6fd64ed65abe1b7376eb58e3273254b2da264df7a97286ac43f1c55f1b50710f54cf02da4023260084aa143dff539c5c7d5951767d0ca6b48d5ae8dcfd1727774ad1c5e7273c2aa5076c0a0fa3ff8f1bdd088fbfc17040808f3bbaa83a228b573694aa171d4fcdf13185e0a010788698eba537240a9ee729d7af975b4a8637901fa3aa401cee44a0940b4378ec67b101784d07fea844a50c542fe2a3e01bda791c2ba0ea9879bb298b7883e1b8ee13a88f9dd3b28813baed3f97c29bc8b9b2a0bdfd03df29f826498abe20f8bb7ef6be2930377c56430b7b0ffafa4193998c32fb12ab1ff63695a3201e227698fa8fcdb065c9c3a82d2f0b8a78ddc9afd5a1c5b135b019c22a46d8401559149293420d91aa98397741e9cf6bd30134bd8b5f3c5a1889e5cdb61aeb0f8a052417c5dcc3eda52fd90b2a8c2ade1a0cba31ccc88a78e1573f68ec6104fab6c417c631e90bb9ee10daba4cc047ce30b2eb735ec694521b7a87edf3e15fbacc941269090845894eacc56321d38ebd3bf3bdcffe80e3b21e4683736c81a61ced165e3a2fa10b969ddfa1f55d340612e7550144aa43868d2ce06491f2e5e089b1fb3880c17b6040343b795832e1638791ab2d12b1df0ae253aa1b3e9fe01bb06f7f306c7468bdb397cf4a9977caeb0a3c95adcceb5161f95c985b08d5d703bdd011d2d4a38f16795b54058fa2183ce076cff0762b3ebf56d8d8d0fafdd508449a2f5b0a8692eabfa509dcd0b38f09f4f99e56a0044c61c067a107857dac52e1a364ea053dcb290a7cc1c78420bf502fcd56c804c8729871aae4a4752eda8c1f78de3419afae90eccdc7572a00deb5e1a90d1b8676ac638f011b18cf42c99264d350b77a64a09c433a470f3a2ea988348f59abaa12a1384b0558890e955f1f385c05c740a0b44bb51e9cddd91bdc46c8804eca94cbf9e0fb0c18b770b70f81fe5c9c6554b3a781b22665de565d08fe0b3bf6a57943888d387c19c296827e60eb6b81685016bd1b1c8d95b29eb8c335fd76b208dbd5054b22e1fc0ab4743f7b95d623ca64c9f9afd5285978bc5635a54a70aa16e736372ed027e9518a4d0d0f9951996b210830e6d46ce43272dd0923483f986349321b2184555b6a6573bced5fc778d682085d1970f05cdbe85c936a4634c9821776b4ca2e8dbadf3715228a73c71aaa271ad02bdd76a00aca5bbd2036ef7bf949814e76561a22c2f2ebcc43c7f4af62f5a40e2df2ba612e77adaf6715e1c980aec44b1164ea20020dcb5d9fb7072052e733a0a5b69d175ba8cf48b780b371575e490571e05b3fbff92f1e0fb87abfb18f4f81c8838d5bb155942adcf8911fc3926a22d60bc9037d8eb026ea975c00937d79432be5e791ff1265b396443813020ad11f0e0ee66bcc4d68aca9ebc2b4b8aff28de824007d9d9d00a12ee894e55c565f957f5f0cff21e1219c0badbc99de37c17efaabbbdfa903ca892d5a99a7201813a2ca9cbf7b5d19d779c82af7a1be51cce30ff3820448d2e10b39154573358bb6376ce5413267f6de7d7cfcb8d4d9aeed7a0f6648834b1452c58f397ea28dba8cadd4ef29382d757b78649c6436aa3e38505e1543fad8d22a415f8c0b6afa7bf16cbe0aa85eb9042f0757c8f3ce4e0d432b2b0a328ab69529c5f8bf8da11b0b354858df07e4644aeda913eaec05fdc24b95f6f4307741897662f347ff5785bcb06c0aca0ea708cfee767f385962de34b05f897242256c1eaf5fd9382fa9f07c3b2acc2d0193cc7688fa71448b4374cc3805cec6e7b503a693be2438fb03037d7a70088dc9fe10ac37c84d29c8b5f04648bc23c998872af1df21a88cee43d52ab580248f6d11c0896d25c4ec8068afc138518f52a23c9c8ae8dfba103cc49368a2ba7a6111a8d0e154d007cecd32d9a71c3341ee238d7664d39a263ce2d5efefe4065c1654c4996e5eb10397d78ab6ad8155ab5c815707655d2a85a00187f8ed16ca19f0fbc8c116417420666e9edabb192cb81fc6e2a4fdf00bcbe0ab582a63de69af3d7e7c6ec7f23c09f02a81a221ca2d2edaa751bfd3949ecc3e81d6f518453b47911b0aa13ff53dd8a4af4b6d8f40cf4ed2f5c3e700749aa3211aab791b9e9e899b4e53f3cf1d1c62bbdc06ae2ac394be1a9694858919da321123184a8a07d01e084655b974e8ae6919709ffcc4826f62b6a5dd420b784eb881ae6e682b292d2e575a28eec33e21afe2fe17e024829ed46bb4babce2e65d97a656feae5f5bcd3f10312a5a102bac3e502a468c382349d47b6e7fc4435a8c56d61ca2c33d93ded9f2165c1f640cd23b0f36e64adfd4c5afcba0fe8cab87ba2040efc0c2f00d3fbab933303b1c34f15a60158e5ebf5c82ed18c84c54babe8e1e4910921d3cf829cad909acef813f174ea65802614fb567944b14630d1e4b063c49637e7110a2ca6de4f34935866b3ff0c3643014aba7f8ce5b2701abc1e0f9caa048e7d8fb937bff1c0319a1de8f126a16740d7f0a8833b60b56864f98ea428e2f105ceff6dd30a16bd24da9f75dea0f4ce864bd44bc52b73057527b73f35a7f9e7bfdde6435e68fdd781e82b69b22c09b139b35b5a47a385ecf05cbf2152cb5c686616f81585bafa01d067a5a086cee61113870dfa9bda1b2eb1975403b994e4669b30bd5354784b1c5126ea7313e3230fbab806e8cc7411149ac52029430ce0be92453dd7cb39026ef26451d2f230392670bdc181a0d0b24267d08861c5e5e0d00d85b84a0873c02f678f2522eb8bdb04c2624256e79396404f475be988e4ccdca00ff9c4aa86cc48ac5f05d2ff1ae536c5f576d719862d44049edeb7d25c2e78e328bff60bc1f09db639c10486d65a8da9638080ab92b3c9af7799a8149cc771857f3d36a495fd7e58236beccd8ecb68aa4fdd1f8b3fc21796e7327e0eb730e0cf78567e40a8c0842dc3a9f7451f347af2375ef47b560bf6f9cdc8e682ae9574b9d7c9cb4c764ee84a22303a35b49568d8dc89f74c0447b0f263ec71e4acc6de6e6116085b7edbb61ca4b198e2af4dba714c3fe6b9c821ca1880eb1b896b01d086e80a43ddc9619789c75ca44f8dc9d4013ed4d10c50976201e6f020d6993d42fc902b299000581b04d1db1a4c548a774fff638bccb298f45bd0a30ac11a107e6b9042c41634732855c7431610456d2d163129166cf90feb8df5a72ad9ca31a8613ca3df539f599996904716878028bd884b1a8d75fd0d3fcc6dd8e007f6f9761ba55a00fa6799b6a3ea67a6a55ff8843cfda811582ef1b553b27c05331aae09b5a46aab96566568153afaebb7b4ae5e71f7cfa6fe08aaa52aea18d1551068e25942f623c4b8e8a56f46e352cafe4885dcb1eb19c458580d2049ffd77af8380ff452acf5ab88fd52d7ef112c29ff6464e62465398fafd06ef81bd3fc2b4feecc6f45f0146c96d4a7c0f90e861a1d433c5deac14a019f50511d6ae9f363952c0ba815bbb3774c97c16038e82e39b76bd15f58f6c693a973d1cfcfdfd65ff61efd3d6ded93c3aef8a715097e97d24ddc94ba972fdd68c732e1a9001f3fcc1a71f1f9fcc1b98637899fdb949c281d858130712d5d5408f0208d62f5cd7f81dda2649edca15790c87cd4e24ba48a7ae328822f5a21e57f6fc5a6fcc71d532ca6817f6eea89f76b60e4fc7bd243c2d2163b46ec46ae4be40764f95d1a51efe6f6d8274b668c50cf1de75ca2b4791dbca7c9232d147d568cfeba0b44caf8154bd09fe8a55a8bf1bb1afa95226a827167b13f33b924ca637182b0bac8b56e03327986568016841bd25cfc769000a7c746b2d930d291ea94f371563b92535003c4bec0bea1b134915286a1665b643bd011015ef04ac9d5abd487c0c4d3c6b20a00646b476e518fc0b008960148a123365cb40be362b3b1694a8d5c05d23b018370f616496a52c2cd25021c3795baf897f812f62a5a5721ac8170e79b49cdf906bf71c83af3c445a82a9b0979506e7df0fff03405f717f51c69c995d11456b03cd8bf9395d33fbb127e4cf9d8fc8411a26d42617ff2d64e886ba9fe5c7d5b85b43fc4faf88e7b4eba7145234769d58d53a5c07d1468693b0f93bac6e2cf5a931b11506f556484824d227e448c0a3805f2217f136c1a7d56f3421588e286adec32d32422b95ce8fd81eda1c3e9beed20f03cbe487fdf2d65f59add2bce47cb5f225b2c6c09100225b4276d3cb5b6792be4b8f0489bb750f1188f371880930d79cca6b09b2e3f303f766081097bfbc5e538d3cd4ebf27befc9132225dd7428d444c764860a262e95221f0f1fe57f5ef3e4432d2be9b3c9954a88e58cb329ce9cd37f4fc8494ad1cef800a7bba8d2ce486f7ebd7a5bc9dc73458bda9e4c46c6297469cb8d4e3877ea8db014c04ebd313c6b1ab74abb69b03334d562422a6529b8e68f4262dd3ff05acf1c6d0074d35e4e977c665a26f86d6bae2c4d64114ecfb334c4d575adab7905729ecc6345e3726d7f2c361ab9d75de26315cfeeafcba9bff88c0ce812554b1c6ab0c5765c5618f1bd8dcde547b86af905406ea216e4eb454e59a835fd9648dc5c8c9da88d7a753a2516b50d93e7226868bd0c4c6c2eafa7a0696a8ac2f0f3e6958efc1e6504032b42962ba6eb3c5bf856cbc6bb090d481489c42a8e6d5721b6cc02b34d6650157752126de0cac4c31b7b073e2d6d546476682be55d764f5bb3154d70dfa9244a6fe5580db958e4a766f95a61987102d67707838b177d10d116ad56368c48e815b30fef5fd6554acfc0d9e64d3c4f6b8e9b8ef6af2e09c6126a92f0865045cf97c94070d2fa013be48df5e50bbadd9062fb6183b147f7dede8b571826f81d546abddf5de4f95a97bb75200ef5dec4abef4950b587763db4fcd61017a457c00230cb8aec3bd775980ba70362b6e8d064f81062eabc6149c115feca46efab3b703e76a9241c72f6b6810adda98e1baf07d6a7d8189f6ec869b54941c40080a91980fb827c61c1f7399539387fbec2d1d46a54b1f518859b3a385ca098b86039bba25d2e49b7968281e3e1c3e5c48f2012680d81ccedf131a8c8891b4134bdcfc70854fc7787d03671c9e55185793ff6926ae12f1dfe8cf246fcd33d88d159842e8dfc7c257836c98752b7152039eecefadd80ff76e816146635ed2d36fbcce101eee7daf1515676b9a2b203e1cfc8859d128852e25f9cf924c16d4a47272e495645a6dfde91cfeb39f4e6a1613a901e2bab7c975c885f6424b617475aceb396d0d3da14c102a69987f66f38599c60210dcebeddd8bbc80aefadb225df56b7f48d1ab0a8c92584a41b9fa726a7de8620cd32472c1b89ee1cd0e3da8b595f98672343417f766bd8d9c52f3cc1a9bd6e1c8c1e588c023ac6e5355e68aec6bcc303577faa7bff293265f9506c6107432145deedef7b254d5890c755a39f5b3aee4364373a931e98d5ec011d247fa9ef17a68b2df72810929a628f6ae634f4427c1538dd02e1c9962f33273cb6add06c81d6258de794f09700a9c8b2b6c3a30eeb00ece206d70dca75beff10e9619d80bf0a7d93f24cc82b33640aa992945eac34fff30584801e2ca0fde10854ec1c60cc5c4bf08753009063e7efe7e07a94cce2de1d2add68f2abf5e6fedeb161beb5cbac9ad02c043d3d157acf018751e1140776a7f32d71f34c05cbcdc9c08a7c7a03f596dd7164540566fc54fc1fdc2b23b14f002eff9066b55e30040ff5ac54b8fb6d9d643f939aca40e5005f1d5972feafcaa34f2a72d6ee03ed74fa5e70faa11ad4e8ad2d0f788900aba49c29090a73b3432d9ab5d933c115abe4718cc9e2a2d770e9cdc735ad5991455ee0496b0ef2465e39267af0e36c30da7f3ace53cf3f6010679001e39f6e2a55da65870e9793b447b418ea1e519dca3c2bf0e1d0b0b07ad96a0708f428173694f70a113c0a0f79b3251914d7f8af58d59d6e198bdd6155cc3a4468be06e0af9a1c94c488c9fc6b44e759e43695c0873c1415fbf56c065a3ed585a790bf38784ff3cd7baf3f4b22533d735684bbde582438d213bae7dffaf897289cd0052d6788718be4e3b7c071d3c6c7b75f6e0ff3437e48217e179e35db0f088e80c8aea5749c71fec4985d00647877c9db4a55b51f07198c232adae969c821be6ee6c2b1ebdadb00a8916b1f93b1724775ba9efb421df723d54cf22caeeaa1b6cc7567a4279647a6e099cfe285cb30cea5a1019f43cca22765a15759f20dd681057a0832833c15c54cb1e3f0196aff51abc2b0ccdf37edab8b536c2a4bb072293224e9d4e83ed427b8ab2b92f52a3fa6bc28269618922a022f67f778779bbd3d164aed6747c9639f1628a6643f47dee03112facf7431bfa1954ab2d58c7b02ee380b86bec76fb52093fa5419c17f20b123ef0b0b5c0efded93f18e2c0aef25c1665c3f91a3f7faf4dae9cbd84efd9ec0a5ac4521051118c1e28dc3282be83918c9b23e06363782ad6d6e99f69a016153f70845309cb9d8e85d0ef65aabb02b0648665ae39d5ca7ae9c4de2cb940ad8e9b5e0e59ebf2298c6e16fe35886fbbeecc719f000d9c9764f3f90f66c8f9a243bb25bf84ff7cafb76be8418da346319798866bda42213d5acf00d836b2a0487b7fef2fed4cddf10633bc7f2fc2c0e7e7c8785b9bc1eee0d2d5ba42fafd5360f9c84c1a9fcf8a76ad2916c31d66257c39a760621cd0ae7b4189e051036acd5aaded0acf934fef24fe71a14cadf03afd4b7c1752e0c2890930d3f74b2674bd6135555911face869062ba346fb8bfc45d09f224e69273d4d00d5451ba213c798811eac1b8fdbe4631313aa8e35ab728a1bb9db3c806c46db222980828ecc596b8a081368d73f184401ade2b7f6debae497ef70b13d2aba139f22f233b4299ebec79ec32f868786c60171f0633ba142938699a702eb57a26d9d6b2e955a90f1020e798b3903e9d9dd8f8c98888081174469697170c38d5737a58c8258c8a9361d270357e51b67011ebd39578f6963f18bd050d014b592dc375e006cd02405623bb724b1dade6b3cc632db58ea103ca4a3d939dee5df3307dcbbb3e3d0079fe70c6acfa53430f31075b1ce444454ab8208bc4dd2b71d3d8dec8bc4d49797d2bb3f6b35338e9f1100b6c079f327a639e33cc262fad9b18fb3746829af4c08ad4a84baf08f6cd31070997c6d4b78fce290807a05914db726d20735e0e7058f73856aba4dc8642c0fd52314e856f32e5d0dc7edb7fcf7c5d04e2fea3af94ebff28fa8e886d756049f0e8a4c2d22c94866366ab8b0350e1bab7094ed1337ce3002463e49fc894ccbfd05f133ab0500da55ee616f23b36a748c528ee8e2b792eaf869e606de86d3eb0a7822b7bcef21c010695c05adf371a88b0b36981910ce1317560bf020004077dba0bb55f26249beaa36e7da60d783cf89345b38e3c1b5928b9dcb5a677ec98cd4acdcf960d3ffd40e86c6fa43ffc198c2bb1ba99fc5fed92714591730fbc7a64ab5ef06e18b5f18bd37fa9c3d954239d6dcbba27c3081eb7944d53428bdfa189a83db26d864dfb4bd729a2ea41ec866b8814d8a0664f0dbfaad60dd54ec7c61358ebc416a6bf798fc65c408e48c785e9a0746548fa593858cdd067ae1e0b5a35e49a338dffb1aaba512f5fda377b8f3f4aa6c76f2d33a6d4fa73169a9a2cddbe44b49075efccb37acd99774e63769ae150647f354f0b4b93ff3028c66de35f1d715146cf5d5c1a854b45bb38a5fa45aa211f988b4c9daf94f61ceafbd989d168439c63b388672d2b0bf170b037e5c38e89df56f80d7c6645d7c045f4118fc79b7c667e0072500d627eac7bd3a17614934e238c2f575f4a978fd53246da9d3df02a28b9291cc09a71361b010d1605e86f4f58298cec9be2f7e17aedcecd5d87d7302b2290f1313eff056b100ff9890dd989f495182e2532c691d96aa97dbb2ce6481a0f76b4e26fcd97a02996c39347f90aadad5c4a65e62f9ba6f37fea8df342d5c6cdda448bbe7dfc4a461fa8cbe1c2dc0a78abcaa67129b998e6f9a913a6e7c84e36b936f4db32f000d06bcfe8ae2d5fac04cf45bf3fd3f117bb0b3da685e109a82f200a1e0d7f8522332e5524a3fbc6e864a86f9fbe30558b3263847d890afc1b64e835e1526ebf69d743a13717163fad0f9e058816a176051dac15dd0b7e2f0ece4d367abdb72a339898575595bad4acc3b46b597db68a5b6141f850d243fbe0b3cc113bf7eb27fe4359ddfc4ff3ef16bc7acaa0f3524f310679c03333d3fcaaf2e7507ba98f8dd1b770f36e426250b1ff8a9d4bc25c463ba8a7630a582aea3252e0ec28d656063d6177f74b1c88d457bf9059895e570cecdd6fa724d2015eca9c76ddae2798f82a181582723d0bd2fe875792e22bbd67b111812ef40703d6186261d6be2747c72746960fab45840f4ff6907949f20902b065fdee98d2c13ba04152bbc70eb415b14e172b028771339fb0ca708bf580bd2fb6a6d6efc0990ba5d213fa95f2efdd8b1c1b699841b8e154451c5de23871b54be129af8e3043ec5780cc395f325d33c4d932a30171ad6c362281b895db4b604d1d097b8f4162bca2f6da265e7a2d1130043a9d21c95effcca1ef06d47c6bbb7860392e5b77d17706b5accad18e8bd19ee8ab2e950a5d8f6789119a4dcb02ce64ad5fd29879e948be85c8c35669a06b2fef4fc27ad44a3a5cffff063f9268ba3b8c54a777bb750eac7e3f3ee767a4eeacb1b7019d3eac82fe5f943bd042063df081da663ad14e7f4661e550e495f413002a6d3eab63e159baaeb60fb7766baabab0d22b82221bc37ed6ca672ad60102c15d040e6085a1f4fe67bcf63da0a15205892a04dad9b3ea918adf24d6479fd16e935badebd0aeae1cb6d505ffc29abfff2708db39d1ff6420288b3b779d291e3ac4b944512eca4f63f4e1069281a089d91d3363d15975ffdd1b103e4e2c163bbeb915a5d08454857a9d29d24b72a7e7df6e3a7e90ed517abc95a448aa0179959285247f17cc8d0532fb13738a6a21738ebec71e2e68c55d8a8b77d456b385408650e627970ef13765744f4a72e4990912186a403f71bf2a9b8ac7211a0499266466c65de65157d36302cde084d348ba46da3efc430677bb5b34f75f39f16bc710dbe9c4a4869cc6e820ffc59239b1049720bc24f5e59395f0f0f153bdbf207df37311e0d85db2906f70645c876c000583812026239a535cc06a4a6c2201b19560bf574825662aaea2dfcfb3551752e89459e4082e9196dfbe1251fdb94b9f997689be8e8609d4d78fade40844bbad5caff8a07376bd83a13141c14d0ce0eb0a9b2e621cd7e031660970aa4be5f7dcb5d15c2bd2ede463c6fb2bb6bc1abcfcd7a1af96f1ae98ae81d315af3713d000ab889760c12443ac5fa79a48fafb39bef31b3c3b9c636927e868259e64ee02f2f9a5ba0b9f1c4b2a9e7cb48beb319433419798210d720f6879e4cefe84130bcaf22c1e270f3e7262a578ced12348bfacc7ee33573d2916ea63ae14659f467dd8e5f72115537fecc1406e977438fa47375d11d5327cf409aa1ec22b0d4905084e18135917ce073aa8bdbf4d9057bb2e7ae21cd46342745b6c1a43631a5a25baf33e59e461339e402f29d787463c8d5ac2a889e7d740b7baaa588024c683aef08e721ae1f880966e35e8288b4724d97f6feaa0d812a9e876d10c7c8c222742ed14764b183b66100f3644c98ee165abe1f36a2395279ac1cba57258cc5a26aa5520a16d77f075214e439b6eecf9791cf735066b66cf71442b377775018c9ab44312fb5a40c4833d198a2cfede24b5f8bf7e4231c62c5f33669a2ae631b3a116af83acc02b72e05819f01a5e1f0492b5b11ee1f3a73d8bd473bef885cf88b2e8e35189bbc8ae8c261521a0000cd0bebee7295e8d35df1cd49f078e68993fd10373a53eba652a3f4be4016b27961e93935a059a321c20970e694c4678813216632a684de2ba44885592672cf46e54c9ff27d01b29676ec1c058628ac1e7cb063885c6f6e428195a37698c7f1941c3066480ef3d4c8e1b601b6b65c61b21c10bb3d84d09f7e1eeb38b7c94d1fc658c57106b39cfcad009e4e4b93c6d969b0b7ee231234cc1383e71623de0c1930db8a8dbf266df0e2d924da51d9f49e836b82d2ce0bb30f50bffad57cb960f448965a23a6057140f7da0b5e29caa6f95025027be799a52fcc906cfd6f55cc96e712e11ba2bdfefd3ef150f1f04f6d8de5d7f5f9f9262ffd4c0509078cfeffc27d9bacdcbd99cfea305c080c296d6699654e909a3f8b05ec63ed6bf1c01f9b1b1ebcd5c3d34f8d5e8a5d3386626297e31f510a7dbf67751afc4f77effede7186e0ac5a05c4cc7bbaa0ca610433f49bc9518f1ab48049c1dc8e7ab9ac646e024225326431294d5335d627c3a6e9e8a06d8fbda1720dfd868c071682118c570782845edb082de727983c8e4be4aa9196046dd5a92f7e3e9a3d993613c76af2ed052681ad82d8446aecfbd169b3a659d27f0b012c45b9fd2d5b022492fb34176720daa6af6b61d245cdd44a017fcb0d82b4bc34d8c14d8c815b75616a4b8a0825658e903767625b4514c8ecb6bca7e3cf28d065a4b18456ee149ee611f6a6ed9fc8060a06b0f0a6e3de41e7d4628e915808b939e901cd0e48c11deb612f94b1eb4d589df95e2b19077aaff56d57afa46add91f6274ca2117fdf4ec9ad15f2ce0eddcadaddeb39117da645bc127188f7596ca6c7ec46914c17968e3c2c976a4d71f7f8e853a558d6f09cd504e0475641389dc5811d424893cbc25778b3f9ffe28d83db243f69d7fde1fc646d6726b7ed9ba058a2a69b0a368da3d7da417d71552e231c3334b7b37884f84d831e2952e80b10b205eb9b5c02697e110e3cbaecf4e5af641335a6f8c4d00e8d2862717d2164e4ef64ca969d66b23cdf3bf06f801fef9553859094bbc872153589e8153a49c233294fdffd46656c1304642139fecd39fbb08abd4b8730169b9615d4809910dbf0a2ccb1fa8d0c38c950265c77fc4904f97c11c5e59b9f92bc653e67bbb8ec57e1cb7111dbba62ee56eaf48210af4f5f238490a4aec16c6c60fb4d968915a5a6fb7e6767111a6dca6e279498aa016965c58939dc65f55863d7c21b6885c6c360b46772571acdd7b3eebfbeea2a681e8e10e4ea4d95e259a48bb53059650c9914c768f1b9cdc3998558b5c3fb2bb4a643c85cf4ac4582d554fa71a40235700747589a8f837ee85a9c66d18bb3d010bd28f47505c45bf7d61822152e6acd38b3103115e3f4f4839d9ed1fdc3a9abbdb8885274ebeef30278964b4833509fe21a75875b7a1e59aa1f293c9ebb12e2f8f2f112f99fa17c5eb3e7f4991416e2829f7fe1f851fc3fabfbb6c03ca56f72f11e5a21da6d3a6d9696e7de32137173b91c2f6891fe71089510ce634749312f9ac7124ad7b6757e4ff3d7594057e65742c447d56a91e718ce52eba5bd2d70c9fc35c463a9dc1c8591d8dd2092a7f6686bd784de00568fc57ace7ad9ae6805c37e8b751349b9b3ef1bc5cb2cd17d7a11f3ff522151311ed21e0b9c9c5ad9f1e4787e9cca1732f1666fc70b51e9764e66d1b9d30a1d88d75524d3fb53e5fb3a618b50200ed743ee6b165b147726120793dad8ab8b10e937e32de51ec7e3f2a3dbe047895ea4a6ae75739ec0e004cd0ee5fddea612d85a1ab88d7d2736c6e5272a40a3e47d013763d5a9b196a4c494ebb2ad4c6f72dee216b533bff8a61fb1a5dc95f39b4206ea2530a7844e77df2500fdbe7ef344d09898b7f3c5d8c79e3f9e9e99981c3df0e3dd7505696fde18c154f7e02d9bcfd47521d7381c93ba2cf41d78f561a3f53eccd577758e03fdf162e38e6b7ad8394b396bfd6aafce275591df4e8032d64784b7a731c408694c16a338d771eae93499d4051f8c668712f2c64fdd596bbb9a10a35766928428914a38b8a557856e13f97eda358b4489ff9ca5d523841f17f746948d5aee5698785e51492d8b8f6b6ec652b0c876ceffa2ed67efa633f66e21a5f435caa7a7dcea449d8e8a9bfbbbf8357cf2380a303ef8660522910a645ea39fe978baa4a3fcc588d283046b5267851f872aba05703ad893f89188b0714dbc4866be93dfb1d0d04e374ed83abfa660da4c6c609a3274e432b71475270e532f06da1210163895ef1d4a256adc7f300262158de51086124508d017712fc2eb1e2fd2d92222ad09b2f53009ab06d9bf5f3e71e7383297e63ca640e44389dbb99cf0f4845f71bcbd058bee28d4db1d80a328aba88bdd9a80b726bc51e53a92960a985e7b86ea2a8e88e6e3641180eee8cba7303d54eb60aa3860a0505a143ded66dc49565e0a80c0b31fb85f4966a2154c9d64eabf2dc8ef2a2014cee92a3ba64c27b3bffa528c9bf353195dca0e95329d8dc1d50b8d5f6cba99dfacd70180ba326bafc24a472a65a5929d7928b11443974187af4baf36da0e89ce5f08c5bd698fbfe81810bfd7762c0f5d975fe9c778e4f1166a5e3d8fe0de5a195e128bee49302ad6e1788ad555b9ad8ca4892d11df7867bb6edadc878894a0e199fb4bc05a34e04be99f27af0916cd68dd2fed1b2e9582cc30b8048e2f848d49d2955fd5ba97f0daef913749324112ce2864ba84998510a5281c1df35afedd4f98e3eb6c7b0c0a98b3477bc07e074614cc4d85fae7a151dab1a2ed42c43a38659b2fe859ddba5da7d4f2a8f63442bca4dd3e11b4b981071d764b8e02feed5b956eda0b872885ac801b678a54ee120e31429866ac759f6f373a0f1b95a3f1b42c1087371758e01278a69eff2eb0a2f1221629d020c7754b0ab0de3a0d6a0d2cb1e90f23fe08faff863bac1c837bf6696b734d066596022331c3d1cb3c3bb9be964e396a1e856553b6d968b73066aed50439d8e9a64a332d02a891c1d6e29a81e0bba8ef5a9f86683d83d72391b67b62d1780c77b6457a265da0b3599e0b7918e49208cb5cda359676c8d96191547ffa8cc717cc7b6a6f449349e1cc4beccfe7613f0d3b715e4882a69ef9173ac2c261cb62291602d61bf53ad9652186dbde45ffb908d1316e4ed3c1d0b21e95ea66745ca0f5d480f690d2c519b595ce82e967644cf7b72c9cdf158da5a7e8443a6c7b60c129f2063cfa9b9f8989065880eec8dacf623e93db8e99c09cd5d94df9ef277ea6471ac2911a3c86a92831fbcd52e3b3af31ff8445f043bc48bedb11069ca2b250ea31fdd4228cf2f7735b6012dd9027594afd09f0b5a38c1675fa7f6035d3b5669fc3375cdf438e635b62e7b4ddd003c8e366671bc8e9ef38d448a48e52feb48510daab05d38fa18c7d8c0b3a5e8420f933737a145de6130c74925bdcb3e305a07202f91385af1dc4808d026d33e6dc360391b8358dde02b04e6935c783280eb340fdfd4d015d2e525dd18cda917730df9d19b7eb51ec0f53b3aecdf46ee9f68fbfe0c71896553fc8e85115080ce5ae3937d69820757d54b4ea04476815a5321ecfa8667b5ad5059a4b5c9e4e0968a38900c7faf1d52b895c8420f1ec7fb4839fef81dc2825e602ce89f3c06902b61fc0aeba09483dadc596819019c54d2d1c52ef98bd2f7e6c3053daa2cc69529515d9cec00aa1a6aad3c4f093857fa82cfd78bb540772400277753a1196bd4005a91a3650f65460b3a9a36d6c53551053b95e24d1ec4d078cdce647198ca0463cd7cc0501369399fca08aa9df985e11bcafeb40899d419a851af6398eb3c15ce33a3d90055706c1da634e3120aa28de3eebb9bcb14e7dc2e11834b12347dc58b2292aa14513bb993b78f8121cfbd1778e1ee331461a556887a63c6a67d3265080f3bbf156f186a26bb800c35ac68c0a472eab420aa380146dc9076bc00c65e75e4dba58475e8b2c77b74f292db225fde4f6d2a959f162855519f07b77677a56c7e0e91c7154c9d20e400eca9e868e8cdc17027ee04164bd29678d7b8e6319730f060ca1b246489803918f62f9b7d759add3f3f4dad0a6ef1de4f4077945db34a570cdec7f7958103e0f73ff1ee8c466ea692d1dfaedf7e7a7e94484e1ca6204d044f468f4527844f765cf4eab0a33a680d770ad3507002e35ac84f6687ca59e4fcc3bb51955b2d4d98068d5d44a46ed5ef40704d3fb7d10154f4aebeb5d6a305de2cb6b2711c5770bf878f39f35779620b1d695c2904da2f6a595852630497caae4cc9a822c4751b51cb69d635e6ec47d6972a29c59515e2eaee01a5589c03bc24916b76c32ed9b78950e910211e331b033c052413e24ae325af29db647dd02ca06cc5224a8ddd55f26ac43a83d96e0beae9d7b9ffa31d515340cce114c66a177f8d7c291bdd49c1490e880d8f82ce4ea6f7651404d81367362f2a3e9b0ce311eaa8fb8525cf8690a8f943ce49bef0aa03caa44fcb439b8b7a31a72fbb61208a04697ca3bbf8b5a0606341a0e784d6cb82b093b274ebb4cede80485b612e321be1166e3c84f2bb1789b343863ebaf12ca70a92ac55a78c7998764400fcc9812fc3e8737af721a4d5cc5264f3a291f25e2b52abe5e07a38ed0932614e87fc1bee6b2a8b66b83fbaacf3f1b49270f8c78c5468ed6a7e4d2571d60cb9808c8df22161e553f1fc3361b0d4227e26d087c80693ae4c4477afa54cc53c3b15e1b3f4e137f9366aa52ae0ba3e5f2d50c84d243d55326218faf8ffc2d6e5202bd20e4823f1b4574181a7470dfd658471b2655b40395dc6359ae87a53f19edb007b977cff3c4b0dd1b2b23d4f4b5103cba48612cc2a8d1dcd208f85c903caeba0e6d3a7348a6129c86843df4bd2b5a50699955e9c1d6c6200dc5bb2d90df887813da1b9acc7678755e24da71ba4f60720b57ac93e7f8ca9e4c9c0be6a608008e5f5ebcb631542c9c2f6c408279633b43dd688ccb4679ea0e0d60267f194210ac7d7ff258f76525bb51e2ef7d72bb10161a72083e7de7ec3ce96f53ba4f83eed496525ee2ec23ba0e06713cb094637f2863d945432ccd307ef45e62b25266282b5227cbe0c9b27e2eb55c7c15510ecd3145c01ba5dfa6b57ba234d1548cd65e851953e0fe25805acbe0be413d12526dbf031d07f8e1177d3377a2575fee0dbf74eb62d01187af05ab977b1014a5f52a5a6f20de227f3a537eff328edc4a170dde3649d6778aae839e1e24793b44b4251518f4f39a2d87add841b3eadfca7f57d968e27587bcdf516b425e59866f31c19c2ff71c575fe262536499d92873266e559d4bd873147a449dfc72d80770e045c2d02bc3cf98270d5b66031cc3a8020e688c629886cd664a2e9e01491262a51d5472440257dff2e991101178abdfa061850683747fba1575df27f75a96a4d8aa64da924bb79ebe2e1e23ecefb00e88157f648c9ae937a5cba7d26dba81f9fcef54a4d550b6977656fd6be5226f77799b1b731f7f6f9ead317bb6a370075e4b5314829a0bcb4f67f35435df3a8303081a1d427409b01ba7b9824af827759643cc07c9ab6c20fdf9b94a54a3183d21b6f475f7b7cd8a515c1cef21b386368a39d855a92eabbf9e691ff24556ecaa9e551a8c415d89a0305c15cd8fa9838fca767318f14de9197e878c573bcc853a83107909311d62804fe87c3bfb056cfd43df4c09ea3a0d21f933bf722bfc924d1430ba51efba89d0c5e9450eb71f9e016ef8833d0a06e59829e66398b1114d39479f03d506394ca034388889b5333f1d0bc9fd8f09b7ec5cb4589aab56d96b2a2d16aaeb74d81a011ad5e54bb686c1a8df3a1447c7dc256cb670644010f68c1433c187b32920b9311ed70434f597258ee69a55ee5434c4c80623288f8cc9889498a5fc6653f4b823d6c3e6efe83d1bf4950ec13f9ffed06013b0721962ea59b8ca86cc06f05cdbdd0d2305d93abac05726b527177683bc28b149ffe1fafa89c009dcc0caf55e1d9bfcd1c4fe397d3c5fc0c6da383f4c41daa66263a471ffa9d981e47f85ed33653fdadce24b56b94fb30e567fc6184e01a8905a7aeb5925859118a1060295d50487ba0c1e76ca8f99e22f99a39b809b6505842261b0d4deaf7d83d2fb26bd39d2038bd1353a36ac970cadfdb87056420c78d63ea2b2a7b8289306c163ad35031750bb6adfaedbe1a7d51f5158cc4b04321c13926f56809b0335b6d88b5f779906cd0fcd5b7c0f0bf6d57490865b51ac8c9710997aa076ad1c40cc145e65c02d25485362c3f949763200c123e7cf1bd09cf556070bc874f0ab53e6988f439980de48974db3aa17f6137067fc13aaa24297473b2302d7b44265f473fe4455ee2f9d773feb52ca364a20df1ed7c6c78be155870a586e2132871ea4fad2b4add1d2c7040b46554c5b8586744dfde9612a76439e16bcaab8daf5cc20d89f880251a9fe6208c314095da7ac5ce369c57a576361cb1f66fe1da7513f997fd3c6e77b6d166592a749034ea50feefdc2f7a1bd4e6ec60fecdad23fcfcb829fcc8eaff523797d9dccc24145816b74161f3f6c47ab2b8632b0dbfaf01938edb025a9c9dbbe795dc542c24bd7135c7c5bf361c1c3bbf4a50497c9ef18ebab83833e4452a3df9657850d114a9d102ab023ae9cdb3db837d1b321a9bd69d9a278b97d1e086a2401c1ff69f5b228bf2b6cc7fd1e4aa6433c0bbd64a74a42591dc0ddf278cc12313d7d1b81c316018206e1f349b4ee5e3ad47562795c9478d29946e442c4494b6b6ae6415258f179cf340a9f99f9d16fab1a9f05726e37897d034d3f9b469daf9fe93e4c3994196a07c5f9128f04a17a8261a6e527629565c2890eb803722ec91e30c06ff14f407809e92f184c45440b20cac6f6be27fa691d140e8e584b623ba07dcd1ce6103c844f125671c253961ac00310fe5f4ab96bb88e7d7d7e1ecf63b5af80088110724d6a5ae7a4f6970cb920b3c055d82daf8e0b1ac53aa6679f5ac85959ab6264dcd6528d5a3f1a7c7fb9fc0e2ae9ed1e10a3331a450d6887fc51b0861b5f461369ae74099b381185fe076e2ea69b9eb54a699c9268fce1b3a07daf6b5dfcc4c02975307c9e725c3047e0fd1bca91f3133a5a14ba5cb001ed0523a95984b1a5c1a57bae0f3f556cf9c0ce59c2c4f892d0502ed46471a6745a5228adc2edf9f892b906b5c0e4e033feea3215e2b140993432d4c96c91e566cdea64a5a43648440d6cdce43c803ac6c3532d860473abb463d0737e6634aa9b20c78e73c3bbabb6cef59c8dd38fef882ca0c68866737731ac94fed1f8ffac930777301a35eed5c538ba913a1c63532c5fb6188b5c16ed280267439dca48f966c2a43b4ffc61261a17aee54da1afa7b5d2a92245beadff99989eb90a7c1acd3c6a066446987f64cbd6363bf750761e4d7c6c67f15118f782c7b9dff23b61bc124650ca02f0c8390dbe4ed73f994e1e5b45644838c0c6064624dc7761d3254dca99938bf376bb979921dfc19864a0fa2dbee6eb33800c50e4867e4ad14604e053b9a6339d5aabc5fdfcd160626a11e805572666d182eba3d983ae48df106572c7dec35eff7078d9ccd7e507c1e9a6ca2407231a0783bf13d201c4ddae4f9b77b4fb855f743aee3de013ba45d8a6420a476e52d38afb23c75f2f1bffc4f2ce861daa4ec733a757be06c5c63d086081020ded0e38a7ca7ffd27ba5cb21bc403666f301572e1763b2e60a7c0847244f540786740d26f0d1021a2b81ef853b2f07109f7094d4ae75f4e84cf1bd63ab94cb6a42c38b9825572036ab6961fc49dbb24094b2de3f3365613a04e557359ead16d4ab1e73be6dd71f37e88123c8b94c25c8b2bdeb89c517e413d9d09c6cba7aa3e573a1f5621948761455c665b713877db28d7c062ad721bca8b7b28ecc060b8ed68b461e9db67d4808e9e2446ff7a9f2e59161e6a0fc484afacee5843ceb45e6fcae60af3ddb9749f003d9889039039fcebab673512ecd739ff5b610a9a90029213e112cab2d83a709e19c7ab3ec16bb60b0a53f654f55ad2b734df700a100e5f2ccb0cca15802cffdfcc8076c8f22dbf9a8d42bc6e00b4548acc9bfff67c5d812ba4b35991d6c58fcdd60cd3f708e06ba59abe93bd44831cd6e403fe2d71b54ac7d813cfb4eb047bf799bc95f460fce9549b7a9a489f4ad105795689cfcdc9225ebe59299f6989b58a3e0065a9f646d82aa27fd954f015889562bdd4f897fe642be846cf3afbe2acd4e2e40e842ef4a44956b251a8bad504676ebbe99851701584f2f4f69aade1ffc639cfe3243729c938c15f26f8c8571b5ae94b02cd95b26715034390a1f1648cd35b1f0614baefcd2d7cf27530d6cf8e26f553ecdbebecbc1f6b0f2d3f152c5add956bae4422470d5522af30f13dbeed7580f2d3c9404cdbacd60bba697e85aee7e54ff7b4a6217cd29730c1ab867cf530de44478ab8c3e57c51866136b0497b89749c72c2fb8ae2b9cd77ad8c6d1af8878b66f64acf9df52b15d9bff07669794a751cf198cb5b52228d9e810321dde0381b9e294a60651e199db8bc0784ada92d86dbaf246584dc6c482ae93fe74cfed9d2e708f49de7513a07cb38724c7ae1cc3a2648c1c394fa85c56043060ca058bf7dd4dbe8c515a8057d7c56eed326905f25f00d091a9f6a2e5c528b670ed8d20a1338100dd2df256b7038ca7b92675138ae0283cb9840c9363a320d4ecca6e37bce9776ea21add8af8d470a33dea35c40e2fe88952bb3791de1677e7b9c32acb116e2282c2c78875c685ec1621da3bf69c3ffd3cccd9f0f0b08fe8f1d126f9db0440280a00dce41ed7a43ec3e6429f119ba69c536d6e384fc39715c54bd37d0de9232dc2cb4be2c437cd2b225d1e663e10e49c3de42bf6bde842fa49329adf64d81b1574c368a443aca940dfbe491a33b63db32b3190fe67dfb7fb86994eff1c294fbcc11ceb35ce80a600f80b8c79e60a88a9a38856535203daea2878362368f2e1441f5252878b016cd943828f2eb46da23adec24265b6af97693e065848af0157b3a6a6c65a04b0bcc8755eb1acfbec2792364ad0ad226d5c5a3e7f9ab49de80a49acf8aa5c7616bb4a67c26bcbf466eef8be47fc155ef610c790591cecdb2173295bec56ebf4fd91ef9fd499fdcb68f36e11e6c618b84692cd0ec332c32fa652d952e73c3e3dd35c55a9c05f9b049821cefafaf3a59d7680aa9ce02472e2fe5055125c9b9ba2a7b25d5f6906cf88628b994085604f93a3f72c71d81758c471ffe2e3aeb47a8c17fa5d75276d4fb1123b94098ab68066b45f387ffec1d1c79ce8d905705fa504c8d6811cdb28ff827c1848292ab86f43787157dd05764ec1482f6adcd99c3d54b85c1896083cc31b5c8026d377cf8a4ca5a18cd75f84ae7461a81045c0290558c20fa6956c4f58755dda891ac458a6c915a2076467e537eebe355505fcc2c973695d7dea386a52d2155de2dcf4747ee1374bfae34f1e26bc7f26036a53735013c670e5a97765f637723a0404931b578979b94f25de1d78b8bd6dbc8190112f05654fcc37a2e3af0cb2218c27af91d96b4dac8c15c7891b08e339780fd9cbb3fc54ee9521ec8039151ae5b447e7d818535cdf3f51fa49a9099af7774862866a17bd8cc15acd395773cde28240aef35970651d141b1b4dd950f79db94e41dc623161575815f52f34b2c009c622a8dc0f5e3841a36edfa29f450341137d0a61620dc62db96d6a54702d96b3c71782051a54cf1dd63fb6ffac8adc98f0f85c2d472018d4129e2458df225c357e4c77af6284500ccc6512dbf2368e1057a2a1bb6e95cf5e2421fe6f0b616ece11b16ee36e39ac2d9919423c7d59e77810173c6d6395a93592b4626886ff32925dfc8d6d252ca7b642a8f96bec5b034591c8a8dd5e5bef050e3250fca3698de501b4147c104889e5653931be758151adae8edd7c7a859048951f53eb462b6eb17b571b9324b9e45172bb5b1c93c6923255fba2305ca28cde0c57ec6da95269c836cd41e3cc9f24116267ca0ccff81d644843f10689364df823e60110d295da8a109b616f77464182f1e933abee28bfbe3e893bd059ee8983a0c28621dc1d734c04ab7e3c39650ed778a7afb22e811aae45b0cbd8f2be085e01ae9ae29d98ea42b353f053e1b3e62f0260fb4aaf91c94bedacb06c9814b67792cfc18fbf0c74004714de8146a771fee831a8819432a549765e3d98e0381c4a7595d38a2415dee9b38714ba48f3c1346c2e5a92f5a8a80ec390e78e5faf01ef784e7f9a89746988302cafe62ebc6bea14110f831a65c195a164741beda5d652b95a05b22573d231f7376b3b80335d3fa56e8e72c2dbc695f5252b01966864fc7228549da767b82d7752558f7ccdee1fd86cf25b09c0bf84e6286df14c5cfaedc4529f20863117eeab700bd3cbfdfffa778aed414080fc42a8bdef1901c6d770399857789d317faa24cad19459b7870e7acaa3d6eeab55af56976c683bf101caa052643c878fc505476e8e9e47a9cbe4a9de664d58c79c5c9b66a524c631975db9d4bab2706e97e207a4acaad781d453d39f7a13297459ca8fd3c5486210568907e32505764e8ae1315c2c38b82b8a2196ddb0ba106aadfe33e9c80d6fc404353b4e44bc6695535f505b2e850f3db9741e6aab44cffa74ab724f1a064f4a6db4f5ad8eec214dfd50f7a48b42faed430a590e582fd8af38c59dc0732f03a39130abf80bd7cb216224990b0290f837c605dea7c9ed496a879ca50756c22a92036789068b7ee0b4680d98b0e5a2a3e3087a6eb25e717d18f393ec21ccb7f3e4216999d30ca8589fc7306f11d49e2a2b7c43302697d17b789c3bfb8b1cdbf4517033b234913ce80685bcda0ee097f8a669054bbd016d0f6c307acc0cd308d59cbdf7f87e4aada45e74bfef42954633481911d034ea97cac9323a4799fa82d4714ea6c8afe0da1efa2e9d869e1aee36a5d67b2d0511f77de5d325ff0b42e06c2bd8551cc0cf5cac7c958f9a625ce53dbf76217b52e473d57d1c906e24aa8c34d192ee6fb88cef39afd66b847e6ea395eaddc45d12a1586eb769fbd21b955ce3a499ec868130c8a6f22abda5a5c86c7acf53fec0d1373feecfea2a35039b1dd5f875e715a28224a278ce96ee79c13593e2cba3025232e08e9214042ea99f9380e35587e160a00b41b70f1b0eb4dd71b07336f46079c25be95471de8b42a9f4fb03a1ac104d4ec1ac2c3acd51058d10ca9d3b7b5657d7dec74845d0447fa39bda1fe7dfeaf26daa8fae39fbcdf733ef7ce643572c5d5feefb350df7bd18c9235a41ecae829193e2f47b26408a7b8e9e844158ecaf50b395722a6a476a1bc1212d9b3430c09e802f0d3ef353abbcf29e0fe0358237e2049d1f93e660f5ded31e438b8e7393b68cc6880d4901044081464687079bb02607a4977416ce5d1823d1d9ebcf7562219a2bf767cdc7eaf0a159fd12431106a23e403812c4d948908132242e1c97fabbd69a565b58e922d13a728e92b04c877e05e6e4d877a9d0a3d094305d89495cae047517463b8cc04fff0adee7f44858a6acba6c5b763447b03a42c1918dfb70f54123c18920b0597363af65b66eee6962d91221d23565ea50462518a8e60fc5ff7964e11cd80d04bbb2412e29933c293db3ec78a04f38802ace93251af084677107f9b580f4890a1c6bd45e3225364a042ca09a6a6a5aa53d46f1e3b407fad951694d4c3742c43e10125e8699f48a8d133b8074995abb90e6c1d757aa773558d4a4aea451dafe0aa9b4c926efb29afea8d85959927d431b3809b69c2e65b59e30443c66cc6f864c6eafbd7ef32c8eb7a1dc6a663f5e02acc2249a3a98c91ca21a25544af94e246616c099a4aa12923ffc2ee23a3694098595e2b8a06cd236b39c4977c6e3a1e0a98b4120a0c360bb9127e332cf3dde68d99cb086b9b0ee25dc287e2d3f5420330516cac8a4e04449cb6076c795274f1c54b0ff8d554f38526b09eca3771606195c5c51c7c995548e91171002ea86bd4bca9c893691fae0f689feaf12201d31d0f2a1a3a9ae7e3b70d787bdc0c3a2a76c9b5713ccac9026491bf43b5323140ab2a0547d84ab83a48369baf87565bd8733c6fb9cad027f435f9ef0cbe3c402e5182fc8879b7216394b33b855f48ca8b1f1ac798bcdaa6dab95be3da780be57dff876a641e71f5da35da0490d0639b9c178c95fcb0e1602ee3f645367b2c684b90cae2d4722a1d54afab89642e008970d172d229c1fa4963635b5735e3c2c4ae30cc47a0a906c85f7b38a9335a24e87c2f74aa5c94902d4ddd087a9d5f65cc3fd5cc543545854a47a4d0a53ca653be46c4c0a5bec89c253344b000bc86379a86f2fabde29f2b56e08d6eb3278689e3611b97b22bbfee3d3242b7451af288f34c3ad642ed7352f182baede02a5deafa1844f1084bc4b5bd9ebac1e5766f7038c65868c970dcce1525c4ba4557cfc8647ec40f9043c4b7027350472693fb7371c7c212a368f1191f1cf1872aa3de694ebe05ae0a4f5ede7131856c643d7bec87cb58c02bc22d4df105cdd1810d4b9c07fb41f4cb824c03ac290c3a9d5a76492491616355679ad42bc98b06723ec035049726cc3ffc72072ff46ec39a9e829374b6545d5a2b5ccf34fec3f1755ca0e6e5b228e0674d8df64e3b8de4ba669490198692837079a8828cb0c2090ded5cdc360f67f21057826e4834901f4d306114805513678e4823b290a28beb8204ef99ca8e0d6429c7aa3e2d6dc5ea23ff89d325352fe7c3aa6f47f67d26cca3c51c383b62d27b009235af15ba039e84cc5755e61052f18ff2b16d2e7fab90e94cf30c36b68c2368727cdd247ada97ce1b5ca19e47f42a04c49c1636a68d74e5cdfb53a237d65d3dd421b24ba59ee8f6d47bb3e7bdf2472eefd148a9cff0422d8fdce5a87c43ff8c5b33ec890e619a190f147800cab6d1835ba2bfe2d932e9e595a87246346c5468f1f7db9bf08cb1158e2dac85ccd8ffe8189e30bf0487cdbd5d1fc1ffe34130b8b1a2191c0858d64f1e216a45fdd3e5591f787914cddb4557c88e6f5781d486fbd0c2dd7b68a9f3a9e05d2d29e7aef4f851d421a26d826fb69d1063815db49414296c7a930467649f5b875cac06134f9bcbc2d6bb9c88084a6ba106a6542bd03a786995d03f8c515cf66004b64f5f7bde8986aa02bdd84af0c9f6f9954e86f046950eb139b09f270be9f4b5fdc355a972f0e136144f1fef3be3d48dcf2929464b8bc255c4e814f000db912e999e59d37c272bd5adfa4f68b237bc851c2510b358d194adbd97f6ee38458de219fd1faffa0ab3dc0591aac11f61a3a9342c085d23b6c844eb3ce8c0dcdac17553eb1316d89ede3c84622224d63120f1a23cab58f5462386ddb407afc118398e304124df2358778987f85588356bf2a89874b9b4f83e326e36c9dbbc7d761fcb81ab62a72f0aa03107a5410dfbdc35b8c25e048c25ddcd79ad53ff6cc1b00c294b420c15627fb66d76f93fba4e560163f51766fa15d207b63ade8db5d216b17160b167c098cbc26f19837e15a6bf3ba37f93d5ecce0c14e2c7c780debfa99eba75add973226988bfac7abc0d4f0418469ba08cc4305c60672c97bf71e832de7d48b7cea61ac81e67de5e4971440342624fda46bf6b8af196827b9f85b0ddad4746b67c4ba2d7d4cbf1e7db99ef0a787646414d6a779a05643a821e6c7d22cdedf473e70050f4953d66df272f74676904ec5129fd5469762d8864a3a15819ea7c5a1716b628862e2a4c318d7b96384b75c0de290c035d3444bcd196a3f5ad1464eaa0e0c8a3190cd3d00f9c5cee18c86fed91624784685acbcf82fc86a928449460dc5b791da0e973f110c6e7230bd5b3ec98caafb6d4ae0bbc515664ec0251e66d8f210049797d280563418218f07e430ce2096600e2cb2c797230b403f21ee8e88d2c3b03ca7b3f272b0daf2ce1c2eb069768d92199b31fec315da1caf22e5a422410282772cb91f9a52f7148628889077b3f81d145b8721db54046fcebdf6d9c358c1578f120696e661f51d1d99a44448873e45f02fd7682faf0b7735c9867aa8673b06a91448f34e3f73f997337b47e4aa66248682d88f24daf2bfc0deec8d8a6dedf6b707da048eb899dabb34c4fe53de0fde66e2785d21c790ab1d1584bdfd96906a3ec1c269148a6943da1c537baca09b8adc5b6ec812888e232c76c29c0db0c1c18bbc93a81920c6509aff95fb46704b342b8eafe9581c43d61a65d135da188d4d942bfd0effa1db8e068cb6618f8bff6c0fe227619aaaae571601e749fcedaa100be7386a3c8b68694eaedccb2b9d2e0a6356a0f8bf1b7a2fdb3cc696321fb76a0c35e3f3784164ea184229a60deb76fb919e6860813203a9cd502bb542a216ebe2a9b458daf52df6591c6c5f16ec34b4a35f5c0b5edc4868fe788465f70bc7340ce661d43c178fb6aee2569d4e1f4152d1acc5a32879a6c28191828a8410d28959acd2e51a37619f3ec1c72e425a37065f49a1cccafd1f2b517c2f058133b0a36ff95b6d16274a7776df502bc3909e67bce5d1bd8ecd3d86dec0344c14448ced0428b06e309ff6b61ed1e128fae6728c921f3be87180fbdef2faa17014be6a9085452d7ab3133f51e41ed39d14972bcda0449751868f847a71166f6336df799fca7118e8b474e077d2ee6b73be947c9d3e53d662c915cfcff1f09d67268b0f2767ee0dec62708beb43be805c0b4511b97979176df458fb1a925ffbb05e4b7c58a20946a2ae788f8c4c1559011bdbed1cdb72b7cd8b3bc07f4c281a43ec59b2e169ea9fb9fe106257e8db9207c739374535f7731ff817fd6a97da5aa710192f4d4a88abcfc03ba764bc7e5b372ba36252ebaa2cfcdb05aed4e0b27401e1befc84ecdaa343a4a8185f6f0290ffe91d75b1b2518dd4550a4473e48499c5a92fb457ad30aa3943fb505c14649e7e1c73824a409b28b62cd7363d112292325edefd2f03c936d84995bd6a9d1654f69ff2305fddcef8421c6fa5e95e0804d21326f29090661e8b7d29acad4ed70088e0a02d9e0c20ef28bcf6c6e37f0ea5e8d101018274b1a9581cb0e4ffc249c6ff21507ec348c2b295e0a78295c70db6da3f61e3e060097394d4dd297c791ef4b56be9b01a29139fd0b69e035c332179ab95b905fa9206a6469c25f5b040e6d41fc75c41af2551b1e653bb4cdea718bf56be7aa323ffa7caea162d9737f25854562a0e86ff89bb5933016132a74321b229255a7722120b1cabcc76bdf4bab94b18a321414558f4363d700eaea6b036f292ab2ccc250a1acec76075af3157ad8e301d6c8a38a4cf5c3de2693876f0454db9353919500d13528f47452c4986d3fe2629a3449e8d878f64d29b34b275e4fe742363f99640c3fd23b3d389f23ffdb261c466726dbbcb3c34afa274b28901d1ad577fd38c81fb19bd7550062bb85d31b513614780a02b6b5e3b5b7887a79b97532d503b43d1c7c48c96829feacef3c031665551659f32875674e20f38721cdc1e641ce9fe4e9dfb9e42bf08fc28ed0b03ef218d0b0e127b5046a9b965d8287fc07d20d688150ca006c79be06c7fdc9bb7910613ff3b5ba73d67e8dd2657407b021cdbb78ea5106f1646e9fab0fe2816f78a750ded955e761ba85c819d46a9e2a5ff21cdfc247b7350b0f8ecb1b82b1f991dba6d8b1e63cc69d4a7da94a552e695c6ca72da158fdd2260128890e396f7aa3b62023deff2db64c9a39b6030e9b39d99e280a4fec1683e09bb3787305d649f7ebb7bec1c75b1a6ea0259b734c14a0a2558a99db4acabfd497d51adfa4a46fac0c29d21fc027f0488fb7a2952e576fc9efa0c6f3bbb9725ee8556fb5ab129aa3e3ce912b2df7fc3c15463f649844144f62493b9ca098c5bca1e14e2148aea9ef0b851400b32db71827c0b0b5f8347f36f3e78f2f165f8e3fdea653ba81865efca377df1273b6a1f5df53aada0cc162aa096083a8ff62f6bd1096861fb1aae2851b4e55feb071284c12c6993dba58a4e938ec33d897b5333d67da388a69569a5762165ac069b0f9c00cca0bd1139c96e8265c865c2f8e7c39063bc077f795749cb6076df4588e2b2d07853a1443fcab992c7be89857a004fa930864687868405f9d06cd44a0122e2df619de0c07ddb7bd136ef66b5a49f7c6251915d5361fbf75d8acc6471b2aec8c0d8499c78ea80511fe930ed6f8ff4406b5c061678c0e23dc998804dcd4c7fc166356e536d84a59bc35fd2c111c7aac8ac8c29f5310f40bf0161bc7950978b886f0ce03e2e053e0d426238e9401c126d362e59556ff6bbdd7886000b65fde3390be7c2e91df00f2e15bdf77fc84040f705fe1756c4402679479a18fea45b24ac145764d68c03b2ace1ad2a40c67b027b5a81c8e29ac5d69ea33c39e236c7f906f6a8445b7a88ddcedc5d7a5b3326e9192aaa4b13e12469a21b34c6709660dbbe4844ff9aab8c1af58a076ce7dbe92a63aeaa409de0aed0d76b0da0578f55c4d6cc5b77637710c3498c8cc4718da0efefb279511b4a026d613e50a3fa51401fc786f81708e619a9369b6d9d5daea06836850917d835304fa3d6dbb4dd72ac7e624587ec2437f466db42e2d5c8bb03eb389c0482c087b6c2ea1e81f13a0b3772e452c3d640583c9705267c10d4d5f88f8322d2df8a55ba2b2fd5c7cb1b905a0c2822bd46d86e73018d96953491224866bf73b315490b2cacc59a13c14ce68372fc66c6f76a3ad62c9cbf734bf90b44a0c04f2f7545d501c91ced47854b3a5d3773420c653558b73d3c59d7d3c1689db1782f2ef33fe06b7418229a34768351cf11f61eef9f3839d3e5530af4d089305a32ebd80c97223b67047148a36d8c3eca73f31f2d94c04d70e89173ee68501de0c945b74530795598204e145adc81502d83c2944ecc9a6c42db1d7cd91682e05051e93f714505d75c1553d85e4217ae2af8f40110cc1dc88a3b34653871ecc50420cedba771ff2502b58f3bf353d62b68c365f4c7a6603f3c2a238d3e98594f1ba6e1b08eada2918519a628a45ecae4b17fb39ec117fa16c9448fe1d21645120ba850e71e2947b54cf87c599a6a2827263640041367784ec51b9c37cdbb3627f76f21955d9876ea0283ed22b5a07cec34792d6f9dbb505184eec9ef7f35b8237fdaf2b05fad8d98ce61c635c10fb5d803f9096ed9c7205b421482557f2f7c6807df1f893568181371df13935446ce065beb87a55c2dea524b53c6d4fa06a7806e31ddd78bb4704c5764b66c793128a76b159d914f5d76543df761e1db72935277f57a7a7b2ab9e7fbee199d6b4638094cb89b66fbd8c82e179f53234e5abb6ec764690885115cedd1677f5c8b2887ad48de4af560fa3fdcf7350cc5e6b6b90a23541c6174d906278d63a7b850380c412984e8b16aceb3971f832e85ffeec27da4a05c46811bb9dc4f3693f6036a1fe551da2d57544f4c85708b06f137692d30fb2146cdfad11a65ecc4e0e1afa9f25ff22858b14efbec3557074fbbf067122a39370193dfeb1b41e38b24701506d64986a4cad8853a2a39028e29f46e08b4ea0a88d180c6762ff166212ce8280c6ae78665f9c70803a313030a3e69c41f93f246738e7d5f9862f9f1d126a5fa1d67b18c6a6480c8ee7f5f5b5d24740b6d55fb64acd9435b7d0b6e13abc83a76e075387f6b93296293815504948933d97c33edd95a62f0c28db4d179e49bafceec7973b5657285a7eb9420b22caad226aa8b055495eba5974a94b17f3c18928539f7f4b03e140aefb83f2d5c2b96f74bd2689ef465777f03672d0d744f2aa232e851e5da6dbbea3ab5948b65a60872de801be0665553d27f8b831cd1769bb4cd61140cec1c9bc6677091656eff149a9546ccd453beb00c4a1851f7a67921978c5ee2ca83cc84ad7c5687c556f227f97a6271f072cab034052b22046be0bfaebad6df055d007fc5d7b6cc63aacf4ec075a0e93fc4adf32819397db79d38193450e8fe88e8effb71030ce29e62d64497c1198f8190d3b8b25c8eae993fe86e3ec3519a7a56d533462bf20b7066894af483442d6145cd3702592f6ce789526904b9a916e1c26462338ce9dabbc4ced46be7db7203dbbb84a3bd575a5ce2a624141e7d57ee41481a24d9fce04a6597a376d843ec7f024393bfa4f043a3f0a0ee18c5c8d990cff3c9b6bd7caca182fdf365d03983d95c5bf21bd7cd1929e57817dcb8d82e932e9d4e293f7c7adbded7646c56728c99afde5bdd68e219a10fa986766ac55ba1f05e6e73f0ca5df6826258eb31d002bfd3e0500171cdc9f0dd4fcb9955a058f83b15444ec721c431b9dbf103c252bb34ff11e2eaf153ff5a061dc20f386297e36a7f3ca746aa3a135e479e0ba55cceedb69a7f7624fa975e048d763b3fc94aa7d96da972ddee7f91b7f00d6c1cfde389f4ab05c799aa106556611cd123a26ff6a23a4057a3b2ff2569dd14605968e76993965b7211c5b7405ff5c89cdcfb36283f7fa82ff1da9e26d0269fac8daf9015b93b3b536c5b00a2c7427e199d9807be9893b67f03a9a1970a1a046887e0a8dcf4e6a2cee57ff26b8a664f6c836b28b20082d0387e02d6d42adb8c5f126668c2292cda1123b85e39ffbd389d832138eaa1500b06f16b0d0e5505c970152194e30f8bc3a2ef01385533daec68f3246ef72956036ba3aead3d62e879dcacb7f505698c6687996ffeeefe7d2a0c3648968aec1e2b864a9b36b8f08211e8178883a27a079fe072f08ca49e5ef1ab910ff56ac7d4db6a0e25457c230cf920acad2698536ad3c6bbea096729e2687057b1d998103c0dde7df3d699a35e5b7a297dcae7d42dc5e6a138adada3247fd200f3060be71eaed95f6e17039650bd67ed21569598bba030ca1063affaef3ad2f17d74d33508a3c74b0a9a536a7c4109ffb9bd1e1ab3ea36555c2522f1cfad903c8a51e91cdff895146b56b83fff4680123b35a193c106e845f575c9b983e338793bddd57a0c46acd9298508e556d242d62cdb45e9c0f9bbdcce45a259ae0ffd57dfeaf85c64351e0cf392c4220a6d10c7e178ef8a88c4c1ad63c131cd92df268301730bcfc01f14882e51e9826b793fdfdf5f14ce7c44c59ed399e3a56ab3ede222dccd25736b85ffbf267efd69be2ad7e07a9b6360dcfee822e70f188722d0443239533c664b51d9d6bf46ccf8087116d5baf8dd6e0077800d84c309d7d749851f45d5f843cc369c00fadee5971af41f9451fdcb24138a1f19b9d3f166d6af9a4ac580b8b38c3ae8f0822640222d3563c611071c5ed0d370566ba597913dc6beed7470d7530b1b8ed213a3e6f37b15983e63f61de57cf0996250af0cb47c8c2cbe374678edd248d14f970fbe3c24a0a35a08b517af001b7fcf8cd9a01a4e909a1247600880a0db14025908498233325773bc70c907bffe93a537d60ef9590641987f23e28bf77550609aba6d5e1b13e79b1990ac9ab8b70e96ccf1c7d685606ea0194b40c68e3fcd64b3da521b770052221807de6c4186166a9d7efed120c978fcdb8380d5be361fcb52b5728831d367f29a8879a61d7eab88a95265b583c44068374cd3f26c23a1c62cf33b8f647c9891733ac9428d675510a6c9dfe5b0489c446a8601bd14bff6f637cb030b4dc60f8b17af638ac775a9339d7a4334cee79d830d735d3186adbc52e733f3fb410d20764d418f3863ed2acc874ca4be1aa47df5c24692638d703df3dfa0c7e7a1f3e9993b8f0e7607b4969532a97dcfd30531b19fc76c331b676881217067428c1403fce556557baeeb389b4146fa043d49680239df3182fa576d48c9d40492c78d029d149f1 + 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark{restore}if +%%EndResource +/StarBats ff [12.00 0 0 -12.00 0 0] mf sf +<95> 147.60 78.48 C +/Times-Roman-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<54686520415049207468617420696d706c656d656e74732074686973206d757374206e6f74207265717569726520736f706869737469636174696f6e206f6e20746865> 161.76 78.48 C +<70617274206f662075736572732e2020537570706f72742069676e6f72616e636521203a2d29> 161.76 91.92 C +/StarBats ff [12.00 0 0 -12.00 0 0] mf sf +<95> 147.60 105.60 C +/Times-Roman-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<457665727920484446352067726f75702068617320612022747970652220617474726962757465207768696368206973207573656420746f20646966666572656e7469617465> 161.76 105.60 C +<69742066726f6d20697473206e65696768626f72732e> 161.76 119.04 C +/StarBats ff [12.00 0 0 -12.00 0 0] mf sf +<95> 147.60 132.72 C +/Times-Roman-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<412072656164657220666f72207468697320415049207265636f676e697a65732064617461206173206d75636820617320706f737369626c652062617365642075706f6e> 161.76 132.72 C +<7468652022747970652220617474726962757465206f662069747320636f6e7461696e65722067726f757020736f2074686174206e6f20636f6d706c6578206465636973696f6e73> 161.76 146.16 C +<6e65656420746f206265206d616465206261736564206f6e20636c757374657273206f66206d656d62657273206f662067726f757073202869652e204920646f6e2774> 161.76 159.60 C +<6e65656420746f2074727920746f20696e6665722077686174206b696e64206f6620646174612049276d206465616c696e672077697468206261736564206f6e20686f77> 161.76 173.04 C +<6d616e79206461746120656c656d656e74732074686572652061726520696e206120706172746963756c61722067726f7570292e202049206b6e6f7720746861742074686973> 161.76 186.72 C +<63616e6e6f7420626520646f6e6520756e6976657273616c6c792c2062757420646570656e64656e6365206f6e20696e66657272696e67206461746120736368656d6173> 161.76 200.16 C +<6261736564206f6e2067726f757020636f6e74656e74732073686f756c64206265206d696e696d697a656420696e206f7264657220746f2073696d706c69667920746865> 161.76 213.60 C +<636f64696e67206f662048444635206461746173657420726561646572732e> 161.76 227.04 C +/StarBats ff [12.00 0 0 -12.00 0 0] mf sf +<95> 147.60 240.72 C +/Times-Roman-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<4835542061746f6d6963206461746174797065732073686f756c642062652075736564206173206d75636820617320706f737369626c652e202049207468696e6b20746865> 161.76 240.72 C +<7479706520646566696e6974696f6e206172636869746563747572652069732067726561742c206275742069742063616e20626520636f6e667573696e6720746f> 161.76 254.16 C +<736369656e74697374732e2020536f2069742073686f756c6420626520617661696c61626c652c20627574206e6f2070617274206f6620746865204150492073686f756c64> 161.76 267.60 C +<646570656e64206f6e2069742e202048656e6365206d792063686f696365206f6620726570726573656e74696e6720766563746f727320617320612067726f7570206f66> 161.76 281.04 C +<7363616c61727320726174686572207468616e206120636f6d706f756e642064617461747970652e> 161.76 294.48 C +/StarBats ff [12.00 0 0 -12.00 0 0] mf sf +<95> 147.60 308.16 C +/Times-Roman-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<4d75737420616c6c6f7720756e697175652073656c656374696f6e206f66206461746173657473206261736564206f6e2054696d652026204e616d652e2020536f> 161.76 308.16 C +<74686520746f706c6576656c2067726f7570696e67206f66206461746173657473206973206279202274696d6520696e74657276616c2220616e6420746865206e657874> 161.76 321.60 C +<6c6576656c206f662067726f7570696e672069732062792022636f6d706f6e656e74206e616d65222e20> 161.76 335.04 C +<20> 372.24 335.04 C +/StarBats ff [12.00 0 0 -12.00 0 0] mf sf +<95> 147.60 348.72 C +/Times-Roman-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<4f6674656e20746865207370617469616c2022736861706522206465736372697074696f6e206f66206120646174617365742063616e20626520616c6d6f7374206173206c61726765> 161.76 348.72 C +<61732074686520646174612073746f7265642e2020486f77657665722c20746865207368617065206973206f6674656e20696e76617269616e742c20736f20796f75206d69676874> 161.76 362.16 C +<6f6e6c792077616e7420746f2073746f7265206974206f6e63652061742074686520626567696e6e696e67206f6620612066696c652e2020536f207468657265206d757374206265> 161.76 375.60 C +<686561767920757365206f6620746865204835205265666572656e63657320696e206f7264657220746f206b656570207468652067726f7570696e67206f662064617461> 161.76 389.04 C +<67656e65726963202873696d706c696679696e67206c6f6f6b7570206f66207468697320696e666f726d6174696f6e292e2020486f77657665722c2065616368> 161.76 402.48 C +<7265666572656e63656420656c656d656e74206d7573742068617665206120756e69717565207461672077686963682063616e206265207573656420746f2074656c6c> 161.76 415.92 C +<7468652075736572207768656e20746865206461746120686173206368616e67656420616e64206e6565647320746f2062652072656c6f6164656420666f722061> 161.76 429.36 C +<706172746963756c6172206368616e676520696e2074696d6573746570206f7220636f6d706f6e656e74206e616d652073656c656374696f6e2e2020546869732063616e> 161.76 442.80 C +<65697468657220626520616e20617474726962757465206e616d65642022494422206f7220657874726163746564206469726563746c792066726f6d20746865204835> 161.76 456.24 C +<4150492e> 161.76 469.92 C +/StarBats ff [12.00 0 0 -12.00 0 0] mf sf +<95> 147.60 483.60 C +/Times-Roman-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<5468652041504920746f207772697465207468697320646174612077696c6c206c696b656c7920646570656e64206f6e20696e6372656d656e74616c20737461746566756c> 161.76 483.60 C +<73706563696669636174696f6e2e2020496e20746865736520736974756174696f6e7320746865207374617465206f66207468652073706563696669636174696f6e206d6179206265> 161.76 497.04 C +<696e636f6e73697374656e7420617420736f6d6520706f696e74206f6620746865206275696c64696e67206f662061206465736372697074696f6e2e2020496e207468657365> 161.76 510.48 C +<736974756174696f6e732c2074686520636f6e76656e74696f6e2077696c6c2062652074686174207468652073746174652063616e2072656d61696e20696e636f6e73697374656e74> 161.76 523.92 C +<616c6c207468652077617920757020756e74696c20646174612069732061637475616c6c79207772697474656e2e2020417420746865206d6f6d656e7420746861742064617461> 161.76 537.36 C +<28736861706520696e666f726d6174696f6e206f72206461746120636f6d706f6e656e7473292c20746865207374617465206f6620746865206465736372697074696f6e> 161.76 550.80 C +<6d7573742062652073656c662d636f6e73697374656e742e> 161.76 564.24 C +/StarBats ff [12.00 0 0 -12.00 0 0] mf sf +<95> 147.60 577.92 C +/Times-Roman-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<4461746120547970657320666f7220656c656d656e7473206f662074686520646174617365742063616e20626520646566696e6564203320646966666572656e7420776179732e> 161.76 577.92 C +/StarBats ff [12.00 0 0 -12.00 0 0] mf sf +<95> 187.44 591.60 C +/Times-Roman-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<436f6e63726574653a202869652e20696e7433322c20696e7436342c20696e74656765722a3829> 201.60 591.60 C +/StarBats ff [12.00 0 0 -12.00 0 0] mf sf +<95> 187.44 605.28 C +/Times-Roman-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<41627374726163743a202869652e204c6f6e672c20696e74656765722c207265616c292e202054686973206d757374206f6620636f75727365206265> 201.60 605.28 C +<73656e73697469766520746f20636f6d70696c6572206f7074696f6e73206c696b65> 201.60 618.72 C +<20> 361.20 618.72 C +ski{/Times-Italic fcd /Times-Italic-ISO8859-1 fdf}if +/Times-Italic-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<2d6938> 364.32 618.72 C +/Times-Roman-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<20616e64> 381.60 618.72 C +<20> 402.24 618.72 C +/Times-Italic-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<2d72382e> 405.36 618.72 C +/StarBats ff [12.00 0 0 -12.00 0 0] mf sf +<95> 187.44 632.40 C +/Times-Roman-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<484446353a204a757374207468652063757272656e742063726f70206f662061746f6d696320747970657320646566696e656420696e204835542e> 201.60 632.40 C +<496e646565642c2049206c696b6520746865204844463520747970696e6720636f6e76656e74696f6e206d75636820626574746572207468616e20746865> 161.76 645.84 C +<6578636c75736976656c7920636f6e6372657465207479706573206f66666572656420696e2070726576696f75732076657273696f6e73206f66204844462e> 161.76 659.28 C +<486f77657665722c2074686520747970696e67206973206578707265737365642061732074686520636f6e76657273696f6e206f662074686520646174612074797065206f6e> 161.76 672.72 C +<6469736b20746f2074686520696e2d6d656d6f72792074797065202867656e6572616c6c79206120226e6174697665222061746f6d6963206461746174797065292e> 161.76 686.16 C +gr +%%PageTrailer +rs +%%BoundingBox: 18 86 522 774 +showpage +%%BeginSetup +%%BeginFeature: *PageRegion Letter + letter +%%EndFeature +%%EndSetup +%%Page: 6 6 +%%BeginPageSetup +/#copies 1 def +sv +1.00 -1.00 sl +18.00 -774.00 tl +%%EndPageSetup +%%BoundingBox: (atend) +gs +gr gs +0 0 t 0 755.04 lo 574.80 755.04 lo 574.80 0 lo cp clip np +0.000 0.000 0.000 RGB +ski{/Times-Roman fcd /Times-Roman-ISO8859-1 fdf}if +/Times-Roman-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<5768696c652074686973206f6666657273206d6178696d756d20666c65786962696c6974792066726f6d20612043532d7374616e64706f696e742c2069742073686f756c64> 161.76 64.80 C +<62652068696464656e2066726f6d20736369656e74697374732062792074686973204150492062656361757365204927766520666f756e6420746861742074686973> 161.76 78.24 C +<617370656374206f66204844463520636f6e6675736573207468656d2067726561746c792e202049742063616e206265206d61646520617661696c61626c65207573696e67> 161.76 91.68 C +<6164646974696f6e616c2063616c6c732c206275742070656f706c652073686f756c64206e6f74206861766520746f207468696e6b206578706c696369746c7920696e207465726d73> 161.76 105.12 C +<6f66207468697320636f6e76657273696f6e2070726f6365737320666f72207479706963616c206f7065726174696f6e732e2020466f722077726974696e672c20492764> 161.76 118.56 C +<657870656374206d6f73742070656f706c6520776f756c642077616e7420746f2073696d706c792073706563696679207468652061627374726163742074797065206f66> 161.76 132.00 C +<746865206461746120617320697420697320696e206d656d6f727920616e64207772697465206974206469726563746c7920746f206469736b2e2020466f722072656164696e672c> 161.76 145.44 C +<492764206578706563742061207573657220776f756c642077616e7420746f206b6e6f772074686520636f6e6372657465206f7220736f6d65206571756976616c656e74> 161.76 158.88 C +<61627374726163742074797065206f66207468652064617461206f6e206469736b2028697272657370656374697665206f6620627974652d6f726465722920616e642072656164206974> 161.76 172.32 C +<696e746f2061206461746120617272617920696e206d656d6f7279207468617420697320737065636966696564207769746820616e20616273747261637420747970652e> 161.76 185.76 C +<54686520706c617965727320696e20746869732067726f7570696e6720617263686974656374757265206172653b> 72.24 212.64 C +ski{/Times-Bold fcd /Times-Bold-ISO8859-1 fdf}if +/Times-Bold-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<54696d6547726f7570> 72.24 240.24 C +/Times-Roman-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<3a20546865206d656d62657273206f6620746869732067726f7570> 132.96 240.24 C +<20> 270.00 240.24 C +gr gs +0 0 t 0 755.04 lo 574.80 755.04 lo 574.80 0 lo cp clip np +0.000 0.000 0.000 RGB +ski{/Times-BoldItalic fcd /Times-BoldItalic-ISO8859-1 fdf}if +/Times-BoldItalic-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<4461746147726f757073> 273.12 240.24 C +/Times-Roman-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<2077686963682061726520636f6c6c656374696f6e73206f66206461746173657473> 333.60 240.24 C +<74686174206578697374206174206120706172746963756c61722074696d657374657020696e207468652073696d756c6174696f6e2e2020496e20736f6d6520736974756174696f6e732c207468652061637475616c> 108.72 253.68 C +<73696d756c6174696f6e2074696d6520666f7220766172696f757320636f6d706f6e656e747320696e20612073696d756c6174696f6e206973207374616767657265642e2020496e207468657365> 108.72 267.12 C +<736974756174696f6e732c2074686520656c656d656e747320696e20746865> 108.72 280.80 C +<20> 251.28 280.80 C +/Times-BoldItalic-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<54696d6547726f7570> 254.40 280.80 C +/Times-Roman-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<20726570726573656e7420696e74657276616c73206f662074696d6520726174686572207468616e2061> 311.76 280.80 C +<73706563696669632074696d652e202053656c656374696f6e206f6620612067726f7570206973206261736564206f6e20612074696d652073706563696669636174696f6e20746861742066616c6c73> 108.72 294.24 C +<77697468696e2074686520696e74657276616c20726174686572207468616e20616e206578616374206d61746368206f662074696d652e> 108.72 307.68 C +/Times-Bold-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<4461746147726f7570> 72.24 321.60 C +/Times-Roman-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<3a205468697320697320617373756d656420746f20626520612067726f7570206f66206461746120636f6d706f6e656e74732028> 131.04 321.60 C +/Times-BoldItalic-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<44617461536574> 384.96 321.60 C +/Times-Roman-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<2773292074686174206578697374> 424.32 321.60 C +<647572696e67207468652073616d652074696d6520696e74657276616c2e2020466f7220696e7374616e63652c2061> 108.72 335.28 C +<20> 329.76 335.28 C +/Times-BoldItalic-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<4461746147726f7570> 332.88 335.28 C +/Times-Roman-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<20776f756c6420636f6e7461696e20746865> 388.80 335.28 C +<227072657373757265222c202274656d7065726174757265222c20616e6420222064656e736974792220636f6d706f6e656e7473206f6620612073696d756c6174696f6e20646174612e2020546865> 108.72 348.72 C +<6d656d62657273206f6620746865> 108.72 362.40 C +<20> 183.60 362.40 C +/Times-BoldItalic-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<4461746147726f7570> 186.72 362.40 C +/Times-Roman-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<2063616e206265206f662068657465726f67656e6f7573206461746120736368656d61732e2020466f7220696e7374616e63652c> 242.64 362.40 C +<796f752063616e206861766520736f6d65206f6620746865> 108.72 376.08 C +<20> 231.36 376.08 C +/Times-BoldItalic-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<4461746153657473> 234.48 376.08 C +/Times-Roman-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<20696e20746865> 278.40 376.08 C +<20> 308.64 376.08 C +/Times-BoldItalic-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<4461746147726f7570> 311.76 376.08 C +/Times-Roman-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<2062652046454d20616e64206f7468657273206265> 367.68 376.08 C +<7374727563747572656420677269647320666f72206d697865642073696d756c6174696f6e20636f646573206f662074686520736f727420796f752073656520696e2074686520444f452e> 108.72 389.52 C +/Times-Bold-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<44617461536574> 72.24 403.44 C +/Times-Roman-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<3a20546869732069732074686520656c656d656e7473207468617420636f6d706f73652061206465736372697074696f6e206f66206120636f6d706f6e656e74206f6620646174612e202054686973> 113.04 403.44 C +<696e636c75646573207468652022> 108.72 417.36 C +/Times-BoldItalic-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<5368617065> 174.24 417.36 C +/Times-Roman-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<222077686963682069732074686520706879736963616c206c61796f7574206f66207468652064617461202874686520636f6f7264696e61746573> 204.96 417.36 C +<616e642f6f7220636f6e6e6563746976697479206f662074686520646174617365742920616e6420746865202244617461222067726f757020776869636820636f6e7461696e73207468652061637475616c> 108.72 430.80 C +<64617461206173736f6369617465642077697468207468697320636f6d706f6e656e742e> 108.72 444.24 C +<20> 285.12 444.24 C +/Times-Bold-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<5368617065> 72.24 458.16 C +/Times-Roman-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<3a20546869732069732074686520706879736963616c20636f6f7264696e6174657320616e642f6f7220636f6e6e656374697669747920666f7220746865> 103.68 458.16 C +<20> 392.88 458.16 C +/Times-BoldItalic-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<44617461536574> 396.00 458.16 C +/Times-Roman-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<2e2020466f72> 435.36 458.16 C +<5374727563747572656420446174612c2074686520636f6e6e656374697669747920697320696d706c696369742c20736f20697420776f756c64206f6e6c7920636f6e7461696e20656974686572> 108.72 471.60 C +<626f756e64696e672d626f782c20656467652c206f72207065722d76657274657820636f6f7264696e6174657320666f722074686520646174617365742e2020466f722046454d2064617461206974> 108.72 485.04 C +<776f756c6420616c736f20636f6e7461696e2061727261797320666f7220636f6e6e65637469766974792e2020496e206164646974696f6e20746f2069747320227479706522206174747269627574652c20746865> 108.72 498.48 C +/Times-BoldItalic-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<5368617065> 108.72 512.16 C +/Times-Roman-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<2067726f75702068617320612022736368656d61222061747472696275746520776869636820696e64696361746573207768657468657220746865206461746120697320616e> 139.44 512.16 C +<46454d2c206972726567756c61722c2072656374696c696e6561722c206972726567756c61722c206f7220414d52206461746120736368656d612e> 108.72 525.60 C +/Times-Bold-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<44617461> 72.24 539.52 C +/Times-Roman-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<3a20546865206461746120666f722074686520646174617365742e2020466f72207363616c617220646174612c207468697320776f756c64206c696b656c7920626520612073696e676c652048444635206f626a656374> 96.96 539.52 C +<776869636820636f6e7461696e732074686520646174612e2020466f7220766563746f72206f722074656e736f7220646174612c20697420776f756c6420626520612067726f7570206f66207363616c6172> 108.72 552.96 C +<6172726179732077686963682061726520726571756972656420746f20636f6d706c6574656c792073706563696679207468617420766563746f72206f722074656e736f7220646174612e2020546865> 108.72 566.40 C +/Times-BoldItalic-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<44617461> 108.72 580.08 C +/Times-Roman-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<2067726f75702077696c6c20616c736f20636f6e7461696e20616e206164646974696f6e616c206174747269627574652063616c6c6564202273746f72616765222077686963682063616e> 132.72 580.08 C +<68617665207468652076616c75657320227363616c6172222c2022766563746f72222c206f72202274656e736f722220746f206465736372696265207468652067726f7570696e67206f662064617461> 108.72 593.52 C +<77697468696e2e> 108.72 606.96 C +<54686569722022747970652220617474726962757465206973207468652073616d65206173207468652061626f76652d737461746564206e616d65732e20205765206861766520746f207265736f727420746f20227479706522> 72.24 633.84 C +<6e616d65732062656361757365207468652061637475616c206e616d696e67206f66206d656d6265727320696e20616e20484446352067726f7570206d75737420626520756e697175652028616e64> 72.24 647.52 C +<7468657265666f726520646966666572656e74292e2020546865736520747970657320617265206e657374656420617320666f6c6c6f7773> 72.24 660.96 C +/Times-Bold-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<47726f7570696e67206f6620536369656e7469666963204461746173657420456c656d656e7473> 186.00 688.32 C +gr gs +0 0 t 0 755.04 lo 574.80 755.04 lo 574.80 0 lo cp clip np +0.000 0.000 0.000 RGB +0.240 sw +[] 0 setdash +0 sc +0 sj +gs np 186.00 689.52 t 186.00 690.24 lo 392.16 690.24 lo 392.16 689.52 lo cp f st gr +gr +%%PageTrailer +rs +%%BoundingBox: 18 84 521 774 +showpage +%%BeginSetup +%%BeginFeature: *PageRegion Letter + letter +%%EndFeature +%%EndSetup +%%Page: 7 7 +%%BeginPageSetup +/#copies 1 def +sv +1.00 -1.00 sl +18.00 -774.00 tl +%%EndPageSetup +%%BoundingBox: (atend) +gs +gr gs +0 0 t 0 755.04 lo 574.80 755.04 lo 574.80 0 lo cp clip np +0.000 0.000 0.000 RGB +ski{/Times-Roman fcd /Times-Roman-ISO8859-1 fdf}if +/Times-Roman-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<4120636f6d706c657465206c697374206f66206174747269627574657320616e6420706f737369626c652067726f757020636f6e74656e7473206973207370656369666965642062656c6f772e> 72.24 249.84 C +ski{/Times-Bold fcd /Times-Bold-ISO8859-1 fdf}if +/Times-Bold-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<54696d6547726f7570> 72.24 263.76 C +/Times-Roman-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<3a20436f6e7461696e7320612067726f7570206f66> 132.96 263.76 C +<20> 234.72 263.76 C +ski{/Times-BoldItalic fcd /Times-BoldItalic-ISO8859-1 fdf}if +/Times-BoldItalic-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<4461746147726f757073> 237.84 263.76 C +/Times-Roman-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<2e20204561636820646174612067726f757020697320696d706c69656420746f20726570726573656e742061> 298.32 263.76 C +<706172746963756c61722074696d6573746570206f7220696e74657276616c206f662074696d652e202041747472696275746573206f66> 72.24 277.44 C +<20> 323.28 277.44 C +/Times-BoldItalic-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<54696d6547726f7570> 326.40 277.44 C +/Times-Roman-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<206172653b> 383.76 277.44 C +ski{/Times-Italic fcd /Times-Italic-ISO8859-1 fdf}if +/Times-Italic-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<747970653d737472696e67282254696d6547726f75702229203a> 108.72 290.88 C +<20> 245.28 290.88 C +/Times-Roman-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<45766572792067726f7570696e67206f626a656374206861732061206e616d65207468617420636f72726573706f6e6473> 248.40 290.88 C +<746f206974732066756e6374696f6e2e> 117.60 304.32 C +/Times-Italic-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<74696d65696e74657276616c3d446f75626c65286d696e2c6d617829> 108.72 317.76 C +/Times-Roman-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<203a205468652072616e6765206f662074696d65207468652074696d6567726f757020726570726573656e74732e> 259.20 317.76 C +<546869732076616c75652073686f756c64206265207570646174656420746f207265666c656374207468652072616e6765206f66> 117.60 331.44 C +<20> 365.52 331.44 C +/Times-BoldItalic-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<4461746147726f757073> 368.64 331.44 C +/Times-Roman-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<2074686174206172652073746f726564> 429.12 331.44 C +<696e20746865> 117.60 345.36 C +<20> 144.72 345.36 C +/Times-BoldItalic-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<54696d6547726f7570> 147.84 345.36 C +/Times-Roman-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<2075706f6e20636c6f73696e67207468652066696c652e2020546869732063616e6e6f74206265207570646174656420636f6e74696e756f75736c79> 205.20 345.36 C +<6265636175736520697420776f756c6420636175736520746f6f206d756368207365656b696e672e> 117.60 358.80 C +/Times-Bold-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<4461746147726f7570> 72.24 386.16 C +/Times-Roman-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<3a20436f6e7461696e732067726f757073206f6620747970652022> 131.04 386.16 C +/Times-BoldItalic-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<44617461536574> 260.64 386.16 C +/Times-Roman-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<222e202041747472696275746573206f662074686973> 300.00 386.16 C +<20> 395.76 386.16 C +/Times-BoldItalic-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<4461746147726f7570> 398.88 386.16 C +/Times-Roman-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<20617265> 454.80 386.16 C +/Times-Italic-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<747970653d737472696e6728224461746147726f75702229> 109.20 399.60 C +/Times-Roman-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<203a2045766572792067726f7570696e67206f626a656374206861732061206e616d65207468617420636f72726573706f6e6473> 238.56 399.60 C +<746f206974732066756e6374696f6e2e> 72.24 413.04 C +/Times-Bold-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<44617461536574> 72.24 440.40 C +/Times-Roman-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<3a20436f6e7461696e732067726f757073206f662074797065> 113.04 440.40 C +<20> 234.72 440.40 C +/Times-BoldItalic-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<44617461> 237.84 440.40 C +/Times-Roman-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<20616e64> 261.84 440.40 C +<20> 282.24 440.40 C +/Times-BoldItalic-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<5368617065> 285.36 440.40 C +/Times-Roman-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<2e202041747472696275746573206f66> 316.08 440.40 C +<20> 386.64 440.40 C +/Times-BoldItalic-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<44617461536574> 389.76 440.40 C +/Times-Roman-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<20617265> 429.12 440.40 C +/Times-Italic-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<747970653d737472696e672822446174615365742229> 109.20 453.84 C +/Times-Roman-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<203a2045766572792067726f7570696e67206f626a656374206861732061206e616d65207468617420636f72726573706f6e647320746f20697473> 222.00 453.84 C +<66756e6374696f6e2e> 72.24 467.28 C +/Times-Bold-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<5368617065> 72.24 508.08 C +/Times-Roman-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<3a2020546869732067726f7570> 103.68 508.08 C +<20636f6e7461696e7320616c6c20646174612072656c6174656420746f2074686520706879736963616c20287370617469616c29206c61796f7574206f66207468652064617461206173> 165.84 508.08 C +<6f70706f73656420746f20697473206c6f676963616c2028696e2d6d656d6f7279206f72206f6e2d6469736b29206c61796f75742e2020546869732067726f7570206d617920636f6e7461696e20646966666572656e74> 72.24 521.52 C +<73657473206f66206f626a6563747320646570656e64696e67206f6e207768696368206461746120736368656d61206973206265696e67207573656420282273747275637475726564222c> 72.24 534.96 C +<22756e73747275637475726564222c206f722022616d7222292e202041747472696275746573206f66> 72.24 548.64 C +<20> 264.24 548.64 C +/Times-BoldItalic-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<5368617065> 267.36 548.64 C +/Times-Roman-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<20617265> 298.08 548.64 C +/Times-Italic-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<747970653d737472696e67282253686170652229> 109.20 562.32 C +<20> 212.64 562.32 C +/Times-Roman-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<3a2045766572792067726f7570696e67206f626a656374206861732061206e616d65207468617420636f72726573706f6e647320746f20697473> 215.76 562.32 C +<66756e6374696f6e2e> 72.24 575.76 C +/Times-Italic-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<4e73706163653d696e74284e756d626572206f66207370617469616c2064696d656e73696f6e7329> 109.20 589.20 C +/Times-Roman-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<203a205468697320697320746865206e756d626572206f6620636f6f7264696e61746573> 316.80 589.20 C +<74686174206d7573742065786973742070657220706f696e7420696e2074686520677269642e2020466f7220696e7374616e63652061203244206172726179206f662064617461206d61792062652061206d656d6272616e65> 72.24 602.64 C +<656d626564656420696e2033442073706163652028736f20697420776f756c64206861766520322064696d656e73696f6e732c20627574> 72.24 616.08 C +<20> 349.92 616.08 C +/Times-Italic-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<6e7370616365> 353.04 616.08 C +/Times-Roman-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<20776f756c6420626520332062656361757365206974> 386.16 616.08 C +<6861732033207370617469616c2064696d656e73696f6e73292e2020416e20696d6167652077696c6c2062652032442077697468> 72.24 629.52 C +<20> 328.08 629.52 C +/Times-Italic-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<6e7370616365> 331.20 629.52 C +/Times-Roman-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<3d322e> 364.32 629.52 C +/Times-Italic-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<446174612063656e746572696e67203d20737472696e67287b2263656c6c2063656e7465726564222c227665727465782063656e7465726564222c22666163652063656e7465726564222c202265646765> 109.20 642.96 C +<63656e7465726564227d29> 72.24 656.40 C +/Times-Roman-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<3a20205468697320697320746865206c6f636174696f6e206f6620746865206461746120696e73696465206f662074686520677269642e> 127.20 656.40 C +/Times-Italic-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<436f6f72647379733d737472696e67287b2263617274657369616e222c2273706865726963616c222c2263796c696e64726963616c227d29> 109.20 669.84 C +/Times-Roman-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<3a20204966207468697320706172616d65746572206973206e6f74> 384.96 669.84 C +<7370656369666965642c20697420697320617373756d656420746f2062652063617274657369616e2e2020546869732063616e20626520657870616e64656420696e207468652066757475726520746f20636f766572206f74686572> 72.24 683.28 C +<636f6f7264696e6174652073797374656d732e> 72.24 696.72 C +gr gs +0 0 t 0 755.04 lo 574.80 755.04 lo 574.80 0 lo cp clip np + 184.32 67.44 t 184.32 198.96 lo 393.84 198.96 lo 393.84 67.44 lo +cp clip np +gs +0.7528 0.7502 sl +244.8440 89.8995 tl +278 175 8 [1 0 0 1 0 1] +/datastr 278 string def +/pp 1 string def +/s 1 string def +/rn{currentfile s readhexstring{0 get}{pop exit}ifelse}def +/unpack{ + /DC 0 def + /BC 0 def{ + DC datastr length ge{exit}if + rn + /BC exch def + BC 127 le{ + /BC BC 1 add def + DC 1 DC BC add 1 sub{ + datastr exch rn put + }for + }{ + /BC BC 126 sub def + rn + /pp exch def + DC 1 DC BC add 1 sub{ + datastr exch pp put + }for + } ifelse + /DC DC BC add def + }loop + datastr +}bdf +{unpack} bind +image +e6b015b3acbaa3b3abadb4b7b8a2b5b7a4aeb1afb1b6afb6a380b105a7c1b4a0bebd80a902b4b0b180ad02b1b0b496af8eb117aeb2adafb7a8b8aea8b0b1afaeb7b5afaeabb4a7b1bfadb4c4b0 +e7b080ad14b9adb2b4a9aca4bab8a9afbfa6afaead95abbfadb280ab08b1a6aa9fb1c1acabb880ae02b8abac96b18eae07b4a0bbb3aab79dbd80b80dafbaa7aaa8b9b5acbab4aeab9fafc4b0 +e6b022afb1a7bba9a6c0acb8a9b5a8b6a3acb2b7a8b0d4b6a3c4a1bbacb9b2b7b5bb9dbca5b380af02b3a5bc96b08eb217abbaa5abbea9c4a1a4a8b9a1bbb4bca1b6a5abaaabb7b5b6c4b0 +e6b012b3adbdadb3aeacb1a6b0b7aeb2b3be0002000a82000107ae80a407c0adaaa9bfa3baa880ad02a8baa396b08eae14b1afbeb1a5a7a6bdc4b4a8b6b1aeacbcb3b1b5aba680b700a3c4b0 +e6b00cb7bfa4a1b9c1a3b5cc00080005800000ae80a904bea8bbb5b4800009b9cc9e0016000200b8b680b101b6b897008eb117b2acafb0b2c5adaaa0a7bbadb5a5b1afa4b1b9b8afadb1a9c4b0 +e6b00698a8b3c3afa50580000a09a8c2afb3bbabb1b5aa0c8000020400078000000380ad02bea9b280008004800097b28f00160c00b0a6bc96b4bab2aaafb6b9b1a9bcb7a2adbaadb1bbc4b0 +e6b001c0b881001d06adb7b9b7b5a2aaadacafb1aaa8aeb0abc6a6b3baa3b5acb3a1b8acb9aa80b502aab9ac96af8eb002b6a8be8100001680000e0408a7a0c892bf9dc1aaa5b7aaa6abc4b0 +e6b0800003b0a8b9b380af03b2a7abb580b114b0b1aebaaeb4aebba4b4b2a8b8acb1adbba6b6aab680ae02b6aab6a6b117b0b5a8b2b4afb7adb1afa10d040017000a99c1b1b5afb1b4c4b0 +d6b002b5a2b980aa0aadbca7b0a9b9a4b5a9050086b017b3acafa6b6afb1a8b2abb0acb3b5b1aeb0bca5b0a7adabb38eb007b4b0b3a6c2a9abb4a6b002b1000c80001209b6aeb2afb5aabb9fb8b5aabeadabb8a4b0b2b4b0 +d6b003b3b0aab080ba01adb680b4029eb6c3800000b986b00ab19eb8beb4a2babbb2a7b780b105afa9b3b2aead80b702bcada58eb007aeb5b6a8acb3b4a6a6b006afcf93b3bf980981000dc0aeb6bba5a8b39ab3b9b1b3c7a4b4b0 +d6b008a1c3b1b4b0b19bb6a080ba800002baabb287b016b4c395b0b1c299b0aea5b6adbda3b5b6a1b9aaa1adb2b88eb007aca9adb7a9aeb2b4a6b009a1bbaec19cbdacb1bebb81000a09afb5bab0a9b7a9b2a4aeb4b0 +d6b00fb2b1a4b5adaeb2b7b10500b0b2aabea786b017a3b79dbab2b99bbdb6acb8b9aba0bfabc699bfacafbbb0a28eb005beb3abb2b8b480aca6b00cb5a3b4b2b1a8beb8a0a7b4b9b880000810a2b6b4a2bda8b6bab4b0 +d6b00faab3afacbab2bb9c00059fb9a9aebbae86b003b8b2bbaf80a708b9b4acba97b8000204800006129fb9afaaadb98eb0079cb4baa7a9a5abb4a6b010bab29eb2b9b6a1b0b3beadb2a0c0b9a10d800004afb1aea1b8b4b0 +d6b00fb5b0b6a4a5b7aa09baa3bdb8b0ada7b487b00590bcaca9c3a981000d0105b7aaa6b5bea4baafadb7b1ac8eb007bfa9a6bab2b8b5ada6b006a6a9bbc5a2abb680b20ea0b2a1bda7b4b1a2af030004aeb2a7b4b0 +d6b004abb39cd2b5800008aba9afa5c5a2b2b1ad86b005b4baaeb8000880000da615a696bea9c6aaaeabaab0adb580ac8fb002afb8a68000010700a6b005afb8b59abbad80ae0fa9cba9b2b1b3acb8bda9b3abad0300bab4b0 +d6b006b5a8b7a2000ca780ba06abb4a2b8b1abb286b017b3afada6b8aaadb6b300b4b6b0b7a1b6aabcabb6abaeabb58eb007abb2afa909aeab07a6b000b880ac80b212b0b2b1ba9aadc1aca5b4a7a9afb6a7b4ad0100b4b0 +d7b006afb60500abb6ac96b04fb200b0b9a2b1bbb000adb3b5a8baaab5aab5aeb1b2b1a1bcafb3b1a3b7bab0aebea3ad05adb3b9a6b0b7ada4c0b0afb4b3b4aac097b1c0aab5adb4b5a1bfa2b3b6a6b6b3a0b2bbabadaeacbaaaa9b5a896b00700afb8a5b8b3aeadacb0 +d6b001aab0800003c5adb9aa96b04baf00a4b1b3b4aba500c5adb1a3afb7a9b8aeb5b3ada4c5a1b6a8b2b3aaa7a6aab0b108bcabaca8b6afaab7be9bbaa0b2b094bcb1c5ada6b7b2acb6a2b2bcafc0b1adb7c3b6b4a0b9b6aac19980bb01a1bf96b007ba0001bca5a4bdabacb0 +d6b007b6b000baa6afb2a996b04eab0aabafb4adb4bec1a2a1bdbe9fb1b3a1c0a5b1aec0a7b8b4a9baadaeb2b5b99d07009dbab3b1b7a4bfa4aebeb8b5abb2cda0aaadb8aeb4a5c49bbabcaca4a8b4b3b59eadb0b3a9acbba3beaca8ab97b080b7800003b4baa5b1acb0 +d6b007bfa70e99b1afb7b496b02fad09b3b1adacb994abb9b6a002baac040f9ec0b0a8b6adb7a69ccca0bab0b7a3c400a1c1bba3bca5c0aba6c5b100af08810001c1a9800008ae0a00b9a9aab10fb081ae000880af80b401a60f810002bcb9b496b002a6b2b4800002b2c5a9acb0 +d6b007a100a5beb4b0abae96b00eb300acb3adb6a91aa5c69e0b00ac02800023afb20ba8a3bda1c3020002b2a7b4b2ab03b1b49fb8a9b5acaeb1b500050200b8a5b2ae008009800003b200bab2800007b1bea501adb7b1a180000603b6b302a5b3a996b007be9fb8bbb4009bb5acb0 +d6b007b31b9fb3aeadb7b196b011b500b4b5a7b5ae00b3a60d0012ac02a805b280000b12b0b9b600a7c000b7ba99bf800004b8a60d000380000fb2b99e130700a9b3afae02b4a900bcac800814a7ae12b8a99fb500b6b5a1ca001196b0ae03b8a8b996b000b580b004a8a6bc07beacb0 +d6b0079b06bb95bab5a6ad96b00bb202bcb2a7afb609acbeb1a980002da4c10011adaa00ab0100b3040001aeb2acae00bdadb9adacaaad00bda30002b0abb3b1b5b100aa01b6acad00babb800007a5b3bb000faea4ab800007a5b1bdb700aeafb296b005abba9cbeb9ae8000acb0 +d6b007ba00afbbada1bcae96b033ae03afabb9b1a600adabb40400bcba0008a9b7ad00af0203000eaba7b3a9b3b00500aeadaac0a107029ebb05a6b5b8b3a7bca306800019b8b1030aa5ab07b5acb50100a9acbab900b6b2b10100b5b2abb496b007aeb3b8a8b8a3ba00acb0 +d6b00faf00b6abb2b1a7b6aeabb4a7b1bfadb48eb01e000cacadb2b401b1acbba50a00a7b702b9a8a6a903a907aeb2b0b6a4b1acb780ae0606b1a0b800030586b014abb5b600baafb100b0b9a9b600bbad00bb00b3a3bc80000806000611a5b4bca1b896b080b209ada9afadaf02b2adb0af80ac01aeb7a4b0 +d6b00fbaa810a2aeacb7afb5acbab4aeab9faf8eb02707a5b9a4afb400bcbe9db300b7b0b300a9b0b9bf00b000b0b1aeaaafb1b5aeabb5a800150300bbad86b012bda3ad05a8b50200a2b7a4ba100008b2a60bb080b2800008b2adb099bab5b6b2af96b00fada5c7adb7afa903b4b3b1a9c3c59faaa4b0 +d6b00fb1aa0002afb8b2b0b6a5abaaabb7b5b68eb00300afa9c480b31022949ac1cb00b5b8a901afb5a700adb30181000825a2c3b39dc0a2bab080af02b7a9ae86b00eabbbb9a10d00b1bbb0c5aaa1a9c1b180b60e97b0bbb300baa2b7bdb8a2aba3b6a697b00eb6b3a6b0c0b100a2c2a9a7a59fbcb1a4b0 +d6b004a3bab3000480ac05b0b3b1b5aba680b700a38eb00ca6c0a8baa1a7a6c6c2aca8a2ba80ab18b2bca3beb3b5acc9a5b9b2a3aca7b0abb0b5bca6a4c09db2b586b011b7a5b0aaaeb0bca5b6a4b8b9adaab8a2afc880b1800009bcbaaba8bab3c4aab8b496b00fb5afa2c99ca5c107bd9fb6c4afb3b9aca4b0 +d6b00fb9a8bab00ca5b5b4a4b1b9b8afadb1a98eb01bbcaea4abbdaaa5aca4a2afb5a4aec0b1afaca7aeb68ebfb1a8b1baac80b309b8aba6a8afb6a7c5aaad86b01fa1b7bfb2b3aabeada0afaea5acb1b2b7aeb1adae09aeaaa7b6a6acaeb3a3a4af96b00fb1a2c29fb6b4b500a8bbb2b3a4a8c29ea4b0 +d6b00fb5afa1aab500aab0bcb7a2adbaadb1bb8fb025afadaab3c0afb9b2b9b8b1bda9b1a59dbabfa9b6cdb5a5bda4b0b7c29cabc0bfb7aebc9db7b587b01aabbb9babacb0b6b4b6b9a8babfb59db1acb5baa705afc8aeb7b1b380ae02bab4ba96b00fa5c89fadbbb0051baeb0abacbcb3a6bea4b0 +d6b005a4bbc5b1b0b88004079dc1aaa5b7aaa6ab8eb001b2b080b923a3b5aca6a7b8a6aeb3acb4b9c0a8bca8ada4a0bea7b3b7aaabb2b4a9ad9db0b4bba9acaf87b005c2aac7b2a6b081af15a8ac99b8bcb3baa2b9ad00ad96b8adabbaa9aab3a8a996b004b3a3beacb4800008a9c3a1b30800afb0ada4b0 +d6b00facb8a2acb4b1ad000a99c1b1b5afb1b48eb004aeb2afabbc80ae20bab9b0aab9b2a7bda7adb5a9b0b9b4b2abb5b6abb8acb7abafacbeb3abb0b3aeb386b01fada8b2a5b8b6aab4adb2b3beb0aba6b2a7bfa50002b4b7b3b4a5bfacb6adacb996b008b2afb4b1000aafb5a580b300a8800001c2aba4b0 +deb00caa0609a5b7aeabbbabb1b7b5a680b610a1b4b8a8b2b0bbb4a8b4a2b5aab2b3b4af86b007b7a4b5aeafacbbac86b000b680ab02b4b6b180ae86b002adb4b380ad02b9a9b186b017b3b6b0a3babba0b4a6bea7bca8aeadb5aeafb2b7afa4bbae86b109afabbca7afaab3acaebd81001ab8a8b6b9a9b8a9af0004adb0b8a7b8b1a5bea3b2a9b9a3b6a8b6b794b0 +deb01fb8ae9d0d00a8afa4b2b7a5a7b2b5aec4aeabbfaba3a8aac1b0bbb9bba9c194b686b007a9bcb5acb0ba99bf86b207aeaab5b09ca9bbae86b007b7ada9b5b897c1a886b017a4b2a3bdb299beb7bf9eb8a2baacbda3abaea6a3b9b6afa286af07baa7aab7b5adbfb4810007bcb7abb7a3aba8b280b700b381000ea5c0a4b3aeb1b3b2aea3c3b2b4a6a394b0 +deb00fa9b7aeb1af020410aeafb6b5a9adac9f80ae0da6b3cda9bca0a8a1aba4b9a1c3ab86af80b4059cadb7aabd9e86ae07b3b8a9b2ccb79eb486af07aaacafbe9bcba5ba86af17c3aac1aaa6c2a9abafb2b9a9b2c198b9b0bfc2aba6a9aec186b203a807030182001faea4b9ada0ac0bb4b0bfa0aaa8b0aabd0ba9b9a2bfada3bca2c0b1a6a7adb1c994b0 +deb008bfabbcac9cb5b79d068000140ab7a2afbabda4baaba7b0a0c0b6c5a8c1a59ec3b186b307b1a3b7bca3b1bab486b300a980b504a5a0afbab586b307a5c6b0aebd9aa6b086b315a5aba8b7b4abb8afb8a6b9b7a9a4c3b0a4a5adb2000a890000b6800009b5afb5c7bba4aeb9b4b780000db0aebda6c9aea6b9a3b6aab1b8aa80af07bca0b8afb2b8a2a194b0 +deb004a2adabc6b580b4060001a0c49c001a81000e0a01a6b4c1a2aaa1b4afa5bdc691b886b006a6cd9ebab3b2a287ad01aeb780ad03c0b7a5ad86b007aeb69fa7abb9bbb586b007b2c0b4b3ada8b8b380a801000a80000905000a000200b1acafb186b00eb8a6bd0ba2bbb59ca6b9b6a3adbbb180000ea3bbaa9cb4b1adb9b2b3b4a4afc0a3800005abbb9eb7b2b894b0 +deb012baa7bf9db5b0000aa7c0b1a7beab9bbdb1a9b58100051d0008030004800001b8ae87af06a7ba9eb9a7b5b786b207aca9b0b3acb0b6b286af06b5a5adc3b200b087af00b180000209000180000f0805bda5b5bba1baaabfafacb3b1b4ac86b004a6c4ae000480ac13bbb3a7afadb29cadbe04bea0bebab1c09da1b1b480ae80b008adae001100bfb39eb694b0 +dfb080b11ab6a4ba00b5c0a5a8afb2afb7adb1b99bc2a9a8a6b2aeafb4abb8af8800070e00c0a2b7c2a0b586b106cc9bb9be98c2a58900000980000006890016b4ba9ec2b1aab7a4bd9ea9b6a5b5b20497b4bcb9a7b1af86b10cb5a6b99f0800b9a9b6b1a9c3a980b118aea5a7bd9fb3a39ec9b1b5adacbaafa1b7a8aead00aeadb4aa94b0 +deb015b1aca7baaa02b1b3acb0b7aeafaeb2aba9afb8aeadb480b107b7a7b7b3aeaabaaa86af03a9ab00138000000e880000138000020e000f87af03bf9fb2ba80b10100b386af17b8a2b6b4a7b4b3acb1b2aebaaeb4b0ac00beb6a1b8a9afae86af22adb1b2b9aa09a1b5b2a6c29cb6b4a8b2b3a9baa7b7b6b7a6acafb6adaab3b0afb6b3ad80b002b4b0af94b0 +deb007bf9bbbb9b100a4b2beb005b3b8afb0afb6800007aba8b4acadbfa2b18eb0800105a7b5a0b3b4b68eb004afb5a4b4b980ad10aaaeb2afacada7a9bab0b1a8b8b5aab9af86b007bba3b4c3aeb8a8a98cb0 +deb007aba5b3a3b601c3a7beb00fb3a2b8b4a6c1b605b7c4adb8aea3b8b68eb007a9baacb4c6aca7a68fb016afbdaba9adb9b7a3b1b0abb7c1b4a2aeafc0aba4bab4ae86b007a8b1ba99a9a5aec08cb0 +deb007b8bbb39b0da5a9b1beb001b2a980b302b593b2800006a7a3b4aeb7aab78eb007bda1a8b7a4b2bab28eb009b39cb9adbbbdb3a4bcb780b50baea4a9b8b1b79fa5c3b5a4b386b007b60100bec3b8bd9e8cb0 +deb005b193bdc800b480b2beb080b10da8acc2b6b8ab0aa6b9b7b6a6b5ac8eb007a6b3beb1b6b4a0bc8eb004b9aeb4afb180a500c180a60da7a6acbab9a8a2b3c0b0a6adaeb686b007b2af00b89d9eabb78cb0 +deb007b6abb400b2b3b1a4beb00fb5b1b7aa95b2acb2b003a89eb0c09bb88eb007acbfa4a8b6a3b4a48eb017a8b7a4adb8b4a5b8c2b0b5beaea3aeb8d18ebec2a0b6b1b286b007aab1ad00b7bbb0b58cb0 +deb007afc8a601aba9c0b3beb002a4acb680b809b7bda6a70b00b1baacb98fb007bd99b6bbaac0adb98fb016b8beaeaab8afb1aba0afbcb0afb2a59ebc99b2c2a6b9ae86b007b5b4baa0b5a4c39d8cb0 +deb007a9a007a6bbb0a3adbeb004b7bca5a2ba80a508b5bba900bbabb4abb78eb007aeaac1a1a4b105aa8eb0800015acbeafadacaeaabdbe9fa5ce961100bcb9a2a99ec5ae86b080b1059fbeb0b1b4b18cb0 +deb007b50500b0afb4abb6beb00fa7b1b9b3a8c0a2b4a9b70daab7b0b7aa8eb007b3b0a5c2abb003b38fb00103b280aa12b1b6aeb5a3afb9a9adb9a90005a3c3a9c2a1ae87b006b1b5abb5acafb28cb0 +d6b00faebba7b5be9db8b2b100c2ada5b8afaec6b007b3b5ad00a6acb8ac8eb000ad80af0cb0b3ab0901adb5aaafaca7b5b386b007b99fc2a7abbfaab386b000ab800304a6b4a4b6b39cb0 +d6b00faca6bfb09fb8bba608b4a9a8c0a1b6a9c6b007afa7af10b0afa6bc8eb080b50bb0a5adc88fb5b0baa8aac4bb80a686b007a2c4a1aec49da1b486b007aeb20006bfafc3979cb0 +d6b00fb4abb8a1c4b0a504aab2a8bea1bea8b5c6b005afc7a8ab00b680a98eb00fa4afbab2b0b3a6bdadb1b4a9a6a9aabc86b007c3a9b5a2afbac6a687b001a9ba800002b899c59cb0 +d6b005b7ba96b6abaf800001c2a680b103a5bab0b1c6b080a505adab12a8b7b98eb00fafabb0aab0a5b2aab89ebabfaab7b8a686b007a8bab3bba6aba9bb86b007b9afa9ae0ab7a6b19cb0 +d6b00f9ab9c5adb70006b097b9b0a8b6acb8a8c6b007b2bca8b8b200abaa8eb000b980ab06a7b6abc6b1b2a780b403a5aaaea886b007b1acb2b7b203a2ae86b007a2b4b9b500abcaa79cb0 +d6b00fc2aba6afa204bea8d2a4abbba6baa7adc6b007b3a1b7b98c0900ac8eb00facaab6b2b7a5b3a3a9bba7a9b8afb2b986b007b1a1b8a4b5b206b586b003b1baabb180b601a0b89cb0 +d6b00eacb4abc500a8b8a993bea9b5acb1a7c7b007a9c5a7a0c9b007a98eb003afadb5a980ac09b6bfb4b5a4bdada0c39e86b005b6b9a6b6aca8800086b007bca3b7a3b6aab7ab9cb0 +d6b00fb3aaad0009aeaab4bba9b0b1adafacb5c6b007b1a7b2baaf9f0a008eb080ae0db7aeb2b3a3acaea6bbab0300b4b586b006afa9afb4adb6af87b007a4c2aab8b2acaeb29cb0 +b6b015b1a5b2b4b3afb3a9b3b0b1b5a4adafb1b3abb7aca3b580b309b2a5bbb0aeb8aab1adaf800008b1b4b6acb1be9d000b8000010104820003010300098300000187000005800080b512bba3afb2a8b5acadb3a6b2afa9c4aaa7b6baa88eb017b4adbfb1a7b4abaeb3b1b3a9aabd9f00b6a3bfaca6baa7b486b007adbdb3abb7a5b6aa8eb080b205b5b7b3acadb38eb005aca3b3b2aeb780ae94b0 +b6b013b9bcafaaa2b2c1a1af9fba9fc0c1acb8a9a70a0c82000005800009bb9ba9ba00040a000a1081000b0300040d94bcbab1a7b2bba980b0099fbca3b6c3b8acb1b2a486b102b8ac0b81001115b2b1a6b8acaec6adbcb2b793bfb3b0a4b68eb017af9fabaeb4baacb5aeb1a0bfc2a3bb02baaca7bfb2a6bcaa86b007aeb1a9b1b6a5b8b78eb207a6b4a3aca1c4b6ae8eb201bfb680ac03a9b5adaf94b0 +b6b00ba6a0b2b7c9a7a3b9a6c0000b82000f061000a7b7a3b9b1a6bc000a0004010780000d08a1a8aabeb4aba9beb1bca09cb180b40da5bfafaac7a8b4a5a0aab1b0b3b886b280ab14b8b59bbfaa000503a3b0aca0c398b3a3bdadb9a2b88fb00eb6b5b7abaaaba5b6b2abafaaa1a40b8100020a0006800000ac86af07b0afaab8b2aeb2a48eae07b5b2bcb7b3a0abb88eae07a3b3a5b7b2b6aaac94b0 +b6b031c0b4a7aea9b2af0006009fb79ec4b1b4b5a0aec8aeb5c2a6b7a6acb1a4b7aba8c20503b7b1a5c79cb9aba5a2aebfbdb0a4b280b008acb3a7bdaec0c1b2ac80ad00ac86ad0aafaaa7b8c2a4b2b5a7b20d800002b4abbd80ac80b203a8baa9af8eb000a380b711a6abb5b1b3a0bdbbb3000b00b0adc2aea9b880b500b886b307a7b6bab5a1aeb7ab8eb307a8b2abb1adc0b2a78eb304b1c6abb6a780ab00b994b0 +b6b003aea3c0b2810018b1b5a7bbabbaadb4a9acb1be99adb89aabb5b6b4abb8a6bdb580001dbd9ec7b49db8a7b6bab5a1aeb7abb3b6a0c0acafb99fb4aa9faabab1acbe86b30cb0b7acaba6b3b8a6b9b4aab8ac80000804adc79eb8b29eb1b78eb00da9b1adafb8b9b1a4b3ba950006aa80b107b6ada5b9b2a8b69e86b007b9aba5a2aebfbdb08ead07b8a4b5adc2a0afb28ead07aab2a5b0aab0abaf94b0 +b6b03fb6a5c20006b7b2afa9bba3c99ea5bdb0b1ada8bcc1a9a4cda0bcb2b8b2a1acb2b7bfac0a00b4b0b9b0afaab8b2aeb2a4afb6b1bca2b7aebea6b4b0b2bdb1a2ac86ae05adb2b0bea6b280b1069dabc1a2b1b4c4810005bfb59dc7b0ac8eb017bbb1adbaada2b7bcaf0007c09db5b7adb1a6b9afadb4a9c886af07aba9beb1bca09cb18eb205bcaea5a7b1b580b68eb207bda6b3b0b2baafa494b0 +b6b000b280003cc2a5a8b2a9aabaadacb6aeaab2b3b8b19fb0a8ba9db2b0a3a8b2c1a7b0b2b6a500b8a9b7a2aeb1a9b1b6a5b8b7b1a6c09db1b800071095cda49ebdbca986b210b7acaab6aeb6afb1b6b49ebeb1aba6b1cb800004a9abb1acad8eb016aba6aab7a5aac19d0500af99c3a6a9bcb5bba4b6a9b7ab8700060300040d94bcba8fb107a7aa0d0b00bdafa78eb105b58fc8ada5b080b594b0 +b6b00f0005b49abdb9a3b7afb2aeb2000e00068000030800b4af80b127afb1adb8aea3c0abaca9b001b0adafb6adbdb3abb7a5b6aab0b5a3bc0001b7a7aabaafaabab0a4b686b017a9b5b2a7bab1a1b6b2abb7b4aabaa5b99fafbb000cb6a3b78eb008b4b1afb5b1c1990a0080b405b1aabbadacaa80b004b4b2abb0b786af04b1be9d000b800000018e00010702830000018e00040109abb3b080af00ad94b0 +aeb01baabca1bab2a3b8000a99c1b1b5afb1b4adb90100b8b5a800b2abb604800005bfa3aeacbba480b131a6b7b4b2af00bab8a9b6afb5a5bab0a6baabb6a0bb08a8b3acb1b5a8adbbaaadb1afaaafb7afb4b1a2b5abb1adaeadb8adb780b10aa9b0acb9b1aaa6c2a8acb5800007b3a7b8b0b2abacb587b036b8b7abaeabb10300b0b1a7a8b4afa9b7b0abb000b4a6c1a6afbba5b1b9b2a0b7b8abaab2ac00b9adb1abadafaeb0b3b2b0a2b3acb0b3b4800006a4adc200b4b5ab80ac0fb7acadb9a8acb0b3adb0b1b9a3b6b0b5800013030b9bbdb3beabb1acb9a1b7b1acbfa9a7b3b5a584b0 +aeb041beabb9b2a5b501009dc1aaa5b7aaa6abb999a9c3a5afac0bb2b7a5a4c20400bbb1b3a9afbcb0ba00a4af00a7baa4aeb5afb7b4a3bcb2acaeb1ac04a7b0b999b7adc080ab2bb3baadabb8a7a6b9aab1cfaaafb0b3b1b2acaaa9aaadaeb9b3a7a8c2b0abadbe99b81400b5b3a8b4aeb8a1b186b0019faf80b600b5800004b0b4afb9ba80ac04b4adbda10880004102b2b3afaeb9b79abbb8b9afbdadb510a6b4b1a3beaeb5b4a9baa9bfaeb0b8aaa5a604afb5b39eadb79fbab9adb0b3b7a3bfb2b4a6b8b198a8c8aba8b6b1b7b1ad06810080a980b209bcacb1b29eabb8b4adb684b0 +aeb024a8a4a6b2bdb200b1bcb7a2adbaadb1bba2d6aea7a8b6b300a9bab1a8afa80bb1b5aba8b1ab80af2e00cb9e0ab7adb3b8a9b0b1aab0b4abb1afad08b1a5bfacc6b7b196c0a6aeafa3beb9a9afb5a8a9ae9db4aeadb5aea981b50db9aaada4c4b59caeb5a9b0c6a3ac800006b4b7a3bcb2b4a886b003b5bfb0af800001a2b880ad05b5abafcf90038100170fa3bc00bdb4b2a8c1b5a7be9ca7b2aca600a8b5b4b0b4ae80b404a5aab6a0b280af0cb4bd03afabb5b6baada5b7b6b480ab24b6a7abb8adb7aeb0c0afb99eb2bfafabb2a0b89ebcaa15030a02a4b2b0aac2abb6b9a699b584b0 +aeb01dbfafcca69e07b7b2a4b1b9b8afadb1a9ad9db2b1b2aaa803b5a3b4abb6ab800007b0b9bab1b5aea704800015020002a5beada5cab8acaebea3bbac05b0afada3b0a680b725a3bbb1a9b5b2adaeb5aeb5b7aabaacb1bfa2b0b5c9a3afabb2b6b4afb5bbbc98c6a8a5b5a4ba800005a4c3a1abacbc86b021aca4b0af00cca5b8aea8b7b59ca7bfbaadb701acb8a2b800aca8b9a9b0afacbcafc380002b0b00a4aeb7a3acb6aabac39db9c1b19eb300c2a7b9a2b1ae9dc1b69aa3bdb99cb9c99db8aab6aeafb1aeb7ba80a915a7b9b7a9bda2b2a8b992b60c0002b3a2b1a1b4c0b3b484b0 +aeb00c9db9a5a40caca8b1b3b1b5aba680b714a3b2b9a4b5b1b5b700afa2c8acaec1ab00a7b5a1ad800019c1abba16a9acabb4a3b9ae95beb2a8b2b5ae099fbeb6afb4a9ba80ad03abacbbb1800016aca9b8a7a3b7afacb5aaaebbb1b8a2a6adbdaab4a4bba880aa0cc19abda8b3aab9b40014aaadc680a986b033c69eae00b3adb2aab5aca7b1b9ada3a9b7a200b1a0cba800b7ba9ec1a8b9a9aaafa70ea301b1090108a6c1aab8a7a4bb9da6bdc1800010b00006000800c5a3000fb7000800adafb880000a12a8ad0800aa00aeb5b7b880a8110002b2b3adbeb0a9a8000700bdbbb2a9abb584b0 +aeb019a2c2bdae00afb3b2b6a5abaaabb7b5b6b5adb6b3a4a009a8abc280a21db5ab0009c1aabe099d07adb0a100aabcb8a4c6a4c506a1b0b4b1b5a100cc8100061200afa8c105a2800029b6bab2bf0004afb1abb9b3a1c8a3b9b2a8c7b0a6afbaab0005b6b3aab7adbaa8ba9eabb000b5a4a3aebb86b018a2bec300b8b2aab7a0c1b99fadc1bab0b3b100bcc3a6a105a580b200b180000b0eb4b7b3a215b0b4a4a69dbd81000f01bdafbdb4a0ac0bb90100a2bca10ba781000303b597b980001e0cb10200ae0500b703b4adac00a7bb04ae00afa5b5b3b1a2beafa900b1a8ac80ab00a784b0 +aeb01ec7a09e129dc4a8aeb5acbab4aeab9fafabb9a5b7aebf04a6b3aba5c1b3b20080a70c000db20da8b9acb109b4b19db88100199d1300c0a5aa09b8000eb3b1a700a7b3000200bda9a5ada807098000220b07a7b21400abb4a405a0b0b5b4a607aead00b6a6b9b6a7afb0c1c0a400c3acc6aea686b001adb9800019b4b3b6aab3a8abb7b3a7a8b0aeaa07a89cb0c200b1b8a90818a380000babacc100a7acbdb40010a6b8800010a8acb3a7b8ad00b400b4b1af02a4b20f0080ad09bfb609a80d000100bd0181001902b5b3b7020003af0004bda4bca0afb3aeacc200a7b1adacb9bd84b0 +aeb011a3b4b800b8a5b6a9aeabb4a7b1bfadb4aabb80aa0eb5ad00b3abb3bba7a90602b401c19c80000ba3afb407a5adafbb00a9b6b8800007b0adabbb00a6c0ab80b20fb300b80400b1b4b1aeb8a80b0001b2bc800000b3800006bab2b00900b8b780001404afadb300aabda6a7bbb5a6a9a7c3009db7a3b4b386b02ab6a807b4aeadabb4b8a6b5bca6afbea9acb302b0b4c10001b6a20300a5090da9b8b2a403baafac01079a01810019c2a8a6b7b2ae06a8b9ae0300b6b20400b3b2afb9a500bfab000780b004000a0006b580aa160003b8a1b100b1a4b8b2abb5b99fbaa60aa7beafadb2a984b0 +aeb007b6a2bd00b0bcb8a686b011b2b5aaaeb5ac00b7a9b1bea20002b000aabd810013abaeb500b8b3a60003a7b700b900a1b3c1a306b180af03b2ae00b2800005a0bfabb5bbb0800017b9aca5bf00abb401b2a3b20608b0afb40a00afaba31100b080ae0cbbaaaebaaeb2b300b0abb1bbab86b02cb5a900b9a7b4a8b1acb3b1a7b8a7b6b5bbb500b4afa215a0b4af00bb00a30ca1acb6a700aeb6a702b20200b60880ad08b0b8a1bcb4a511060086b012b4b2ac00080f9ebaaeaf000fae00b4ac08ab0780a8091300afb4adbfb1a7b4ab80ae060aa4a9baa1b7ac84b0 +aeb007b5b6970faa9eaeb286b029a5a4c5adaab704a4b904001001a006020900b105b3b6adb7c1a0aac303adbe001100acbfaea0b600b0b180ae1202b7b600b0c1a6adb4aba400b3a6b6b100bbb2800007b3bb08a400b5abae800014bab9ba00aabca2c1a8b1b49cb0ab00b7c5b5a6b6b486b018afc300abb9a2baafacabb2adb1b69da6a9a706b7b90aa8bdb680001c05a61500bdb0baad05a6b9ac0001abc3a400b2a9b1afb2b6b5ba99b0ad86b00fadb1baa8afaab5aeb6beb1a600c29dba8100140e0700c6b8af9fabaeb4baacb5b100b3bfafb3b0ad84b0 +aeb007b3a7c300bab9a0b686b001bfac8000000e820005b0aeb0adb01580000abcac00a0baa8ada7b5b3ad810080aa0500a9b3a5b4be800000c4800004b0a4afaead80a915b5aab2b90aa6c80008b3a7b501c1a000bf00b1c5a7af80020fa8a40300bfa9c6a2a9b8b3c0b7bf00b380a302acb9a886b011aa9d03bca3bab4acb7a3adb5b0a426000507820005aba8b2a4bbb880ae0d00a7b1b5acb1b5b1a9b6adb0b60c80a709caa8a6b6a3aba2b8bdb786b027afaba1bcb1b7a8b3a0a8b8b90ba1b30800adb3bba4a5bca2b6b5b7abaaaba5b6bd00b6b3a2b6b0b484b0 +aeb007bba6ab009bb2c0a786b018acb4c1ada6b0a1bfb99ec4aab2b6a3beb1b4a7c8acabbcacaf80ae0cbcaab6bab2b4c0a7b6b3baa4b180000e0db2a7c1abb0b7b3b4b0acbdab000c800024c1ada1bb03b100b8a81cae94c103b1a3110200bfa9b1a4b0c99ab0bfa300acb6a8bbc2a2b986b037b5c00700b3a6adb4b5aeb3aaa7b899ac9fb2bdbba6b6baada4c7b7a0aeabb3b6ada4b0b7b2a0acbcb3aaab96c5b49fb2b4b8aac4b3baa8ab86b00cb7bcbeaca8a7b5b8afb9b7a40080b409000ab2b1b2adbfa9b9a380b70ca6abb5b1b39a06a6a0b8b7b1ab84b0 +aeb007b3b0b20c07a4b5ae86b03eafb1a4b4bdaac1a3afb8b2adb3b8a4aead98c49daeabb0b9b0baada6c29fb6adb19eabb79fbbb0acc2a4b1baaea9abb0a3a9b9b5aaa2c3a200aabeb6afadae800005b2b5a8b6b7b4800015b8c19ab9a5aeadbaa9b4a5b4a9b500acb8a3bdb5a79f87b02cb4a6980eaac6a5b2a0b0bcb4bbabb4bcc1af9ea8c0a5aab3c099aeadb6b1b4a6b8b7b9a9aebec19fb2afb6b5a080b608b2afa4a3b3aeaca6b686b024a6aab8a0b4aeb59fb8b5a5b6abafb409a7a6b5bba6b0bca4a9b1adafb8b9b1a4be0ab6a0ba80b100b384b0 +aeb007afacb2a10002b2b186b022bfabb3adb1a7b2b0bc9ab0baa4bbb8b1adb7aebfbdb3a6b5a4a9b7afabbcbdaeb1b9c780b300ae80ac00a480b3129ba8babbb4c8aea5a4bcaeb3b5afc19fa0b6bc80b506b0b9afa8ada8b980001693b7b1abc1acb6b1b3aeb1aebd000babaec19fadc2b5b786b01fa7beb40c00a6c1abb7b3a69fbdacb7a8ad9ec3aaa5c0aeafa3c5b2b1a8a4bdb380a510a1bfa3afabbdafa9adbcb3b1abacbab4ba80ae02b3b1b786b027b6b2aeb1b4b7b6b7aab1a4b5b3a900acbac1a0b0acba99b7bbb1adbaada2b7bca500bfaeaaaeacb984b0 +aeb007aeb3b2b9ba0600b886b054ad9cbaa9b4b8a4b8b5bdb597b3aca9abc1a7a5a2a1b5a8b5bfb7b0b4a3b3a0b3b1aea0af9eaac2abb3b9b2b0cba5a8a2a4a7beaeb1a6a7aaafb1b7aaafa6a8ada4b6afb2bdb8ac00b6b5aebbb296b7aaa9a1c3b8b5800008acbaa6afbba1a7acab86b027b6a9afaa1500adb1a8b2bbafada8a9bbabb4adc6aba8afabaea7bca8bcbea2b3baafbba2bfadb9a780b10dba9bb7a5b9aca9a8b3aaa9baabad86b014a8acafbaaea9a4afa1c4b7a5b9af04b0a7adbaabbc80ac0bb5aba6aab7a5aac19d0d01ad80b502b4aca884b0 +aeb007b3b0b4a0b7a6090086b00dacb7b2abb8b0adb4ada6aec0aab280b50ea4bbafbab5adbda9a3bca2b0beb4ab80b11aadbcb1b3bba3b4aeadb2a3b4b5acb8bd9fb6afb2afb4b5b1a9b8b281b41aafbbabb8ada6ab00b3a9bab2a1b5b7b2b4b9afb2a60009a2baacaf80ae03b7b5a8bb86b014a7c1b3a1b4b50002b3abb5ada6c19cb6acb9af96bd80b307b1aeb7a4bba8a7b880ae16b3a5b9adb2a4b8b1acb3b2b1a6b9afb9acadb6acbfa5b486b027b3b1b6a7b4b0b8afb9adaeb5a707adafb9acb0acadb1b7a7b4b1afb5b1c1990a00a6bda5b2a5bcb384b0 +b6b0800008afb4adb1bdacadb7ae80b20aadb0b1b2abb6b0b3b1a9aa8eb000ac80b707aeacb1b5b4b3acb080ab11b0aeb1afb5b7aeafb1b0a8b7a5b4bba5aebd80a880af03bba9be0082b00caba9b6c2a7b3a3b20900b5a7ac96b082000bb9b5b0b4b6a2b2b3afb3c1a886b107b4a5acbca6b6bdae8eb080ae02b1b6b480ab00b686b00ab2b1aea20a03a4b4baa9ac80ae0ab3b6a4a8bfa2b4bea800038cb0 +b6b017b3b20204adb1a3b1b6a8b3afb5b9b7b0a4beafb4a8b6c0b88eb015abafa4a9bdb19facbaa9b6beb6bbb9a6b9a8aaa7baaf80b813b6aaaeb9b5a9aab3c1a9a2beab0009a4aab1b8ae80b0099bbcadbb0500a9c2acbe96b00fbbaeafc5000102000c000dbaa0b490c586ae06afb9bdb1aea1a68fb007aebba99cb0b5aaae86b217afbd9ecf00a3b1b5b4adb5b4b9a4afbfafa8c7afa10904ae8cb0 +b6b017aca9ae000806a2c4aca8b9adaf9db5acc0a49fb7b8a49db08eaf37b2aebdb399aec7b1aba3afb19ca3bab7a1bcb4bba1b9a8a49ec0b79dabbfb8aea2bfb79fb304bab3aab9a7b8acabc0aa0002a6c6b399bbac96b00fafa8acb1adb2b6af9fb6b09bd0b9a6b086b207abb0a1aeb2bfb0b58eaf07b49eb7ccb2a9b8b386ae089db8b1a700b9bba5a080bc0c9eacbab9a6bba0a40006a7b8af8cb0 +b6b006bab2aaa9aaac0680000305aebdb681b507b6a7c3a0b2beafac8eb330b5a9a8b8beaea4a8b2bbacb0c0b5a9a4bcacaeb1b6a8b4c4b6aea8b2baafa5aaafa7aebea20b98b3b6ba99bbbca30004b080b803aea2c3ae97b00faab6b9a4bba6aab5b3b0bfb0a1afc4ac86ae07b6b7b2afb2b0aaab8eb304b5baafa0a580b500a986b317b9a3bcc19faabfb1baafa9bda8adacb7af11000ab1a6abaf8cb0 +b6b001a7b080b504afc7aab40c82000a07aea8a6b0acbdb2b0abae8eb030b4abb5b4a2aabcb5a8b2a6adafa9b8b4afb1a5b5adbba7a0afaab9b69ea8c0bbadb9a5acaebac8a7a9c2b8000700b8a8ac800004b6a5baa1b996b00fb3afa8b0adb6aeabb2aaa3adb7afa7ad86b107afadb4aeb2adb4b28eb003ada5b7c080ad01b7ae86ad08b2afa2a7b0b99eb69f80b102a411038000070100bcb1afbcb6b58cb0 +b6b006baaaa3a2ba9cae800000c380b10bb7010009001500a7b5a9b1b98eaf23b5b8b0adb4b1aaaea7c5adb0b8a3abb1a9b1b9b6afaab2baacadb5abafce9003000b000881001003080005069eb7b1beb1b51400bba4b9ae96b00fa9bbbfa2c5a8abbdadc2b2b60005000886000701000700bfa7b3ad8eaf07b2b6b0acb3b0a9ac86b201afbb80b513b3b504000a100005009cc6a2b3b6acb39fb2a9ba8cb0 +b6b0169bbcbfc3a7bf00adb69ebda5adbea8b9b29b061900010c9000001580001719000cb4bc90c2b00005b5aabf92c8a0a7080400020006088000170200baaaa6aebfb1adb6b1a7afbabe9eb39aafbc9f00b1bb80af96b00fb7a8a6b8a3b5b3a4b0a4acb5c4aca8ac86b004b3aaa9c0008006900006a5c298beb99bcc86b18400110eaba9b0a8bba0b6b0b8b696c7abb6bfbaa18cb0 +b6b00ab2be9ab2aa00aeb2a6c4a180b70a9eb9a9b3adb6a6a8b5aeb18eaf06c49cb2b8a1c79f8000001080000205000580001d1700040da1afb1b0b1a7a8b4afaab8aea3c9a9a7b4adb5b0b1afaca6b7b280b406acb3b8b4b0a7bb96b00daeb2b4b5aeafb2b5b2b6aca7aeb680b286b107aab9b1a9b7b0a8b68faf020f000e80000013870004afb8a9b5b780af07aaacb8aaa9c1b29f80b206bca3b3afaca8b68cb0 +aeb001aeb580b00ab6adb1b6aea5b3b600b5aea7b00fa9b9afb20aa5b6b2aeabb4a7b1bfadb497b00eb4a4bfa8aab7a5b3b2afb6b0b7a5b7f4b0 +aeb00fb2aab4bb9eaeb4a6c2bcaa07a1afb2b3a6b00facbaaaa1b402b4a4b5acbab4aeab9faf96b000ad81b20bb5abb1bba0bfa5b6a2acc0a9f4b0 +aeb00eb3a9aac2aab9b7aa90c100a5b7c69fa7b002bbacaf80b70a00abbcb6a5abaaabb7b5b696b00fb2afb3a8adaa00abbca9c0b2aab9a8aaf4b0 +afb00ebda3b2b1a3b1b4b700beaeb0adaeb3a6b00cb1a2baa4acc100adb3b1b5aba680b700a396b00faea9b2afb4bc00b9a3b8acb0b9a3b8aff4b0 +aeb00fa5bdacaeb2a9caa000bb9fb0b69ebcada6b00f9ec1b0bba4a80aaea4b1b9b8afadb1a997b00eaeb7afb1aaafb1b0c79aafa8bba6b9f4b0 +aeb00db2abb0b4b2bc911a03abb7adb1b680a9a6b00fbaa6b5a3c0a70700bcb7a2adbaadb1bb96b00fb4b1b0b1a9a2cb9eb6a406bab8a5b7aaf4b0 +aeb00fc1acaeaba7ab0c00a6b7b0b8b0aa9dbea6b00fbe94b3c2a4b6c0009dc1aaa5b7aaa6ab96b00fabaca9b6b8bd9bbaa506059eb1bba1b9f4b0 +aeb000a680b20caab4b700b4b6acb0a7adb6b9a8a6b00faebaa8a3bcaaa8020a99c1b1b5afb1b497b00eb5b1a5b5a3bbafb500afb1acb9a7aff4b0 +8eb00fafb9aab5b8a8b1b0b7b2ab9fbda9b4ac87af07b1a4bbb2aaa6b8ae80b00ca9a218a9b7acb5b1a9a7b9bcb286af0fb3aab3be9bbdaca6b0b8a9b5b4b3acb186b017b4adbfb1a7b4abaea9b6aeacb6b5a6b100abb5acb2c4a3b288b005a7b0acaabbb28eb007a3b7b6abb0b7b1a8f4b0 +8eb00faeb4baa4abc0afae9bb5c4a4aeb0a7b786b103aab5adb780ad07c0b1b3baa8bf08a480ad07b1a9b1c2a9aba79f86b107a9b2b39fbca9bfaf80a905b8a4b2a4b3ad86b009af9fabaeb4baacb5b79e80b50bacb1a6bd00c1b0b4b894a8bf86b003b2b4acb880b501aba28eb007b9b6b5b1a8a6b0bdf4b0 +8eb00fb3a4b5c3a59fb7b1cf9e9bd1abb3b1ac86b00ab8ada3b6b1a9b19ea5acb380000ab3a1bfb1acb1b7a2b6c2b986b00fbba1a6cba6b3aab1bca8b3abb3afb5b286b017b6b5b7abaaaba5b6abbebf9dadabc49db300b0b2b3bdada786af07b2b4a8aca7b9abbb8eb004aaa2a9afad80b700a0f4b0 +8eb00fb6aeada6b0c0b3a2a0b7b0a7b49fc4aa86b017a0bcb9ada7c8afb9b5bbab00b3bbb3a1bba9adaebea0a5b386b009a6c2b6a1b1bba0b0a9b180b603a0b6afa486b000a380b714a6abb5b1b39fb39dcbb2b7a8b8ba00b5a7a4c49ec286b300aa80b704bbacb89db28eb007bda1b0c4afa4b2b5f4b0 +8eb00bb2b1b6a0c2be8ed1c0b3afae810000028600000d8000000a81000fb9b2a800c3afa5b3b5a4d2a30004000f88000e0200b6b2b6bfabb3abb6a0b69fc4b886b017a9b1adafb8b9b1a4c0b2b99daaafa7aeabb303b8bb9fc0a086b007adb0abb2abb6a9b28eb007abbdbea1a9d29203f4b0 +8eb00faeb9a6c2b299bc9eaf000d0aacbba8ae86b20ca5b9b3b0b9b500020003090010800001090180000208a8ac80b086b203b7a9ac078300050900adc3ba9787b00ebbb1adbaada2b7bcada5bab9b0a9c4820004b2a2c1a0bb86af07bbb0a5aeb0adb9a38fb006a3acb6acadb6b2f4b0 +8eb00faec59ea9a2b9bc000600b5a0b7a2b8b486af17abb7af9dadc29bb4bea40500a8b0b2b7aaafb7a6c5a3a7b686af089fbfa6b5baacc4000a80a804000200b8b486b009aba6aab7a5aac19dacb88100060500050017000280000003870007abaab0bab398d1aa8eb000b880b004b4aea8acb5f4b0 +8eb00faea1c2a9c3a30500abafaeb4b2afbda486b117b3acb1aeb8a2b9b2afb4a20c00abbba6b4adaeafa9b4b8a986b10fb5a9b8a4afbb9c09a7cba2b2b600020086b016b4b1afb5b1c1990a0b00aeb7a7beabafb9a4b0b8aeb0b487af000182000203a6ad8eb007a9b1aeaab3b7b1aef4b0 +8eb034b3ada5bbabb203aab1a8be9db4080007000c00050400b3afb4a8b1b0a6acb1b9adbdae00c5a7b3acb3aeb9aeafa2bbb0050003a9af80ab0cb8b1b7b1ada5b400b1aeb2b4b280b12fa10200bba8afb6aab0afb3adbcb0000100b0afa7afb9aabaafacb4adbfb1a7b4abaeb8a9b9baa5bcafaeb6a9b3aab0b282000d0ca2b2b5b2a7aeadacbaa9b9afb687b006b3a8afaeb8aab5ecb0 +8fb001a9be80ad020ba9ae80b024a7aec000bd00bbabb0b9ac0009b2b0a5a9bbadbbb3a1b6a901b19cb8afbab1a6b0aebcb2b380000fa300bcb2adbba1bea9a3bfb4b50aa4ba80ac0cadafb5c1a30f00b9a6b6b49cc480b028a00400b0abb1b4bcb1b8a2b6a9bdaf9fabaeb4baacb5a0c4a6b0b9a5b1b4a7aabbb2b7a9acb9b0b308810003a8c1aeaf80b003b9a2c09d86b003acae00c080ad01b4aaecb0 +8eb004a7c39cc20080a508bdacbdacb89da9b90080a961b7acb8c000a7acbabf97c2b1a2c1a3b905b1b6b0afabb3b6a9b2b1b4b203c3adb5a9aac998b998baafaeb000a8b6a7b2bab2a9b1a3b5a900b6c49dafca9bb20008b1aba8bda8bb95a7b1afadabacb6b5b7abaaaba5b6baaeadb100baaab2bdb4a4a280af0da8b7bba6a0bdb2000600afb9ba9f80b001acbf87b006a917aca9b2b5acecb0 +8eb017b5b49f000baec6a5b1b6b1aad39baf08c39fb1b89fa8ad0f80ad15a9afb0a6b9abc2b100b4b2afacb5acb2b0a8ae9abc0480a800b980ae049fc8acbbaa80010200aaba80ae05afa8bab3baab80b50603a9a6b4b1b3af80000cbbaab1b8afae00b6c4b2a4b8c780a380b724a6abb5b1b3ada9b0b201a3b8ada3afb6c1b1aaaca9b9a9c4a7bea3b30904a60006bcaca1a986b007b3afa9a4acb7acb5ecb0 +8eb003a6b4c00280ae17c4a2afb2a9abbbb900aaadbaabb7b0b7c500baa5c8b3abc3800014a800bca3aabdb7a5b39eb0afb1bc0f9bb5baa1c20380000404b3b7a1c38000000c81000c1897b2a9b3b0af00bf9cb8acb5800205b1aabb9db1bb82001c0400b1a4b7a9b1adafb8b9b1a4a2b7ba01afbebda1b5aeadb2a9a8cab380000db2aea6b9ada3a50a00b1a3afc1b186b007aeb7a7bdb5b0a7b4ecb0 +8eb032b89eb400a2ad9ec0baa4acc19ca700bea8b4ad9bbabb9d06b2a798b3b6aaa41213000205adb1991000c2b2beada2000aafaeb0800021b50700a5afa7b600b4aeb7c4ae96c8b8a1bfaab100aebda8c0b100adba9eb2cba7b7800018a9bba20c069ebdbbb1adbaada2b7bcb3b8aa02a3a8a9c4b4b980aa13b6ae0001b0b7abadb0a2bfbdbaae06aeb5b0a8b186b007aeb19fb2b3b1a9b1ecb0 +8eb010afb3ad07b7b2b5abaac6abaab8af0aa4b180b412bdabac00c0a7c3b8a1bfaabc00aa00b1a4c4af81000b03a9a6c0adba00b2a31602a7800050b2b7acc100b1b39abba3b7b0abb2afbca6b603b1bcb0a800b1b2b7b6a6a7a9aac302b6b5aea90400a6aba6aab7a5aac19db3a900b0b9aebb9da2bcb1a4c0a520a6aeb6b0b4bab3a3aa9a0aaa02a4bea3b986b007b2acc29eafb5aab3ecb0 +8fb008b1ae00b7b2a4b6b5ab80b00bb6b300b7b4b39ec0ac0601ab8100160200aeaf00aa07b3aeac0002b20d00b3b5a9ba9c0bb5b78000390503a7b5abb3af00a9b4bca9afb5b49dbfafa3b9a60ca5aab7a711a5aab1bba5bab3b500aeb79ebfb1ac05afb4b1afb5b1c1990a04a708b1a9af80b517aeacb0a7b700a2b8b3a7a8b6a6abbfab09b09fb405abbea587b001b3a780b202afa9b4ecb0 +8eb00ca8afb000b7afadb0aab7a9a8b580000ab6b7a9aeb39c0ab80008a5800046a3bdb5a100b3a3b8bc00ae000a8ebabfa9b4a806b400b6aabab1a4c3aea50ca2b2b6adb4b5b3acb0bca1b5b6ae00acc5b2a616a3b8a9b5ada8afae00aeafacb7afb100a9a5bda8810001b1ae80001105000400b7b1b3c09daeac02acbaaeafaa0d8300001280000309a9afb3fcb0 +8eb037c09fbe00aea5b6adacb3b5b9a404b0adb3aabb060ea20009a504a80baeb4a1c300b8b7ac001400bb00cc930100040600b400adacb1c1b19d80b31709b3b1adaeb8a6b2afaba7c6a29fbd06ab9aaeb100bea8a482b618b700adc0aba7b0000cb3afb806000304a1bb0500aeb5b0b805800009a1babea7b400a7b8b50380000a02c0a40aa3a8c0ab00c6a0fcb0 +8eb026a0c29800c9adafacbca395b7b400b5b70005009fb0b20aaa07000fa7bcafa7ac00a8b0ba09000b800037a7c59eb6baafbca502c2abb0a5b2b6b2a800aab2b3b2acafa4acc2ab9cccbb00acadb4bcaf0ba7b5ca97b1a8acaa00afb49baebb00a3b7b6800024bd00bbaab208afb5aeada2000d0bafb8b3a6b00bafb5a90002ba00af07b4b6b0a7b201a7b1fcb0 +8eb002b1bcbe800006a8b5adb3bda9078100060301b2b8bfaebd800015a4c200b1aab9baaaa7a6b9b200b8b600b5a9b7baaaa880ab03bc02a30080b11ea5b9b0a425a5b1b6b3a9aeb9aab9acae9eaa03b1bcada4a600baada3c2b7a880b61201aea2c4bb00aab5b0aa06000400aac2a3019b80b6019d11810006adacaba6c100b880000d13a4a90da7009fafb3bda60fa1b8fcb0 +8eb01db4a59dbc06a8b8a8a0c6acc1b8aac1a9afb59db9a3a4c2b1b2adb0b3a8a580b423bdb9a4b2bab29dc1aca8b2acb0bab0b5a40704b2bbadd3a3b1b693b5aeabafb8afb8afa880b000c0800024a7baa2bdbeb100c09bafb8aaa800b0c2ab9c02acb6b4ac120004a809aca8b400ccb2aa100380000bb5bda3bac29507a801b2adbe80a7091a06b2bcaba3b300c4a9fcb0 +8eb01ab2b7bab600b5b8bcba9cada5a6b0afb6adb8b6a1bdb79bb3b6a4b980b625b5b9a1a7a3bba9abaa9fb5abb7baadafb1a7afbaada7afa2b3a3aeafb1c1b1adaeb0b6b3a8b880af09bea500a6c3b2b0b69ab9800020c9a3acb9bd07aca5000db0adb9a1ae0008afab00acc6a6adaba39b1300aa0fb19e80b309aea60cb400b7b2a4c7b1800007b0a3c1acad00a7abfcb0 +8eb003aea6b1b9800001b1a380b232b8acbeb1a8b1b6a3bbb9b0b2a7b8b2b0b4a3afa6aac3bda2b0adb4bdc0a8b7a7a6b3afabb6b8a2b6b5bfafc2abb6afa6afa8ae80b40da9acb7b5ada7b700b3b7b19fbbb380ac00b5800004b6b3b49e0380002eb9adb4b1a5c7b4beaf9abc02b2b3a3bcadbeb6aeafb100adbcb600070cabae0100b0be9ab304cbbdb599b9a702bab8fcb0 +8eb009b2adb5a8b200b5b3a9af80b51da5b2b3b1b2afaea7aab2b7abacb1a2bdb3b2afaeabb2adbda8b1a7b3adbf80ac0bb5aaabaeb5aaaeadaea2b8ad80b40dacb9acabb5aeb7afa8b1be0007b380ae0bbaafb0b4aeafa51400aaaeb580b02eb1afaab3b4a6acafa9aeb6b0b2abaeb5a8b3aaafb9a7b2b1aabd9f04b4acb5afaab9afa4b9b1aaa4aea9babda700acfdb0 +8eb004a6c2a8acb5800010b3a5b8b9a0c2a6a8b3a6c1a8adbaaeb4ae96b017b49ebeb0a8bcb0abb9aaa9bda9aeb8acb1b2ac000aa6b4ab86b001b2af800013b3b4b6a8b2b9a2b8aeb1acb3b2afb1b0b9a4b5b286af86b10fb6b0a9aeb4a5abbfb6b8aba80500a5b7fcb0 +8fb016abadbe99b81400c2a9acbca6aecca3b8acb5bca6afadba96b213adb6abb3b6a5afb5a8b1c5a6b4a3afaba7b40d0080af01bbaf86b003b6adabc580001108b0b49bc2ad9dafb7abaf9ec5ae9dbcb5ac86b186ae0fa6a9c0afa4c1ac9d9abc00159ecaa9b2fcb0 +8eb006aeb5a9b0c6a3ac80000cabb3adabafa5b6b1aeb0baafb880a796ae16b2b9abb9a3b4a8b7a9b5aaa4bbc7a9b51300b5aaa8b4a187b017a4c7a1a2c2c300080200b5b9b0b3b9a5babca4a9bdaebfa286b086b20fadb6ada6c39db3ba0b08009bb6a6a1b1fcb0 +8eb008bc98c6a8a5b5a4ba0c80000cb4afb7b6a99ebfaca0b4afb9b596b30cae9ac59ababbb4a0bba5b3b5ad80000804a5b1bda1c0adb5ac86b080ad06c5aaa8afb2a3b98100000a8000050dada1c3a7ac80ae00bd86b086ae05b1adbcb5a605800007069db4c4acb4b5b8fcb0 +8eb009aac19abda8b3aab9abb881000aa5b6acbdaabfa3b6b1b8a996ad17aebfb2bca7abb6aeabac14010011bbacb5ada5acafacb2b686b00fbbad9fb8acabc1bbb9afc8a7adb9bca08100020d000c880086b103bcad0004800009aba5aabab0aea9a8b6a5fcb0 +8eb00eb3aab7adbaa8ba9eaaa3bdb2b50001810001a7bf80a701aeba96b215b4aca89ac1bd000c0100a7a0b9b1a6b5afaeb0c0aab380ac86b012aeb3b9b4a5b2a9a39eb1a9b1b6a3adb8c8a4b480b202ab0cae86b288000db8adbe0800bcaeb1afa1bbb5b6abfcb0 +8eb017b6a6b9b6a7afb0c1b8bb9eb89eaeb2b10b000b04000e040096b117030006000100c1a6adc1a5bbaea8bca5b3aab4aaa3beb5a886b009baa6b0abc2b0aebeb1c080ad08b7adb5aa9bc1a5acaf800000b286af87b00eb5afa8b1ae0002b5b4b9adb3b1abb2fcb0 +8eb017aabda6a7bbb5a6a9abb4adabbdb3abb000b79fb7b1a7b3b4970002acabb380af01a9b880ae0dadacbdab9fbdafbbacadc0a2afb386b017aab8a6b9a7aabba9b8a6aab2bba4b1afb1b6b1a8be00b5ae8eb10facb7a5bdb0a5bd00afaab0b7acb7a7b8fcb0 +96b001a9c580ab0bbbacb4000a99c1b1b5afb1b496b0070600b1afb59dbbaca6b007acabb7aeb400b1b58eb00fb4b1afb5b1c1990a00b4aab2adb6afaefcb0 +96b00fb5a5a1b2bbaa000a9dc1aaa5b7aaa6ab96b006a400bbb795c5aaa7b007bcb7b0a800baa6a98eb00faba6aab7a5aac19d00b4b6b4b8a1abb7fcb0 +96b001b9a880bd0ba1b00fa5bcb7a2adbaadb1bb96b004b701ae9cbd80af00aea6b007a6a8b1bd00b3afb28eb00fbbb1adbaada2b7bcb600a7b49fc4b6adfcb0 +96b00facb6a49cbc0200b3a4b1b9b8afadb1a996b007a600b2bcbab0bbaaa6b007b4bfab00abb1bda38eb00fa9b1adafb8b9b1a4ac00bfabb8aca8b3fcb0 +96b00cacc2b0c5ab04b5abb3b1b5aba680b700a396b003c3a5029d80ab01acada6b004a8a3c100bc80a700c18eb000a380b70ca6abb5b1b3afb500aab5afb6b5fcb0 +96b00fb5aca8aca002a9b4b6a5abaaabb7b5b696b007acae0fb3acbea2baa6b007bca40fa6afb6a9ac8eb00fb6b5b7abaaaba5b6a9c001b1b2aeabaafcb0 +96b00f9cc2abb913afaab3b5acbab4aeab9faf96b001b1a7800003b7acb2a6a6b005acb700b1b4b880b28eb00faf9fabaeb4baacb5b8a2b000b9afb4b5fcb0 +96b002bfa7b280000ab3aeb0aeabb4a7b1bfadb496b080b105b700b7aab5aea6b007b900b3acb1abb0af8eb00fb4adbfb1a7b4abaeb2adb107a7b1b3adfcb0 +86b080b716a4bfb8a0c1a2a8b1bdadabb9aab0aeb40600aeb7a8aeb481b103aca8aeb696b007b3bdaf00b3b5a3bc9eb00fb6acb5acb7a6b7acaa14b1aab1bba9b696b00fb4a9b5ad0dafa7afb4a2c0a8b3b9b1a7f4b0 +86b010a4a5bda1acb4b0c1b9b195b8c0a4bfb3ad80000cb6be9eb8b3aab8b1bbabc6b29f96b007a2acaabd00abb4ae9eb00e9db9b6b8a8b7b0b6009facadb3b0b497b008adb8abb1000bb3acb580a504baa2a5bcb7f4b0 +86b000c580ad00ae80b406b6a3a9beb1b8a080b410a70b00b4aca2b7b4a6b3adaab9a0a5a9b896b001c0b180ac0200b0b59fb00fb8bd9daeb1a7ac0015bdafbaa2b7aeb296b00ab3aab6a3bb00a9baa6bdb780b802b6aca4f4b0 +86b01f9abea6b9acabb5aeada204020900010500adc1b8a9baaba7afadb3aab3b9bca996b007a3a4cba7020da9a59eb00fa8b0b6b5b1bea40eab97b2bba5b6aab396b00fb2a5b0c0b8a800a8b2acb295aab7b1b5f4b0 +86b003baabb2b480ab0a00050300b7afa4b6a90207800002ada6ab80b807b4b0aab4b0a6a5bf96b000ba80af04c0a000bfb39eb00fbca5acabaeba00afb2b6adafbba5b5af96b00db6abbba89fb31400abb8b6c2aca880b1f4b0 +86b001aeac80b0080f0011abacc1a8a40a82000e08150018a1a5b7a4c0a3bab6bf96af96b007adbda49ec40003aa9eb00eb39ec2b7a2b10eb7a0c2adb2b1abb897b002afc1a280ba06ad9d0500b293b580b301a9b2f4b0 +86b002b4b7b0800005cab0a7af9ebe80b412b0b9b4b9a1a3b20403050002a0cf9ba4b8adb396b007b1aca6d1aaab00ae9eb00eacc3a4b8aa0200b0baa7b1b7a5b5b497b002aea5be80a880b508bb05b6c1a6b4b8a2b3f4b0 +86b018a6b60001b3b79eb4010b00b4aaba9eb6b1abc19eb2b4a1bb01810003b9b0b1af96b007b1b3aea8b3ad0a009eb008b7a6adb00102b0b1aa80b004acbaa6b9a996b007aebda2b8b2abb8a3800005b6afb0afb8b3f4b0 +80ac16b5adb49fbeabb10100b1b4a7070002ae00adb2000fa7b380ab07c79fb9b2aca6b6ae80003408acafb8acb1ada4b5b1adb0a9b6b2a6c0a7b6b3b0b5acb2a7beacb1a7b7a0beb5a200b2bba7b5a3b2b7abb6a5bcafa7b5b6a4a9bc80ac23c3acb6a6b5b3acb0bca1b5b6aabab69a0ca2b2b1b6a7b2b6abaeabb0aeb3b4a4b7afb6ac86b016a4c0b0aab4a2b4b3aea7c1a8aabbafb0b703b19fc3a3b481b10da8afbba5b7aaaeabb4a7b1bfadb4e4b0 +17aeabadb2babba0bc0100c0b3a7ad01b3a8b1adbfb80396bc80ae02c0a2b881af10bcb2acaebbaa000300b8a9b2c2abafb6ab80ae02acbd9e80b120a9b3afb2aab9a3b6b0aec0a5b70009030098c7b3acbdabb2acb4b0bbbca1b3b8ad80ab13be99b8aeb8a6b2afaba7c6a29fb0a9b3b8b0c0a280b405aeb899c6b3b980b306a8b2b0bf9eb7b686b00cc09eb4a8bebfa8b0b8aea0b5be80ad81001502c39ebfa7b9acb1b3b89ab6bda8b5acbab4aeab9fafe4b0 +35b1b5b3af9fa9b1aa00aaa3b8a8040dabb0bea49fa902b5bba7c09ea2acb3c6aaacadb6baa5acb8ad00070600a7b7b19ebab4abbaafab80b10bb5baa7c6b3acb0b1afa9a4038300010a028000000580002f03adbc94b2b1a9b7baacb19cc8aaa7b7afa4acc2ab9cccbbaeb205000500bba5a2c4a2b0afa2b0aab4b2a9afb2bdaaa586b00aa6b2b0baa1adb2b3acbeba8100030aacbeb5800013bfaabca0b5abb0b1c0b4abb3b6a5abaaabb7b5b6e4b0 +27b3a8a5b3bdb5b900b6b9c2a4b4a300b8a7afb1c60594baaeb4aaaed0aaa8aaa6b2b0a3b4b5aeb1ac80ad01ab1280003ab6c1a4a6b6a5b3aebbaba8b2aaacb3add594b0050f00abbba5aeb4a7b2b0a7b7b6baa909001400bab5a5a7b2abbca5afbca4aeb9aab9acae9eaa0a8200030800061180000603000803b3acbc80b103ada0c0ae86b007b6a6b4acbbacb5a880000704bca4bc00010018800010aeaab8a8a9c0af9daea9b1b5b3b1b5aba680b700a3e4b0 +0da8b3b6afaaafa10daaa4aeb2b0c7800000bb80ae16ab00ccacabc195c596a9c2afb9b0afc3a2bcb2a2b7c2ad800001b7b880000bc5b7a2b7aabd9fb7aeb7b0a580a811a31800a5b3a7b2c1acb0adb3aba7beb09db280b409afb0b2000900b9aba9b680ae05a2c2afb8afa880b000c0800011a7c6b2acbaa4b6b198bec7aea7ac000900be80b302b4abad86b000b280b324aba4bf00020bb8aeb2adaeafacc69bbdc203000100b5aba0d2b3a5bda5a4b1b9b8afadb1a9e4b0 +05b3b5aca9acb4800019b2c999b6afa7a90ea6b8a409acaeb7b0a5b7a3b9b7a3a2b807af800003bd9cb6af800008ae11a8aebbb600b6b980b214aab3acb1a3bdacc1bb0500b9c5a9a6bf97adc3b8b580ba12aea0bfb7a8b3aea0bcbd9dc4000eada8b3b7a680b301a8b880af14bea500afc9a0a2b7a5adb3b7bcb49ab7aab6acadc5800003a9b8a7bb86b004b3b6a4af05800020b4a9b5b0a4b6b79fc0a6b4ada2b4acafb7000e0001b19fb0b9bcb7a2adbaadb1bbe4b0 +1aa9b2b8b1acba00aca9a8b2bbc0a3b300b3aab20bb1a8acb3b6b503800001b6b8800005c1090500aeb88000120b0800b3b8a6b9d800adabadb4b9b2aeb6b2a9800041b7b4b09bb6c89dbfafa6a7a4acada8c4b900baa1b6bea9b8aea7b90009a7a8bbadabacb7b5ada7b700b3ada2b2b4b0bbc99daea6acb7b2a8bcafa1afa4c70c00a5b286b01aaca70900b0b5c6a1b49fc5adb8a9bca0b4acb9aeb8b7af00b1a8bd80000a16a9b19dc1aaa5b7aaa6abe4b0 +02b3a8b380b421a205afb2b7b1a2b3adba00afb200a5030400aea807000a00b5a703b700a4b600a80980000706a8adb6adb8a89f800823b3abb9a5b5b6aaac0010aab3b1b2b3afaeb6a5beaab1bdacb1b5aaa809acbaabb0acadb680b31ba6000caca7b2b3b7afa8b1be0007b3b6b3abb8abaea5b7ae06b4acae80b208a9b5bdad9eb70004b286b009b80200c0a9a6b102010b81001ab2aeb3b0aab7a7abb2ac00b3a9b4a8baa902000a99c1b1b5afb1b4e4b0 +42a2b8afacb1b000b5aaafb8a2bab59f08b8a0090300ac00b4080003019fb7b80001afae0406a900b3b8a6b2a8b7aaabb3b2b40aa3adb7acb1b3b7a105bda1baaab30005810024afb3aeabaac3aaa61500bba0b4c0a4b4b0a8a4bab200b0b2afb0b9b5ada8b301aeb3b5aec080000206000880000ba6baaab2a5b4a8aebeaab1b2800023b0baabb6aaa3c1a80100afb3aeb7a403b302b6b2000ca3b1b9a9aeb2a5b801b2b5b4aea480b309b6b3001000a5beb4a6afe4b0 +0ab9b4a5a3baa70500b5b8a981001819a0aec10100ad0da8b400140009b8ab000500adb300a6bf0080a816aab5b8a8accba4aea700b5c3a9bdaf9db300bb9db5b2af80b20300b7a9b8800021b9c5b000060900bbacb7bb92b0b6b0b9b8b0a706b69eb8ae9cafb4b00b00ada8b1a8800013c2b0a7acaa01b7a7b5bbb8b3b8b3abb7a7b6aa0280aa08b8a4b3c4a6b109a5b380b022b5b9b3a70196b6c000bdb1a3aca8b7c1a700aeafa0bcc59fadaab1b2970a0faba3babde4b0 +10a8b2bca9b3b29e16a7acaaa4ccaba5baaf80000babb400aab00c0f01a2b9a30480000e010006c09c04b8acca96a9c0aeb0a980b31c10bca89db2adc800c8aeabb3a8b5b400a9b3adb3aa0e9fb0afa802a10981000ba9c3afb69dacb9a6b4099cc180ac4fc0b1b7ad009fbeb3b1ae0fafb5a6c5b0ba00b3aeaba0aea3b6a6a3b5aab8aab308a4c3afaba9c1b100b9acb5aab69cb20d00c4bc9907bba5b7bca11100ae03b0b2adbd9cc4b2adacb8aeb79900afb7a2e4b0 +1dafabb8aab3b1bf00b5b3b9b0a0b3afadaa09ba9cc900b5b6ab9c0a07b4b1800006acbbadb5a5ac09800028acc0aaa6adabbbb700b0b2a7beb6a3ad0097b4b6a4c0b0aa129fc7a4a50600b9000601b80300b7afbe80aa26a2b4b8b7b1a0c500b6b3b5aaa3a0b5a900b8acb1a7bd0005aeb2afa300b4b3b2b7ae0abf9faccc800009afb3ac00b79dadc5aea0800009c1afa9b8a3bfb000b3a880b21a00b1b8000c08000f00abb6b5a9a7acad0900b7aca6adbc0017a5b9e4b0 +14baabafaeb2aba60300aeb1b6adb3b1bcb8baa2b0a380af32adb2c69bafa6b100adb0afadb6afb5a3bcb6b0a6b9b2b6a4acab16b4b0adb7a0c200b3b9b3aabbb4a0a706b69db9be00b70003800007a20804b1b9aa000b80001ea9a6acbca500bca1b1b6bfb2a8ba00a6c69ec29fbb0200b6a4b9000ca3b6ad800001a31681000001800012ba03a9b4b1a9aeb20fcea4acb7a8a5c8a800c680a7040512a70005800003b105000380000113b98100090da2b5b7acafb200a8b4e4b0 +2fa9b0b6b7abafc5a600bc9fb1b6a4bb9ba998c1bcb7acbab2ba95c1b8af0007b7aeb6b2aaa7aeb9b6a9adb8b0a8baaeaf800012b9a2b6abb5a200b3abaaafaea5c3a505bdb0aa80004101050700a5c700b1adb600110008aeadb8b1b8b300a3bea7b6a9aec0af00aca4c0ab9fbba800b5c0000409ac99090010b50003000a140014a600b6b9b1a3b2be009780b205b1b4b1a6b70080a9110a03a800060004c2b80004c29fb4a60300af800008aeacb1b6a1b10ab2abe4b0 +07aab3abb3b1aaacaa80000fb7bca2b5b1c0b1caa1a9b3a9b8a1a7b180b32aad05a9a8b4aea8bba7bab998b1b4b3b0b1a2adb108b1a7b5b3acbdb30006b5aebea8b1a80d00a014000eb4800006b208bca500aab480000001800006bbb7aab89ba11380b43cb9aabba7af9a18b09bbeab13000a089fa10abb00b90b000aa0060cacb003a1bba20100a8abb7bbafa90013aaacb7b2b9a800b7000d00c0ac070004000b800006aba9c00400b9bc810008b9aebd9cb6ae00b9b3e4b0 +14aabaacb1b3a6b4b7b300adb2afacb1a8b6a2b8b0b180b012b3b8ada9b8ab00bbadacb0b6abb7a1b3b4afa980b10cacbdb200a4bbafacb3b0aab2b080003badabaeb6b400030200b5a3be0102b2a5b6b009a3b7000400a70fa8b1afacbd00b3aaa5b4b1abb4abbf0003b4a9be98bdacaeb709aaacb3ad0002a6b68000150c00a1bab5a80cadb8b29db2b8a0bb0002b1a5b3a60d80000304aeb0ac810009b503b0ac06b4aeb100c0800007b500acb4b6a0b8b6800001a4b2e4b0 +86b017b7a3000aaeb0b9a8b9afacb0b3a6bcadaca4b9a90100b2b380ae0dacb0abb9a5b3a8bfa2b4bea8000386b015a5b70205afb89eb6a8b3b2b0aca7b1b4b3a5b9abb0ac80ae08b9a8afb202b1b5acb3800024b5aca8c2a6aca9b8aea70f00b5b0a7bda5bbafa4b6a8b69ec1a8a6af05adac000406a503af86b027ac0d00b7a9b20100b3abadb8ae05a7aea5bdb4b000b3a905b40800c3a400b6afabb0bba003b1a4b4e4b0 +86b027a7beb8000c9ebcb3a5a8babca2b7a9b3b5b6a5beafa2c5a0b0b3b1ada8b9bba6afa8c7afa10904ae86b003beada904800007caaab7adb59cc0c180ac1ea6bbb9a8adb1b3b0a6c0a7a8b599adaf0014b899beadabb0bab4a2afc69909800016bba7aeb5b6b1b0b7adafb7b1b40bacbcb5bcb9a703b2a887b00dae0d00b9afb9a1a7baaead9eb3a780c2119bbab0a0bfa50400a7beb0b7c2a9b2bea8b5800002aec4a1e4b0 +86b003acaf9fae81000fb8bbaac09ebdb7b1b0a7b9a5a7b6adb080b70ea0a5c0b29eadc1bba0a40006a7b8af86b005b496baaeb50e810026b5bda3b9ac9ab3c1ad9eb2c0a5a0b7a5bcafb7beb9aa0700aca3c6b0a9b5aea5afb9b1a2bfabbe800080b401ada680b001afb980a80bb0b900ae9cb5a0b700acafb686b027b3a9b0020700b0b8bbb4acbcb8b3aaabb0a5b9b7bab2baa5b1b0aca4b4a7bfaca3b8000dc29dadb6e4b0 +86b006b7aebfa3bcb7be800004bf9dafabb080ae01b8ad80ba13abb0b4aeacbdbbb3acc49facaf11000ab1a6abaf86b007acc4b7aaa9ac9eb8830020b5beafac9fc4acb3bbbdacb0adb7a8a60001aebaa4b5a5a8c698bcbfa3b9aeb7aa80a501afc7810012b5baa9b1a8b1bda31400b3b6b10c03a5b3c2a086b005b4b3a3b3aeb282001db0a6a8b1b7a8a7bea9b6a0b7a8bebdaab3baa8b7aba8b60200aaa3b0bfb4e4b0 +86b01ea8b4ada5b4a3adbcaa0d000311a3b1abb399b5bba6b3b4a1a5ac9fadb7af0480010600bcb1afbcb6b586b019b6a2aaacb7bfb3afa6b9a7c0020008000104afb7ad9faca500088000190bb7a8bab9aab3a8bd9ac1aab1b4bfa2b3b0b7bda6aeb8a31004820006c6a9b49bb30005800000ac80b201a1c786b008afb1b9b3b9a4b6b9b2800500088100180ab2bab5a9aeb5afa0a7aba2c1b4000c0400aec0afb8a7b7a0e4b0 +86b012b3adb5b2a9b6b5a6be90b2a9a4000b040004078200800f0e0b0002000300b6b3b6acb39fb2a9ba86b003a5c1b9a480b0029fb6bf80b02ea7a9b59bc4b600030002000b0fb5acbaaca2abbaa49ebaa8baadb7aab3a7b4a2aeb3bea2a6c0a8aeb09aafb9b4bca681000a1701b3b0a9afbeaeb4acad86b00fb3b7a5c5a1a7c2a2aeb99eb3baaabba1800000038100800b0201130580000aa7b2a6aeb1abaebab0b8b2e4b0 +86b00ea6c5adafbeaaa9b8a5c4b3b5aeadb180ab16b5a3a5bfb7a2a199b7b4b1b5b49cbdb696c7abb6bfbaa186b047aeaa9ec6abbbaeb0a9a8b3b2b4adca9dbd9cb4b5b1b4b7999fbbaab8b1b5b7aec1b0afa7b6b9a6b6bab8aabda8a9aabea0b9b1b0b9adb7adb6acb4c3ab8fb9adb09fc5afa2b6bead86b001ba9a80b223abaeb7afb7a3baa8bcb29dbbb2b0a5c0b6bea7a6b9ae96b4c3baa0bbb4afb6b39bb9a2b2e4b0 +86b027b7a7afadacbeadb0b1afa7b6b0bda0b7b0b7adb1aea9b8b5b3bbada9b6a1c4a7b2bca3b3afaca8b686b019acbda9b1b6aeafb3b1b2b1abb4b0a7b4a7c4a1b6a9adbbb3bea880ad1ab0aab1aea9a6b5bba7a6bdaab0a5b5afb0adc3a2b7a9b5adaeb1b280ab0eaeb2aeb1c2a0b7b4bda1a9c4a5afb286b021adbeb0acb5b7a3b3afb3a8bc9eb2bfa5acb6b0a8b2adacbcadb7b6b2a5b0b4acaeb980aa03bbb1aeb8e4b0 +feb0feb094b0 +feb0feb094b0 +feb0feb094b0 +feb0feb094b0 +feb0feb094b0 +feb0feb094b0 +feb0feb094b0 +gr +gr +%%PageTrailer +rs +%%BoundingBox: 18 75 521 774 +showpage +%%BeginSetup +%%BeginFeature: *PageRegion Letter + letter +%%EndFeature +%%EndSetup +%%Page: 8 8 +%%BeginPageSetup +/#copies 1 def +sv +1.00 -1.00 sl +18.00 -774.00 tl +%%EndPageSetup +%%BoundingBox: (atend) +gs +gr gs +0 0 t 0 755.04 lo 574.80 755.04 lo 574.80 0 lo cp clip np +0.000 0.000 0.000 RGB +ski{/Times-Italic fcd /Times-Italic-ISO8859-1 fdf}if +/Times-Italic-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<736368656d613d737472696e67287b2273747275637475726564222c22756e73747275637475726564222c22616d72227d29> 109.20 64.80 C +<20> 364.32 64.80 C +ski{/Times-Roman fcd /Times-Roman-ISO8859-1 fdf}if +/Times-Roman-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<3a205468697320696e6469636174657320746865206461746120736574> 367.44 64.80 C +<736368656d61206265696e672075736564206f7574206f6620746865203320646566696e65642061626f76652e2020546869732073686f756c642062652061626c6520746f20657870616e6420746f20636f766572> 72.24 78.24 C +<4749532c204368656d69737472792c20616e6420706572686170732072656d6f74652d73656e736f7220646174612063617465676f726965732e> 72.24 91.68 C +/Times-Italic-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<536368656d612074797065203d20737472696e67287b22756e69666f726d222c2272656374696c696e656172222c226972726567756c6172227d29> 109.20 105.12 C +/Times-Roman-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<3a2020546865736520617265207375627479706573> 397.92 105.12 C +<6f6620227374727563747572656422206772696420736368656d61732e2020546865726520617265206e6f20737562747970657320666f722074686520756e737472756374757265642067726964732e202054686973206973> 72.24 118.56 C +<6a7573742061207072656c696d696e617279206c697374206f662073756274797065732074686f756768206265636175736520696e207468652066757475726520796f752077696c6c206e65656420746f20737570706f7274> 72.24 132.00 C +<756e69666f726d20736368656d6173207768657265207468652066756e64616d656e74616c20756e6974206973206120747269616e676c6520726174686572207468616e2061207371756172652028726567756c6172> 72.24 145.44 C +<617272617973206f662074657472616865647261292e20204c696b65776973652c2074686572652077696c6c20626520646966666572656e7420736368656d612d747970657320666f722047495320646174612e2054686973> 72.24 158.88 C +<69736e27742064697363757373656420696e207468697320646f63756d656e742074686f7567682e20> 72.24 172.32 C +<20> 268.32 172.32 C +<5468652022> 72.24 199.44 C +ski{/Times-BoldItalic fcd /Times-BoldItalic-ISO8859-1 fdf}if +/Times-BoldItalic-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<5368617065> 98.88 199.44 C +/Times-Roman-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<222067726f75702077696c6c20636f6e7461696e20646966666572656e74206f626a6563747320646570656e64696e67206f6e20776861742022736368656d612220616e64> 129.60 199.44 C +<22736368656d6120747970652220697320757365642e20205468697320776f756c642062653b> 72.24 213.12 C +ski{/Times-Bold fcd /Times-Bold-ISO8859-1 fdf}if +/Times-Bold-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<536368656d613d22> 72.24 240.48 C +/Times-BoldItalic-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<73747275637475726564> 126.00 240.48 C +/Times-Bold-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<222c20736368656d61747970653d22> 176.40 240.48 C +/Times-BoldItalic-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<756e69666f726d> 263.04 240.48 C +/Times-Bold-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<22> 303.84 240.48 C +/Times-Roman-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<5468652067726f75702077696c6c20636f6e7461696e20612073696e676c65206172726179206f66203c> 109.20 253.92 C +/Times-Italic-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<6e7370616365> 310.32 253.92 C +/Times-Roman-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<2a323e206c656e67746820776869636820636f6e7461696e7320746865> 343.44 253.92 C +<626f756e64696e6720626f7820636f6f7264696e6174657320696e20746865206f72646572> 72.24 267.36 C +<20> 255.84 267.36 C +/Times-Italic-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<786d696e2c786d61782c796d696e2c796d61782c7a6d696e2c7a6d6178> 258.96 267.36 C +/Times-Roman-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<2e2e2e206574632028746f20757365> 418.56 267.36 C +<63617274657369616e20636f6f7264696e6174657320666f722074686973206578616d706c65292e2020546869732077696c6c20776f726b206964656e746963616c6c7920666f7220646966666572656e74> 72.24 280.80 C +<636f6f7264696e617465732073797374656d73206c696b652073706865726963616c206f722063796c696e64726963616c20636f6f7264696e617465732e202049276d206e6f742073757265207768617420746865> 72.24 294.24 C +<72616d696669636174696f6e7320776f756c6420626520666f72204749532070726f6a656374696f6e732c20627574207468657920776f756c64206c696b656c7920626520756e646572206120646966666572656e74> 72.24 307.68 C +<736368656d612e20> 72.24 321.12 C +<20> 114.24 321.12 C +/Times-Bold-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<536368656d613d22> 72.24 348.48 C +/Times-BoldItalic-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<73747275637475726564> 126.00 348.48 C +/Times-Bold-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<222c20736368656d61747970653d22> 176.40 348.48 C +/Times-BoldItalic-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<72656374696c696e656172> 263.04 348.48 C +/Times-Bold-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<22> 314.16 348.48 C +/Times-Roman-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<54686520225368617065222067726f75702077696c6c20636f6e7461696e203c> 109.20 361.92 C +/Times-Italic-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<6e7370616365> 271.20 361.92 C +/Times-Roman-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<3e20617272617973206f6620636f6f7264696e617465732c2065616368206f66207768696368> 304.32 361.92 C +<617265206f66206c656e67746820657175616c20746f207468652072657370656374697665206c6f676963616c20646174612064696d656e73696f6e206974206973206173736f636961746564207769746820286f722031> 72.24 375.36 C +<6d6f7265207468616e20746861742069662063656c6c2d63656e746572656420646174612069732075736564292e20205468657920776f756c6420636f6e7461696e2074686520656467652d636f6f7264696e61746573> 72.24 388.80 C +<666f72206461746120616c6f6e67207468617420617869732e2020546865206172726179732061726520616c6c206e616d6564> 72.24 402.24 C +<20> 311.04 402.24 C +/Times-Italic-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<65646765636f6f7264> 314.16 402.24 C +/Times-Roman-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<3c6e3e207768657265206e206973207468652064617461> 364.56 402.24 C +<64696d656e73696f6e206e756d6265722028313a4e64696d73292e20205468657920616c736f2068617665207468652061747472696275746573> 72.24 415.68 C +/Times-Italic-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<747970653d226564676520636f6f726422> 109.20 429.12 C +<617869733d227822206f7220227922206f7220227a22> 109.20 442.56 C +/Times-Roman-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<3a20205468697320636f756c64207065726861707320626520616e20696e74656765722c2062757420746865206f72646572206f66207468652061786573> 215.52 442.56 C +<636f756c6420626520696d706c69656420627920746865206f7264657220696e20776869636820746865792061707065617220696e207468652067726f75702e> 72.24 456.00 C +/Times-Bold-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<536368656d613d22> 72.24 483.60 C +/Times-BoldItalic-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<73747275637475726564> 126.00 483.60 C +/Times-Bold-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<222c20736368656d61747970653d22> 176.40 483.60 C +/Times-BoldItalic-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<6972726567756c6172> 263.04 483.60 C +/Times-Bold-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<22> 307.44 483.60 C +/Times-Roman-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<54686520225368617065222067726f75702077696c6c20636f6e7461696e203c> 109.20 497.04 C +/Times-Italic-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<6e7370616365> 271.20 497.04 C +/Times-Roman-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<3e206172726179732077686572652065616368206172726179206861732061206c656e677468> 304.32 497.04 C +<657175616c20746f20746865206e756d626572206f6620656c656d656e747320696e20746865207363616c6172206461746173657420287468652070726f64756374206f6620616c6c206f6620746865206c6f676963616c> 72.24 510.48 C +<64696d656e73696f6e73206f66207468652064617461736574292e20205468697320636f6e7461696e7320746865202278222c2022792220616e6420227a2220636f6f7264696e6174657320666f72206561636820766572746578> 72.24 523.92 C +<6f6620746865206772696420287573696e6720612063617274657369616e206772696420617320616e206578616d706c653b20746865206772696420636f756c6420626520616e7920636f6f7264696e617465> 72.24 537.36 C +<73797374656d292e20205468652064617461206d61792062652063656c6c2d63656e7465726564206f72207665727465782063656e7465726564206f6e20746869732067726964206f6620636f757273652e2020546865> 72.24 550.80 C +<6e616d65206f662065616368206f662074686573652061727261797320776f756c64206265> 72.24 564.24 C +<20> 257.04 564.24 C +/Times-Italic-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<636f6f7264733c6e3e> 109.20 577.68 C +/Times-Roman-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<7768657265203c6e3e206973207468652074686520706879736963616c2064696d656e73696f6e206e756d6265722028313a6e7370616365292e> 72.24 591.12 C +<54686572652061726520616c736f206174747269627574657320666f722065616368206f66207468657365206172726179733b> 72.24 604.56 C +/Times-Italic-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<747970653d22636f6f72647322> 109.20 618.00 C +<617869733d227822206f7220227922206f7220227a22> 109.20 631.44 C +/Times-Roman-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<20666f72207468652063617274657369616e2063617365> 215.52 631.44 C +/Times-Bold-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<736368656d613d22> 72.24 658.80 C +/Times-BoldItalic-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<46454d> 123.84 658.80 C +/Times-Bold-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<22> 150.24 658.80 C +/Times-Roman-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<54686520636f6e74656e7473206f662074686520225368617065222067726f757020617265206e737061636520617272617973206f6620636f6f7264696e6174657320776869636820617265> 109.20 672.24 C +<6e616d6564> 72.24 685.68 C +<20> 104.16 685.68 C +/Times-Italic-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<636f6f7264733c6e3e> 109.20 698.88 C +gr +%%PageTrailer +rs +%%BoundingBox: 18 73 521 774 +showpage +%%BeginSetup +%%BeginFeature: *PageRegion Letter + letter +%%EndFeature +%%EndSetup +%%Page: 9 9 +%%BeginPageSetup +/#copies 1 def +sv +1.00 -1.00 sl +18.00 -774.00 tl +%%EndPageSetup +%%BoundingBox: (atend) +gs +gr gs +0 0 t 0 755.04 lo 574.80 755.04 lo 574.80 0 lo cp clip np +0.000 0.000 0.000 RGB +ski{/Times-Roman fcd /Times-Roman-ISO8859-1 fdf}if +/Times-Roman-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<7768657265203c6e3e2069732074686520706879736963616c20636f6f7264696e617465206e756d6265722028313a6e7370616365292e20205468652022> 72.24 64.80 C +ski{/Times-Italic fcd /Times-Italic-ISO8859-1 fdf}if +/Times-Italic-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<74797065> 378.48 64.80 C +/Times-Roman-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<222061747472696275746520666f722065616368206f66> 398.40 64.80 C +<74686573652061727261797320776f756c642062652022> 72.24 78.24 C +/Times-Italic-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<766572746578> 184.56 78.24 C +/Times-Roman-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<222e> 213.60 78.24 C +<546865726520697320616c736f20616e20617272617920776869636820636f6e7461696e73207468652063656c6c2074797065732e20205468697320636f756c6420626520616e206172726179206f66> 109.20 91.68 C +<756e7369676e6564206368617261637465727320286c656176696e67203235362064697363726574652063656c6c207479706573292c2062757420636f756c6420616c736f20626520696e74656765722028616c74686f756768> 72.24 105.12 C +<7468617420776f756c642074616b65206d6f7265207370616365292e202054686520636f6e74656e7473206f662074686520617272617920776f756c6420626520696e7465676572206964656e7469666965727320666f72> 72.24 118.56 C +<656163682063656c6c207573656420696e207468652063656c6c20636f6e6e6563746976697479206c6973742e202054686973206c697374206973206e616d6564202263656c6c207479706573222e20205468657265206172652038> 72.24 132.00 C +<66756e64616d656e74616c2063656c6c2074797065732c20627574206964656e74696669657273207468617420617265206265796f6e6420746865736520382074797065732061726520636f6e7369646572656420746f206265> 72.24 145.44 C +<22757365722220646174612e202049276c6c206e6f74206578706c61696e20686f7720757365722d646566696e65642063656c6c732061726520726570726573656e74656420726967687420686572652c20627574> 72.24 158.88 C +<617373756d6520666f72206e6f772074686174207468657920776f756c6420626520616e6f74686572206f626a65637420696e73696465206f662074686520225368617065222067726f7570207768696368> 72.24 172.32 C +<646566696e6573207468652063656c6c277320636f6e6e65637469766974792e20> 72.24 185.76 C +<20> 222.24 185.76 C +<28696d61676573206f662074686520382066756e64616d656e74616c2063656c6c20747970657329> 109.20 199.20 C +<546865206e65787420617272617920696e2074686520225368617065222067726f75702069732074686520636f6e6e6563746976697479206c69737420666f72207468652063656c6c732e2020546869732069732061> 109.20 239.76 C +<6c697374206f6620696e74656765727320776869636820636f72726573706f6e6420746f20746865206c697374206f662063656c6c2d74797065732e202053696e636520656163682063656c6c2063616e20686176652061> 72.24 253.20 C +<646966666572656e74206e756d626572206f662076657274696365732c20796f75206d75737420737465702073657175656e7469616c6c79207468726f75676820746865202263656c6c2074797065732220617272617920696e> 72.24 266.64 C +<6f7264657220746f2064657465726d696e65207468652070726f706572206f666673657420746f206120706172746963756c61722063656c6c2e202054686973206c6973742069732063616c6c6564202263656c6c732220616e6420686173> 72.24 280.08 C +<612022747970652220617474726962757465206f66202263656c6c73222e> 72.24 293.52 C +<416e206164646974696f6e616c20286f7074696f6e616c2920617272617920666f722066696e69746520656c656d656e7420646174617365747320697320746865202263656c6c206f66667365747322> 109.20 306.96 C +<77686963682069732061206c697374206f6620696e7465676572206f66667365747320696e746f207468652063656c6c20617272617920776869636820686173206120312d746f2d3120636f72726573706f6e64656e6365> 72.24 320.40 C +<7769746820746865202263656c6c207479706573222061727261792e202054686973207065726d6974732072616e646f6d2061636365737320696e746f207468652063656c6c20636f6e6e6563746976697479206c6973742e> 72.24 333.84 C +<546869732063616e2062652067656e657261746564206175746f6d61746963616c6c792c2062757420736f6d65207573657273206d61792077616e7420746f207472616465206f66662073746f72616765207370616365> 72.24 347.28 C +<666f722073706565642062792073746f72696e67207468697320737570706c656d656e7461727920696e666f726d6174696f6e2e> 72.24 360.72 C +gr +%%PageTrailer +rs +%%BoundingBox: 18 411 519 774 +showpage +%%BeginSetup +%%BeginFeature: *PageRegion Letter + letter +%%EndFeature +%%EndSetup +%%Page: 10 10 +%%BeginPageSetup +/#copies 1 def +sv +1.00 -1.00 sl +18.00 -774.00 tl +%%EndPageSetup +%%BoundingBox: (atend) +gs +gr gs +0 0 t 0 755.04 lo 574.80 755.04 lo 574.80 0 lo cp clip np +0.000 0.000 0.000 RGB +ski{/Helvetica-Bold fcd /Helvetica-Bold-ISO8859-1 fdf}if +/Helvetica-Bold-ISO8859-1 ff [13.92 0 0 -13.92 0 0] mf sf +<414d52204461746120536368656d61> 72.24 80.88 C +gr gs +0 0 t 0 755.04 lo 574.80 755.04 lo 574.80 0 lo cp clip np +0.000 0.000 0.000 RGB +0.240 sw +[] 0 setdash +0 sc +0 sj +gs np 72.24 82.08 t 72.24 83.04 lo 194.88 83.04 lo 194.88 82.08 lo cp f st gr +gr gs +0 0 t 0 755.04 lo 574.80 755.04 lo 574.80 0 lo cp clip np +0.000 0.000 0.000 RGB +ski{/Helvetica fcd /Helvetica-ISO8859-1 fdf}if +/Helvetica-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<20> 194.88 80.88 C +<20> 198.24 80.88 C +ski{/Times-Roman fcd /Times-Roman-ISO8859-1 fdf}if +/Times-Roman-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<54686520414d52206461746120736368656d6120697320676f696e6720746f20626520612062697420646966666572656e74207468616e2074686520726567756c617220736368656d612064756520746f20697473> 72.24 94.80 C +<636f6d706c6963617465642074696d652d7374657070696e6720616e64207370617469616c207374727563747572652e2020486f77657665722c20697420646570656e647320656e746972656c79206f6e20746865> 72.24 108.24 C +<61626f76652d7370656369666965642067726f7570696e67207374727563747572657320666f722046454d20616e642073747275637475726564206772696473206265636175736520656163682073756267726964> 72.24 121.68 C +<6f6620616e20414d522068696572617263687920636f756c6420626520616e79206f662074686f7365206461746120736368656d61732e20205468652070726f706f7365642067726f7570696e67> 72.24 135.12 C +<7374727563747572652068657265206d757374206265206e657374656420696e746f206c6576656c73206a75737420617320746865206e657374696e67206f66207468652061637475616c2064617461207374727563747572652e> 72.24 148.56 C +<416c736f2c2065616368206e6573746564206c6576656c206d75737420636f6e7461696e2061202254696d6547726f7570222064617461737472756374757265206265636175736520646565706572206c6576656c73> 72.24 162.00 C +<696e20746865206869657261726368792073746570206174206120677265617465722072617465207468616e2074686520726f6f74206c6576656c2028666f7220696e7374616e63652c2065616368206c6576656c206d69676874> 72.24 175.44 C +<7374657020747769636520617320666173742061732069747320706172656e74206c6576656c292e202045616368206c656166206f662074686973207472656520776f756c64206265206120224461746147726f75702220736f> 72.24 188.88 C +<7468617420616e792074797065206f662064617461202846454d2c206972726567756c61722d7374727563747572656420677269642c2072656374696c696e656172202e2e2e20657463292063616e206265206e657374656420696e> 72.24 202.32 C +<746865206869657261726368792e20205468652074696d652d7374657070696e67206f7264657220666f7220746869732067726f7570696e6720737472756374757265206973207468652073616d6520617320746865> 72.24 215.76 C +<6f72646572207468617420796f75207669736974206e6f64657320696e20612064657074682d66697273742d736561726368206f66207468652074726565206f662067726f7570696e6720737472756374757265732e> 72.24 229.20 C +<20> 72.24 256.80 C +ski{/Times-Bold fcd /Times-Bold-ISO8859-1 fdf}if +/Times-Bold-ISO8859-1 ff [12.00 0 0 -12.00 0 0] mf sf +<20202020202020202020202020202020202020> 75.36 256.80 C +<20> 134.64 256.80 C +<414d522047726f7570696e67204469616772616d> 137.76 256.80 C +0.240 sw +[] 0 setdash +0 sc +0 sj +gs np 137.76 258.00 t 137.76 258.72 lo 268.08 258.72 lo 268.08 258.00 lo cp f st gr +gr gs +0 0 t 0 755.04 lo 574.80 755.04 lo 574.80 0 lo cp clip np + 87.60 262.08 t 87.60 474.00 lo 341.76 474.00 lo 341.76 262.08 lo +cp clip np +gs +0.6348 0.5298 sl +137.9962 494.6772 tl +400 400 8 [1 0 0 1 0 1] +/datastr 400 string def +/pp 1 string def +/s 1 string def +/rn{currentfile s readhexstring{0 get}{pop exit}ifelse}def +/unpack{ + /DC 0 def + /BC 0 def{ + DC datastr length ge{exit}if + rn + /BC exch def + BC 127 le{ + /BC BC 1 add def + DC 1 DC BC add 1 sub{ + datastr exch rn put + }for + }{ + /BC BC 126 sub def + rn + /pp exch def + DC 1 DC BC add 1 sub{ + datastr exch pp put + }for + } ifelse + /DC DC BC add def + }loop + datastr +}bdf +{unpack} bind +image +feb0feb0feb08eb0 +feb0feb0feb08eb0 +feb0feb0feb08eb0 +feb0feb0feb08eb0 +feb0feb0feb08eb0 +feb0feb0feb08eb0 +feb0feb0feb08eb0 +feb0feb0feb08eb0 +feb0feb0feb08eb0 +feb0feb0feb08eb0 +feb0feb0feb08eb0 +feb0feb0feb08eb0 +feb0feb0feb08eb0 +feb0feb0feb08eb0 +feb0feb0feb08eb0 +feb0feb0feb08eb0 +feb0feb0feb08eb0 +feb0feb0feb08eb0 +feb0feb0feb08eb0 +feb0feb0feb08eb0 +feb0feb0feb08eb0 +feb0feb0feb08eb0 +feb0feb0feb08eb0 +feb0feb0feb08eb0 +feb0feb0feb08eb0 +feb0feb0feb08eb0 +feb0feb0feb08eb0 +feb0feb0feb08eb0 +feb0feb0feb08eb0 +feb0feb0feb08eb0 +feb0feb0feb08eb0 +feb0feb0feb08eb0 +8eb007b2b6a3b8aca6c2a886b107abaac1ada2b6b0b386b107b3b1a5b9b4a5b7ab86b102b3a2b280b502b3a4b586b107abafb1b9a0b8b2ae86b128aaaeb8a7b8abb1abb4a5b0b5a4aebba9abb5b6bba7a4bdabaeacc2b1a8b5abb3b5acb0b4aba7adafb180b003afa2bca687b107b5a8bbb9a1a7c1a486b107abaac1ada2b6b0b386b107b3b1a5b9b4a5b7ab86b102b3a2b280b502b3a4b586b107abafb1b9a0b8b2ae86b128aaaeb8a7b8abb1abb4a5b0b5a4aebba9abb5b6bba7a4bdabaeacc2b1a8b5abb3b5acb0b4aba7adafb180b003afa2bca687b107b5a8bbb9a1a7c1a486b107abaac1ada2b6b0b386b107b3b1a5b9b4a5b7ab86b102b3a2b280b502b3a4b586b107b2acadb4adbe9fb7a6b0 +8eb005a6b4b8b2030488000009800001b8ba8a0006010006aaad000987008008030001a3c78800000b8000030a00b4ae87000b030007000b00b1a11c000d128000000882000a05080002b7a60400160002800080010300030905800005acb0000600098700050100b1a2000f88000009800001b8ba8a0006010006aaad000987008008030001a3c78800000b8000030a00b4ae87000b030007000b00b1a11c000d128000000882000a05080002b7a60400160002800080010300030905800005acb0000600098700050100b1a2000f88000009800001b8ba8a0006010006aaad000987008008030001a3c787000302000b08800001bbaea6b0 +8eb002b6a1ae8100011208880005bc9d000d0c028700040211adaf0a8800000c8000040eacb800068600060710000d00b0ab87000101078000041100b4b0068300130b0006000b00010004b0ba0004090009000c0009840003afae0a0e81000001870002afb903800201000b880005bc9d000d0c028700040211adaf0a8800000c8000040eacb800068600060710000d00b0ab87000101078000041100b4b0068300130b0006000b00010004b0ba0004090009000c0009840003afae0a0e81000001870002afb903800201000b880005bc9d000d0c028700040211adaf0a8800000c8000040eacb8000686000009820002c1aeb7a6b0 +8eb002b5bba78000000b890002a9ac1a8c0001aba08000010d088700030600aab28b00040600bcaa018700060500130e00bba58000020510058000000382000612000ea7b2001280000011810000058000050f07001eadb98100010702880001bba78200000a880002a9ac1a8c0001aba08000010d088700030600aab28b00040600bcaa018700060500130e00bba58000020510058000000382000612000ea7b2001280000011810000058000050f07001eadb98100010702880001bba78200000a880002a9ac1a8c0001aba08000010d088700030600aab28a0006170011ab99b6a4a6b0 +8eb007a9b0b8c5a0bea8bd86b103a7c3b39e80bc01a2bc86b107bbaea1bdc3b2b39f86b107beb49cb2b5abc1af86b180bd05b5a89abdabb586b10db69babaaada5c3b5b1a09fadb3b280b316b5b7b3a0a6b8b3b5b6a5c5baa0b6b9a6a5c0b19db3beaf80ac04b5b0c8afb180af86b107a1b5bba8caadbda186b103a7c3b39e80bc01a2bc86b107bbaea1bdc3b2b39f86b107beb49cb2b5abc1af86b180bd05b5a89abdabb586b10db69babaaada5c3b5b1a09fadb3b280b316b5b7b3a0a6b8b3b5b6a5c5baa0b6b9a6a5c0b19db3beaf80ac04b5b0c8afb180af86b107a1b5bba8caadbda186b103a7c3b39e80bc01a2bc86b107bbaea1bdc3b2b39f86b107beb49cb2b5abc1af86b107abaeadb8b5bd9fc4a6b0 +8eb004b6aaa0a3bd80ac00ae86b007b7afaca9afaba3b986b007aabbb0aaaca5abb486b007a9a5c7b8a4b3a9a586b007a4a3adc1adaabaaa86b006a9b8baa7c0ba9880ae02bcc1b880b106afa9aea4adcac280a10db4c89da4bab2a8aabab0b8b1abad80a308baa6b0aaa9b0a9a0c086b007b8b2a6b19eb8a4b686b007b7afaca9afaba3b986b007aabbb0aaaca5abb486b007a9a5c7b8a4b3a9a586b007a4a3adc1adaabaaa86b006a9b8baa7c0ba9880ae02bcc1b880b106afa9aea4adcac280a10db4c89da4bab2a8aabab0b8b1abad80a308baa6b0aaa9b0a9a0c086b007b8b2a6b19eb8a4b686b007b7afaca9afaba3b986b007aabbb0aaaca5abb486b007a9a5c7b8a4b3a9a586b007b6babca399bbb99ca6b0 +8eb007a2cdb6a8b2b6a3bb86b007aaabb4b2b8b7a8af86b001b99a80b903a0b7bda786b000bb80ab04a3aebdafb286b080b305b49cbdb59dbb86b02fb2acb1a99fb8aac4bba89ba5b2acabb9b0b7ba8fb2cd9bbc9fc4afa8b8b1aea7aaadaeb1babdb2a6b4c3abb2b7a0c8a686b007a7b7b5b1bd9cb2b186b007aaabb4b2b8b7a8af86b001b99a80b903a0b7bda786b000bb80ab04a3aebdafb286b080b305b49cbdb59dbb86b02fb2acb1a99fb8aac4bba89ba5b2acabb9b0b7ba8fb2cd9bbc9fc4afa8b8b1aea7aaadaeb1babdb2a6b4c3abb2b7a0c8a686b007a7b7b5b1bd9cb2b186b007aaabb4b2b8b7a8af86b001b99a80b903a0b7bda786b000bb80ab04a3aebdafb286b007a8b0a8b3c9a8b3baa6b0 +8eb007b4a2b1b4a6b2afb086b107adbda8b6b1a6c2ab86b107adc0acaabcaea8b786b107b0adb7b8b1aeadb486b107afb3b2b4adb4b1b286b10aaeb7a5b1b9abbea0a6b7b980b313b1aeb2b0aea9c1aaa0c4a4b4b0aea8b1b5abb4bc80a90cb4afa8afb7b2a4b5adacbfa2b086b107b3b2abb1afb8b4ae86b107adbda8b6b1a6c2ab86b107adc0acaabcaea8b786b107b0adb7b8b1aeadb486b107afb3b2b4adb4b1b286b10aaeb7a5b1b9abbea0a6b7b980b313b1aeb2b0aea9c1aaa0c4a4b4b0aea8b1b5abb4bc80a90cb4afa8afb7b2a4b5adacbfa2b086b107b3b2abb1afb8b4ae86b107adbda8b6b1a6c2ab86b107adc0acaabcaea8b786b107b0adb7b8b1aeadb486b180b605b2adacb4a8b2a6b0 +96b007afa5b8a8b1b69fb286b00fb7a8afb6aaafb4aba3c4a1b9aaafbaa9a6b00aafaab8bb9aaec5acb0b7a480b308a9b7afadb3a7b8020780000004800000108000080600b5aeb2aea6b5af800001060780000bb0bdaab0baaca3b8b2bba8b480b104b2aca8b7b2feb0eeb0 +96b007acb9b2b5a5b5bbb886b00facc0a4baaaa9aab6b7a9b2acbaa6b7a9a6b003acb4a2ad80bc2695b0baa8bcaec4a9000b0400040097b1ccadabbca2b6a7aeb5b4b0aaaeb4b7b0b7a4baaaadafb381000f04a5b7c1aea89eb99fb4b6a9b5b0b1aafeb0eeb0 +96b007b8b0a3b1b897b99886b008aea3b8bab9b5bca9a180b404b3a4c0a8b3a7b009a8c69cb5b1b6bda1b7b08000320e0900afb1bbabc8a3a6b2a5bfae95c29cb9aba2b1baada7b3a8bab5aab6baabb7b1afa8000200b4acbdacc4a3a6beb7b5b7b5feb0eeb0 +96b0079fbbb9a9adc700c986b00fbb9ac4a4a0bcb2a7c3ada2b2b3aaa2b4a6b00eafb7a7b4bba5aaa5bf070005b2aea380ad0cb4a4b59cbfb1a9ba9dbbc0aac080ab1fb8b2a4b1adc2b2aaacbd9bb6b2a3afb6b5b9aa09000ba2b0ada4baa4a6a8b6acfeb0eeb0 +96b007b6adb2adbaac00a786b00fb8b79daac0bd99c0a7b5b1a7b8accda8a6b03fb69bbaacb0b9ba0600afaca7b4a8c7b7b4aaadb5c2adaab4b700b3aaa7a6a8bdb1a99ac5a6a1b9afb7a7bca7a9adc7a2aaa9b3b1aaa60f06b6b7b4adaab9a3b4feb0eeb0 +96b007b4baa1ad9eab16af86b006a1b4cab4aaa0b88100050e070001a7a6a6b002aabdab80b20ea7b400a8afbbabb7c29baca5bdafaa81000e16000a010013030b000bb3bca8b1ac80b306a9000209b6b39d80b80ebba4b3b5a8b0ae00029fb8b6a8c9a7feb0eeb0 +96b007a3afbcc19e09a3af86b00fb4b5aca5b1110002b4bd00b1b4a702bda6b034bcadacb5aea317b4b9a2c2b0aa9eccb1a1ce9bb508bac0a5c200b0b2aea1afb9a69eaeb3a9bc9e0306b7b100bfa1ca9ca89cb8cca080b508aaab0a05b29eb890c0feb0eeb0 +96b007bfa8aaa9c900bbac86b003b9a1b6b980000906b0b2a5aeb7a90a01aca6b03fafa7b3b5b201abadb1b0abb1b4b2aeabb3afadbaa5afaeb0ad00acbaaeacb3a9b3bdb4afaa0d00b5abb6acaeb4aaabb6afc0a7a4b5a9bda9b5a6a909b6a9bbaafeb0eeb0 +96b007b6a2b7afb401b2ab86b00faabaac06ac00c0a4afb1bcad00bf00b9a6b007acb4b7aaae02a5b78eb017b400b9a9b3baa2b2bca6b2b3b200bdb3aab7b6adb6a3beaf86b007c2a2bd0103a9adb3feb0eeb0 +96b007b2aebe9fb700a1c786b00fb3aa00ad00c4a3bab0b4a800bda40ba9a6b007afbb9cbf0002bea28eb017b800b8a1b0b3baaaa4babd000bb1ac9db2b3a8b1b2a1b0ae86b0079eadb2a800b4acb1feb0eeb0 +96b007b8a8b0b203c2ab9e86b001abbc80060bb993b2a7b1a501b6b0aa00c1a6b007aeb2acb000aca5b88eb012a400b7c0a6abb7b3b5a70008bcacbbbaabb2ac80b802b2b5ae86b006bcafb3b704afadfeb0efb0 +96b007a3b4b9ac00b0b8b386b004b8009ab7ab80b408bcb30ba6b4acab00aba6b007b2acb3af00b3b7a88eb0170bb4a3a9b5a9c2a5b5b208a8acba98b6abb6b8a7acaeb4a486b007b7a5bba5b400bbb1feb0eeb0 +96b007c2a8a3b908a4adb186b00fa509c2a7acb4b1a500afbbadb304bdb3a6b007b2acb3af00b3b7a88eb01700acb2beb2aca5b8b000aab1adaaafbab1acbba0b2abbdba86b005a4b9acafb20380affeb0eeb0 +96b007aca7bdab00bfabb686b003b100adc680a709b800b99eb3a4ba00a2b1a6b007aeb2acb000aca5b88eb01700cdb795bdb0b6adb302b9b2b8aabba5baa9bdb5bea8a3a986b007aac6a2a907b2a9b1feb0eeb0 +96b007afb8a20bb99bbfa986b00fad0ca89fbab400bbb3b0b5b900bbc0afa6b007afbb9cbf0002bea28eb00a168fb7b0b2b0aab8ab0f9980b609aaabbeaeaba7a8a3c4ad87b000a280af04be009abbb4feb0eeb0 +96b007a9b8b900b2bc9fb586b00fb700aebd9e0daaafacb8aca902ba96b2a6b007acb4b7aaae02a5b78eb00e00c6a0b4b3aeb0b2ab00c1a7b3b4ab800000108000030ca0abb786b007bcaab2ac00c3a9abfeb0eeb0 +96b01fabb2b304b0b7a8b3aeb1aeafb0b1aeb1b500a90009b3acb0b7a40c00a8baa8b1a6b016aca9b8aea70f00b5b3aab5afaeb1c1a5aab5b4acafadba800019b3aabda2b1b8aaac10b1a4000500b0afbaacaa07b4a3b9adbbae80a80ab0b3adafb1acbb00b4b3affeb0eeb0 +96b011b1c89c0001a5cba3a8b7b4a1c2aeacbaa00e800002a7aea980b402ad00c380ac01afada6b02abab4a2afc6990900acb7b9b19aba9fbdb89da7c4afb2a900acb3b49cb7c19bafa0ac00c0bba3a9bcbaa9b8800012b9bba7abba9abfc2a4afb7aba9bd0008acb5aafeb0eeb0 +96b004a5a8b9bd078000010e088000140a9fb7ada1beab00adb3c5ab000500bfafadb8abb5a6b015a5afb9b1a2bfabbe000300b8c6b99bb4a4c2adb0aeb180b027abbdaeb0b6a1b8c0bab00d00b4adc1a8a4be0002bfaf9fb4b5afbaae9dadbaa1b2b8a300b3bab0b4feb0eeb0 +96b01fb7b29fbd9ec2b8a7a8b7bca1c1a6abbaaaacbf00020005b0aba9b5a5aab6bfa7a6b005bfa3b9aeb7aa80a502b5a40780001107bab3b6b3a59fb7b5a5b0b9a2abaeabbfa080a81eb9a0000e000409000805aeb7a0c0b4a6b2a1b8b6b5acc0b80003c39eacb9a4feb0eeb0 +96b01fb1afa8b8bda8afb2b5aaadb0b1b3b7acc1acaab0b1a6abb6b0b5bdacc192aeb6a6b00db1b4bfa2b3b0b7bdb6acc20b00af8200030706b1b780b017aea8caaabaaac0acb7acbeb4afb4b2a7bea9b9aba4b7b6a080b104acb6acb5af800006039eabb3adb3bafeb0eeb0 +96b01fabb1b4b1a1b4c2a4b6a8b3bda3acb7a99db2afbeacb1caa5a9b1a9b1aab0c0a8a6b033a7b4a2aeb3bea2a6a5b0a400b6c5a0b9b4b8adb200050004000500aeb3b1a9bcb29fbcaeb0b2aebaaaa8a5b6ba9ac3b0b6a3c4ad8000090b06aec3beabb7b39caffeb0eeb0 +96b013b9b2b5b69eb4b9b1b5abb6b2b1adb8aebdaab9aa80ae049fb6b89eb180bb02b0acafa6b01bbab8aabda8a9aabeb2bc0002b0a5b8a8b6a3b4b3b2b1c4a1bfa7b5098000000280000014810006050300090004078200000381000bb5baa9a8a5b5a0a8b7a4d1a4feb0eeb0 +96b01fabadafa7b6b8a2b0b4afb59dc2abb1acafaab5abadb3b9aba8bdb2a1b6aaa8b2a7b023a5b5afb0adc3a2abb900aeb1b7a6b8abbca5b7adb0acb0a9a7c2a3b1b6aab4b8a1bcb0b580aa05bdacb0bba2b980b010b4acbc00c3a8a9b5b4b2b0b5bcafaca8bcfeb0eeb0 +dfb005baa7acb0a9b580b30e0e9fafb9b5afa8acaeb6adbab4a2b896b001b2ae800006b0bc9cb9aab7ad80ae0cc2a1aea5cdae9fbdacb2adb7ae80ac03afb0adb2feb0deb0 +deb017a2b2b1b7bdb1bea5009dc5bb90b6afb3afb8abb3a4acb7a997b01eadb80500b3aea8afb5a6b6b496c8aab59cb6b4aeb2adb2aa9fc5c3a9b1b3b4feb0deb0 +deb017c4aea7b2a9a7abb400ca97a6bcb5a6b2adb6a5b2a9b5b1b496b007acc1aca000bcabb680b715acadaeb0b6a6bc9eb6b9aaafaeb3b1bc9fa5a7a9c2a2feb0deb0 +dfb00eaeb5acb5bbb30005a7bfb0aba9b6ba80ae05aca8bfbb92bf96b01fb6a0b1c5ba00b9a5b893bfb0aebbb4abafc0aba8b0a3b2aeacb9b3afc4b69fbdfeb0deb0 +deb017a8aabbb1bba4ae0eb1a6a1c5b1b3a7a6b2b0b1a9baaca7b196b01fa8c4b0a3ae9613abb5b4bdb1bc95b108030002060c000e069ec2a8a4b3b2bba8feb0deb0 +deb001b8b080ac0fb1b21395b1c0baa8a6aac7b1aeb6acb980a601d4ab96b01fb5a6b99ab9cea000a6a9aaa7b6c3a6b2a916a8b8a4a7a9a7bea6b3bcacabb0aefeb0deb0 +deb017a3b5b6a7bbac0011a6abb1b0b8a8aab2abb6a9bda3b095b196b01fa8acbbbcadacb80006b7bbb99ba4c4a4b900b7c2b2b4b9b4adb0af0008b3a1c3feb0deb0 +deb006bda0bdb2a800c38000001081000ac0a4b2afb2adafacb50faf96b019b9b1aab0aea5b1b2b300b0a8c0adb2b5b001aca7b7a7bbadabc2800000a880b300a5feb0deb0 +deb017afb0b3ad9f11a7ad00b700b2b3b2adb2ab030b00030003ad9eb006b600b4abb1b8a980b40e00a5b6b0acaeb30a00ad0fa9acb5b6feb0deb0 +deb001baa580b41300aeaab4b5b9019cb3b5bd000d00a5ac000b98bc9eb017acbe00bc9faebca8b308b4b2b0b5b6a1a2c0009cc2b4aaa8feb0deb0 +deb016b3b79bc300b1caaca905b0c9b5a2000800caaabb0400b59fb003b1a8ad0680b204b3ae00b0b980af0ab4bdacb0b106acadb2b3b7feb0deb0 +deb011a1a6bd00b6a6a1b7b200aea8a3190003b79f800003b300bda79eb017afbaa610a5aaa5bc00c3a4bda4b1a6b8b50700a7bba4b1adfeb0deb0 +deb011b7baac00bcb9acb00e00c3a8b2b001adb30080b6000080bb00a99eb017afb2a8a30badc2a900bdad9bbeb3b9a7a008aabbbab1bdacfeb0deb0 +deb010abb700a0ada7abbb00aea8b8a105ac070080b30400c4a4adb69eb0179dc6aeaac300a6b60bb2abc9ad97bab70e00ada6b6ad9eb7feb0deb0 +deb000b9800014c0bdaac0a700c4a9b2bb0100baa9b000ada1aabfac9eb017aeb0afc19bb800b500a8bba1a7d3000100acb1bbaab2bfb3feb0deb0 +deb00faa03b6b0a1bba4b60a9db8b900050ca7800005b3b2b7afabb19eb017b6afa8aeb9ac00b2b0b8acb2b1ac000a0f000400bcaeaaaefeb0deb0 +c6b080ae23b7aeb2b3a3acaeafb5a0c1adbcacb1ada7c3a4b29cb00002a9b4abb0bbafb1abb000b0b88000070a99c1b1b5afb1b49eb017b6b3a9b2a6b9af00b99abaabc0aab4acb0b6afb0a9adb8a786b005aca3b3b2aeb780aefeb0ceb0 +c6b003afadb5a980ac29b6bfa9bda4b5aeb097bba9b9aaafb7a7d2ae00b6bab5b0a1b9a8b1adb8afa1aeb2be9dc1aaa5b7aaa6ab9eb017abafbeadbfa3bcab00b8adae9cb7a8bfb3a4b6a8bdb5a4b586b001bfb680ac03a9b5adaffeb0ceb0 +c6b02facaab6b2b7a5b3a3b5aebc9fb8acb5b2b8ada8a3b8bc9200bda69ab9b0c1acbcb7a6b6b7b4b0ada1bcb7a2adbaadb1bb9eb080b20ab5a1a6b2a9b0ac0ea6afc180ac08a7aba6bfad99b4b3aa86af07a3b3a5b7b2b6aaacfeb0ceb0 +c6b000b980ab2ca7b6abc6b1a99cb5c1a7afbdb5a7aac3b4a2b00d08a8c1b3acada9b3a7a6b5b38fc4bda7baa4b1b9b8afadb1a99eb017b4a6acb6bcc1b1b2b00700b8b5b7adb0bfb3a3caadb5aaae86b304b1c6abb6a780ab00b9feb0ceb0 +c6b02cafabb0aab0a5b2aabfbeb2a5afaab8a9b4aeaab0c2b400a6a7abb8abb2bdadb3afc49dbcaba1b0b7b3b1b5aba680b700a39eb004a9c1b2a5ba80a310adb7a304b6a3a5b9abb2abafa4aabea6b886b007aab2a5b0aab0abaffeb0ceb0 +c6b00ca4afbab2b0b3a6bd9aaeadb5c28000031205000280001a0406b1b0bdacbfa7b4ada9b1abadb5abb6b5a8b6a5abaaabb7b5b69eb003c0a2a1c78000090d050008030003180008800005b5baacb2afab86af07bda6b3b0b2baafa4feb0ceb0 +c6b080b507b0a5adc88fb5bdbb8100010b0881000107098000040a0005000581001101bcaca5bdabaeb7a5beb5acbab4aeab9faf9eb002a8b01480000cc2aea9b1b0abb600a0b8acb7088200010c01860005b58fc8ada5b080b5feb0ceb0 +c6b000ad80af04b0b3ab090181000cbab992c1b1b2b7afa9b4a9a2bc80ae15b1b0bcaab001000700b3acb1a7afaeabb4a7b1bfadb49eb008ab0f00060804000c0380000c040005000200b6a6b9b5aca6b286af040109abb3b080af00adfeb0ceb0 +beb015b6aea7c6a8a5c0a9aaaebaa8000e00a8acb4b5a1c4a580b707aab6acb4b1b0abb286b007b8ac0002b2afb7ab9eb005b9a7bca3bba880b10a0300aab9afb6b1a8b6aeb480ab0ab8a2b2b0b5aab5b2aeaab986b001b9aa80000abca7baa8a4bbbab1a9b4a687b005aca3b3b2aeb780aefeb0b6b0 +beb0029bc19f80b11ab5a3b8bc000700b6a3afc9b7afb5bca0c1a4a7b7a8b5a1a3c1b7a286b007a7afbcb5000fa4b39eb01f9fb0a8b1aeb2af00aaa8baaea3b4afc0a3b4b1a5beb8b4b3bda5b2a3a5beb3a886b003a2b7b4a8800009adacc893b4b2b0aab8b386b201bfb680ac03a9b5adaffeb0b6b0 +beb01fb2b0c4abadafb4ac0008a3b2aeb6a6a1b49db79ab7b9b8abacb1adb8bba7a6ba86b007bea4b2a0c0b800b59eb01fc6aeb3b6a1b503b1b3c1a9bbbea7aaa9bb9fb4bab6a5a4b1a8b3acbec1a6a9b686b00fa9b4b1a4cfab00bbb2b5afa8adc2a5a886ae07a3b3a5b7b2b6aaacfeb0b6b0 +bfb005a4aebca6bbb5800016b3b7b2a6b9c2aca6c0b6b2b6aba6b8afb4b1a4bcaec2a486b007a9a5b7c99bb1bc039eb00fa99ec09fbf08ada7a0aca8afa912000280000006800003adc4abb480b20497afaec0a886b003b7b1a4bb80a908ab00a3b9bcb7b6a8bb87b304b1c6abb6a780ab00b9feb0b6b0 +beb006b7bb99baaf940e80b716b5a8a5bdaaa4b6b79fb8a7abb1adb6bba6a7c09ca1b5b386b007bbb0a8a1b8aea7009eb00cbbaebbb700b9aeb1bebdabadb180000aba05b5adb10db9a3b1bb9c80c0039cbaabb286b00fa8aabba5b8aac2aa01bc9caca4b7a8aa86ad07aab2a5b0aab0abaffeb0b6b0 +beb00fada6c3a2b509b1b0a7acb9b0a31100b3800004bcb2afb6b480a406b0c10017bfa7ad86b007a4b8b2b3b2bbb1029eb01fafb7a203c49fb4b0b59cb5c1a5b3bba100b1b6a6ae8fb7bca2bca79fcda5b2ab86b00fb4aeb2a6b0bcacaa00beacb9aab9bbb986b207bda6b3b0b2baafa4feb0b6b0 +beb010b3abacb30200a6afaab3a4bab3000f000881000502a1b3c0acbe810002a9abac87b006baaab597a5ad029eb001baae80001bb2c39ab3adbaa9adbcaa9fc200b4a2c7abc5a7acb6bd000301a6aab686b00faeb8b2b8a2aaaeb70600090004079ab886b105b58fc8ada5b080b5feb0b6b0 +beb01faab4abb200b8abb3b5a4c1a4b3b9a8ae00bba9b5adb8b0a6b800b4aeb3b1a8b986b003b8a6a8b580b801aa009eb01fa7b400c1a9a3c3a9b4a4bca4aabeb200b4a7bda6a8baaeb4ad00b9a9afb7b1ae86b00fb2afa2adbbb4b1ad00bdacb4acb100038600040109abb3b080af00adfeb0b6b0 +beb00ca6c1ac0006a9afbcabb8aeabaf80aa10bc00b6a7b0a6adbcab05a9abb1b5a2adbe86b007bb9ebfa2b8b1b5009eb006b500baa4b9baa380b20fb3aab4a5b7a800b3a8aeb8abb1b9ab0080b204aeb4b2afae86b00fa7bdacadaeb3b0ae00a5afbfa7afb3ae86b001a7bd800080050c00a9b5a5bdb1b2adbab1afabae80b702b2b0ae80000c029f02b9adb1abafbaafac1200feb097b0 +beb019b1acaf04bbb4b697a8afadb3bab1b79a00aab3b2cc9eafa700af80ba00b280b5009e86b007a2c9a8b3afa4a6049eb0129f17a7a1a7a8b6b0ada9b9b5b8aab907afbabb80a80abe990901b7afb4aca4b8a886b00fbba1afc1afa5bdad0bb5acadafbbb2b186b012aea8abb9a2b6a60b0005aca0bcbd9db2afbbb280a807a0beafa8c700160781000209afab81000107abfeb096b0 +beb01facb1bf00b0aeb7bab8bdb7a9b2b0a410adacc294b4c9a80db5b0a79cb1b3c0b387b006a5b8b2b6c1b6009eb00fb100a5d6b3aab9a9b2b6adaba7aaae0080a609b1b0b4bbac00b7aa9c0b800000b287b00fb3aebeada2bca5b100adb2adb1b3a7b486b006b8b7b3a4c2a0c180ab1db20107b1a8beb6b7abb0aac6bcacb3adafae00aeadc5b8aca9aac2af000dfeb097b0 +beb080ab02a50cb280af18a4a8a4a8a4b0b3b600aeacabb2a2adae00a9b00009be99b7a786b007b1b4b593b3b400049eb01fb201be90aeada8b6a9a8bfb0bab500b4c5aeb5bcb39cab07abbe00aeb205a8b486b00fa8ada4a2c0aab1031ca8b3b4afaca8b286b01da0b4aaacb9a4abaec2aba6ac0006a9a2b1afaebea1a5bfa7b3a605a5bcaf80a407b7afb7acab00a8b7feb096b0 +beb013bcc7a600c49dcea5c5aeb5bcb39cab07b2adccb580a70119a6810004b400bda5bd86b007b8a3abcdaf00b5b29eb01fadae00bebda9b5b1b4b6a2ada6ba02a4a8a4a8a4b0b3b6009db4ad000700c0a786b002b6bbb380ac0ab60b0096b7a9b3adb2baac86b006b7baafb0a3b7bc80a31eb8b1bbbaa80a0300b7a0bab6a3b1abaec000a8b5bbb7b4b7a4afb49e00a2bafeb096b0 +beb003ad9eb00880ab019ac280a605b1b0b4bbac0080b204a0a3c0b40080b206aeb09b12a7b99e86b007b3a7b8ac00c6b2a79fb01eaebd00a5a9bca9b3a5b4b0b89802beb8bdb7a9b2b0a41015000300a6aeacb886b00bafa1bcb1000200a8c1b3aaba80ab01bbaa86b027a3aaaea9c0a2a8c5afbcaba8aea5adb4a4040ba2b8bfa7b9b79c0abca89ea6b9a2c5adb113aebfa8feb096b0 +beb002a6bfbe800005babda6afbabb80a812be9909b3a3c8b2a5b5000aa5caa50207a7a1c186b001a7bc800003b9b0aab69eb00bb4a8b89f0700bfaba9aca8b380ba11b4a2a8afadb3bab1b79a97b9afbcadb1bbaa86b00fc198b7000caeb2aca7aab1baaea3afae86b003bba4b8a980b30cbd9bb1a3b8b1b5b7b3aec2afa9800012afb5a4a60f00b2aec3b7a6b9b0a5b600c29db5feb096b0 +beb01fbcaaacb90006a9b4b3a8aeb8abb1b9abafb8a3b3aeb7a501030003be9abcb3a986b080000505abb5b0afad9eb004b6aab4b5b080000db5abb6b9aaabaea9b6abb8aeabaf80aa80bc06a6c2a0b9a7b1b286b000ae80000cb4abb3a4b5b2baaea8b5b0aeb186b014b3acaeb0b5b1aab7b0b2adb8a5b5aab0a8b4b0b1b8800010bdb40003b4a9b0afacaeb3aa020a9fc1affeb096b0 +beb026b8acbda9aa0f0004b5bd9fb4b9aab5abacbcabafb6adaeb2a9b8b4a9afaeadb4b3bba5b0b1b80180001601b5a8b6b5a7b1b2b7a5bfa5adb5acbca0afb3b5b2abb48eb006b8aaadb5b0a3c2810005baa9adafaeb48eb106a8c1aab3b1b20580001ebba3bbb5b0abb6b4b1a5b7aeb6a8acb9abb4aeb0b3a8bbacbcacbca4b1b3af86b017b4b1afb5b1c1990a00adaeb1abb4a2b7aaaeac07a7b1b6a4feb096b0 +beb0069bbda2c0b89db381001ac4a7b1abb1b2b4acabb9a6b1a9b2b6a7a3c5a6b7afaa9eb2000209800018bec90009b7a5abb4baa2a8c0a3b5b7b4a7b4beb1b99da3c1ae8eb009b3a8bda7b3b49fa6b60c8000031c0002a38eb002c1900c810021aeacbda9b3b2a0aac5a5a9b2afada9b8b9b8a8b0a8bb9eb7b8a8b0a6b0abbec79bb586b017aba6aab7a5aac19db80001b1aeadc0a9b9ae0500b7afa9c4feb096b0 +beb008bcbab394b9a70c00bb80000c0500bbb6a7b697b5b0b7b5bea580b002aca808800014010f00b9b09fbdb4ba9cb500a9c5b5bc00140d0001810008b6afa6ab000dbea0ba8eb000a980b20cb1aeb8afc1b100a6be9ab3b7068f002615b4b3ac1500bca8abadb5b8a7a9b2acb5bdb0aeaab2b1bbb0acbab4aeb8b2bfacbbb3a1a4bab786b008bbb1adbaada2b7bcaa80ae050201b5b1a8b4800004aeb30c98b5feb096b0 +beb00ca1a9b2beb2b11000aba8acbeb580000404000b00178300250f000400a3d2a49dc5acb0b1a6b19abfb1c300a7a3b3b19ea900aabdb39eb8aa120001acabaf8fb00faab6a6b6afb0b59bba00b4b79fb5b9a38eb11aba9ba3b2b0b598090ba3b7a3b3bcb1b0c291a4c19f1c000200100380000ab8a5aba1b4aca3b3b9b1a686b012a9b1adafb8b9b1a4aac8aab7a60001b5abb608800002adbca8feb096b0 +beb004bbb8a2b1b8800021b9bbb0c0a39ec6adaaaeb7bfa1ac1ca7b5b3a5a0beaeada9bbaea8a7acb1c3a0c7ab80a1130a00adb8aebfa809baacabc2a5b400020aa9bfb38fb00fb3aeb5a4b8b1a2c600bdabbabdaaadb68eae27a9bbafb6acbabba8ab040aafaab393b9afbcc6a9b2b4beabbf00a1b1b8b6aab6b2acc0bba4b6b3b286b000a380b714a6abb5b1b3acaaacbbb1afb800a5b5b1a9b7bfa7b3feb096b0 +beb03cb2a4b9b0ae00b5b1a4b5a3a6bda3b3baadaaa5bab8009caeb9c2b6a2b7b1acb1b0b9bfa3b4b0a9acb9b3bda10c03b6adb1ab00afb1b6a4b5b1b600a5b480aa00ba8eb00fb1b2b5acb0b5bd9907aab9a99ebca2a88eb227b6b1b6aea6a5b4b7b4b10007c1a2bdafaba6acafb5aaa9a8b100c0c1acaaaca8b0b49bb3bb9bbcad86b017b6b5b7abaaaba5b6b9b2be90b5c4a8b409b1b3b29bbb94bffeb096b0 +beb03fafb9adba00adacb3c1a3c0b7b5abc597bda6b9bda301c3b09fa7aba9c2b1a9b1b2b190c9a7b3b4b7a9afb5b49b0d9ab8a2ca00aeb2afbfaea4b600bbb0b3b0ab8eb00facb8adbaa6b5941bb2b0a7b3c3a7b1c18eae1ab696b7bab0b4b2acb1aabea300aeb9a8b7b8aeaba7b4b5b7b900a180ac04a9bf040006800201aaba80b386b00daf9fabaeb4baacb5b0a5a9c0b89a80b200a2800004b3b0babeb2feb096b0 +beb000ae80b00600aabda7b5b3a780a933b5a7a9bdaab8a9b00800afb3b2bcb9a7a9b1b5acb4aabaadafabbaa9b7aaadb6bf9d0ba7b5000eafb1b49db6bd00bcaea8b7afb18eb002b1aeb580ad0ab50b00aabea1baa8aeb6a88eb127adbca4b4aeb6b0afabb2b7acb90400b1afaca8c1b2b0a5b500b0b6bbac0700b4b200b40206a3b6ac86b007b4adbfb1a7b4abae80b104b7abb2b7aa80b404b2ad02b6a0feb098b0 +a6b034a6b2a7bfb79eadb5a9bab7a2b0be9db6a8bfa6b1b4a2bca6b6a3030abc9cb5adafb9aca8bdada8bbb0b5a8b1079fbfafae08a7b3aa80b50bb0b1b4a3b9b7a9c1a6b4b2a780ac42b8bb00b300bcb7c0a1b1b6ad00b9aaa7b4b7aeb3aba9b1b8a9b8acabb1b2c1a1bbb7abb7b1a6adb2aa02adb6afaca7c2a7b1aebaa3b4b9a6b0abafb0b1a8b8b5aab9af86b000ad80af13b0b3ab0901b3b4abafa5bda8b206aab1baa102b380000612a1bb00b3b6a896b00faeb1aeb300aeacb1acb2b9a3acb3b6aefeb08eb0 +a6b00cb3bea7aca2bcb6b7b3a99ebfaa800003040700038000030c0003b68000059caeb9b4b2af80b20ac3aea5acb4ada1c2b6000a8100180308000fb19eb5b79fb8a79db5a0bea8aab4c0b5a89f0c010a80a63b9ec9b0a70006a6bab8b9a8aab6a5b8aeadb1acb9b5b7a49daebda5c1ad98c9baa500b6a9b0abbbbc9cb8b2b1a4b3c092b4afc6a5aeafc0aba4bab4ae86b080b505b0a5adc88fb5800015c0b1b2aeb7ad00bea2afbcb200b7ada4b30007adafbc96b00fabb3b0afa10400b3afb7a3a8c0a1afabfeb08eb0 +a6b009b3a7b2adbba4bb9d000780000208b70780000506a4baafb5018000020a0210810018b0b1b6a59faec6acaebabbaba100b9b4b3af0399c2a5ba0013800027b5b1b8adabb6b9aaadb0acb0c79a0001abc1ada2ad090500169fafa4a5c0ada4bcafaeafbe9fb6a780b609b7b3a0a7b7adaa9dba04810000158000130daac6a3b7aaa2c9b0b5a2b7b1b79fa5c3b5a4b386b01fa4afbab2b0b3a6bdb0050008afacb400aabbb3a0b600a3b4b5b40cb5a1c1a9a796b080aa0dbfb3bab5ae00abbab3b6abbe9cbcfeb08eb0 +a6b005a9bcb1b2ad0080080fb9aab2c7a1ada6aeb5aaadb5a6a8acb0800046a4b2b5ad000304aeb3bcb59bc2a4a3afa7b800bf9bb300b5c29db5b90099bbaa00b4a8b0b89ab4a9b2b0acaeb5b9ab08bb93c2be000508aca8bcb1bfabaca8bda8a9b5b1b0b500800381000e050c05000b060002b5afada6bdb7aa820001080080ad0aa5b5b9a2b3c0b0a6adaeb686b00aafabb0aab0a5b2aaa9c0ab80000bbbac05a7b1adafbb12acb5b8800004afb6a6b7b596b00fb2bc9bbd9fa5c4b400b2abb1a9aeb2a2feb08eb0 +a6b00eb5abb9a310b798bc99bfa2000c010e8000000b80a61fc8b0b9aeb2b8bda2b0afa9b1a90700a6bcafa9b4c1b3c0a705a4a7b707a4bbb980002815b99b0ca8b1aabfadbbabadb6b2b1b39fa7ad0001b7afa9beacb0b9a2bc97a9baa4bea3b7aaa8b4a580000fb5b0a4b9bfa9a4a6b1a9a50100afb6c680a814a5a9b5bcb0bc9db702001f9eadd18ebec2a0b6b1b286b000b980ab13a7b6abc6b1aab0b5a7c400b000b3c8a8b59e001a800006bbafaec6b5aead96b00fb2a4a8c5b3adb0a900b5aeb2b8b3b0bbfeb08eb0 +a7b025afb10c99b4bd9e130104009f10a7ada60001b696a9abb1b9a1a4baa7b9a1b1aaa9b600aab1be80ad52a6aca200b6beaa079ea8ac0007b0a6be07a1bfb3aaa6abb2b6aba5a9bfb4bdc3ad09aca9abb3aca8b7b1b4bab6b1bfaaafbea8b3b60806bf9b000b0002000d08a3c3aa01b6a0b5a713000f06b0a3b0a8b4bca680af0900069ebc99b2c2a6b9ae86b01facaab6b2b7a5b3a3c299b6bb9db40db1b5a1a7b3c5b1a6bea4c4a3a2aba2acbd96b00fb5bcb1a8b1c1a0b2b903acaaa8afa8aafeb08eb0 +a6b005b4ac00bab3ad80b603a2a6b1c4800001b4b680ad34b002c5bda7b2001700a3c2abb3bcc99eadc10002afa8bcb0acc900a4b4a400cfac000da9acb300b0afb1abaec0abaab7aab2aab2a680a418b0a500c8a8b7afb2a4b8bdaaa8b3a8acb0aab7ba0592b9a0c380aa0408abc7a0b280000cc0aea1b3ba0002aaa9b4afb0bb80ad04b1c0a49dbe800006bcb9a2a99ec5ae86b003afadb5a980ac03b6bfa9c180ac13baa4bb00acaec9acb0a1b7aab7a9afbca9c2b59e96b00fa4b2abb0a1b4a1caa5ad09baa7b5b8b4feb08eb0 +a6b04aae09adb3afb0aeb0b8a9b5a507aea9afacb8ae00aaaeb10001aea7b9adaeb3a8a4c3aaa6c1a609b2abafbc9b0bb3ad07099ab603a7b0b505b0b5adb8aaaeafb1a9b8a7baabafb1b3b7b3b7800007acafb1b3baaba9b280b00fb8b5acb5ad00afc0aaafb5b0bb00afae80b210b30100baaeb8a607a0bfacaeb4a9b4abbb80ac0bb3c09dbc0005a3c3a9c2a1ae86b080ae11b7aeb2b3a3acb1afabb0acbca4af03afa3b980af00b681b004aeb4b699be97b00fb6adb7abb9b0b8a7baada80200b6a5b1feb08eb0 +a6b0800080b300a180b50eabb1afb1a912a5baaea6bbac00b5af800008b8aaafb5baaba9b5ab80b500a180b3800001abb780ad000080b2000381b20400b2b003a98eb01dadafb2b305aa9dbbaeabb4a7b1bfadb4b3aca909b1aabaaeabbfabb400b980b005acb4b000b7bc80000ba5b9a9bca4b1b9aeb6acaead80b106a9bab100c3a3aa80b200af96b007b70004b1a4b6b3aea6b00fb3a8c1a707b3a6b5b6b5a1bcb0acb3b5feb086b0 +a6b00600b0a0b8c0a2ae80b22eb0c3af00bbb1abbe9bbb00adba03b5a4bba9bea7a1c0adb2aea2c0b8a0b000bc9ab0bd08acab00a3b9b204a90ea2b78eb015b2b7a6a1b213b5aeb5acbab4aeab9fafaac10100afba81a926b4b700aba5aeb1c2a10515a0a300b5c0a9b4a9babd9db4b1a6b0acb6aabf91b40400c4bbafaeaf96b004b8a50700bc80b700aca6b00faec29fa5b6089eb79fa2c6a7abafb2a6feb086b0 +a6b00c00bfa1b7b2b1adaeb3aca9b30380ae80b103a3c40ca180001bacc3b3a4b4b1b5afa6aeadb1b2b7a1bf00a7bba8bc00b5b2b1b6b0a7800002aaabb28eb018a5b8b0bbb500bda4b6a5abaaabb7b5b6b9a600c2a59dccb8c080a32417b4b0bcb29bb100a8b90004b295b9bd99aab3a9bdafa7b9a6bcada5d1a90408aba0aeb3b996b002b3a6c3800002a5b0b1a6b00fb5a6abbab49e11a7bbcc9cabc2aca4affeb086b0 +a6b008139dbdb6a8bbb1a79f80b90eac00b8a7b9a7b6a400bc0db4b0000f81000a02bdb7a7b1bba8b6bd9d1380b80daa00b4b7a3bab3a8b4aab8b7a8b38eb00cb9aeb4a2b50400beb3b1b5aba680b70da3a7bf01acb1c1a3a7aab3ba01a080b60999ba09a3baab00ba9dcd8000141700b0afa0aab8aab5a9b2b996b100adb2bdb4a4a996b007a9bea5a912ada7bca6b00fb1acaea7a5c000b1aa9eaeacb9aab9aefeb086b0 +a6b03700b2a4a1b3a8bbb6ca98bcaa05bca5b9b7ba00b3b000adb30800b9aeba0190b9b6bba8b3a1a4b200b498bd0ea3adb1a3a1bcb2b39eb9a6b68eb03faba5bdafabac00a3a4b1b9b8afadb1a9ab050aa5b4beabb9b2aea700b3b6adc100bab7afa90fa3bca3b8a9a600acc8a8b2b0b8a4b1b3a6c1000da3aaafb0beab96b007abadb3a50001aeaba6b006b5b3c7b8b1a9af800000c080b003a8afb8affeb086b0 +a6b03703abbfc1b2b0aca7a8baa4bf029fb9a4a20509aaa7bd00abb3aab8ae0100bcaba7acb0b2c1bfab03b3b6a600a8c3b0c2b4aca2bbb6aac5a18eb024bcb896baadbe000cbcb7a2adbaadb1bbae01adb3aba7abb4afac07b3b99aaf000fab9fafb1800018b1acb3b2c200b4a8b2b6a7bca0beaab2a908b4bab1b0a8bea996b007bcaaa5c5b60015b5a6b00a9fb29faab0a9b2b700a5be80af02b8a8b3feb086b0 +a6b01908009dad97bfafb3adc0aa009db0c0000600acb9abb3be000205800000a980af18b1b3afbf97ad9d0008adb5aa00acb2a4a5ada6b3bfa8a7b7ae8eb03fb69fc4aba1b5a9009dc1aaa5b7aaa6abb700b0aabfa5baacb1a5119eaf1800bbaaabb9c1a5b60500b6b1001400a2b5b1aab6a0bfa9aab407a0bca0a1cdaba7b896b080a805b6bca9b500aba6b00fb8c9aca8b4baaaadb300b7a7adb5b7acfeb086b0 +a6b00da802b7b4b8abacb3a7b9b200c8b780000cbba4b4a5baa6b1b4b0b2abbbb980b211b0b3acabb8b4b702a8a9b5b100c0a5b0b9b680b304a3b2bca6b48eb003afb0a6ba80b50ba5b40a99c1b1b5afb1b4ab0a80af02b2adae80000209000c800011b5acafb5a7aeb5b6a5b5000900a8aeb6abb180af0db6a4aec300b0b9a5c1b0aaa9b6af97b003b2b3a1ae80b50002a6b00faea4acb8b0a2b5afb30700beb1a8afb7feb086b0 +a6b003ad0100c080aa29abb7b6a7ba000400a9b8afacb2bea8a7c2aeb4a7b6b5a8c698bbb0b6adafa90da1c2b19fc400bbb2adb49eb01701a1b0b1afb4adb0b300b4acbaadb8a6b4a2b5aab2b3b4af86b00fb3afabb2aaa5c1afaab3acafab0badaf9eb00bb4b1afb5b1c1990ab597b6b280ba01a9aea6b007bfa700b5aca9b5a9feb086b0 +a6b007bca90300b0b5c89f81000ebbabb0b99dbaacbca2adc5a1a7adb680a913b69ebbaabaa9aec100a2b796bbaba60ba3baa8b49eb003b301c2b480ad02b1aab580000cb3b2a8a9b6b0bbb9bba9c194b686b00fabadb8b3b1b9b3a3b7b0adbe00abacb39eb00faba6aab7a5aac19d0db8aeafa7a4a0baa6b0079ac00800a4c09fc5feb086b0 +a6b003a7a6b509800029a7abbeb5a7b5a4b9b2b19db69fb6ba9eb7b6adb0b3a4bab4b8aea1beb80003b0b4bfba99af04b5b0c4a19eb003b10400bb81b206baa6b603b5a6b280b007a8a1aba4b9a1c3ab86af0fbabca2aeb7a6b3b0ada70013a2abc4a39eb007bbb1adbaada2b7bc800000c280b102b2c9aca6b007baa4a30fbfa7c298feb086b0 +a6b004c4a4b7a7ba800003b9a8b0b580ae0fa9adb0bcb7b9aaadb6a9b2aaabc0bea080b310a7bd0008b597b9b0abadc100aeb29fb1b59eb00aa3b216a9b3a2bba9bb94b780000abca9b5b6c5a8c1a59ec3b186b30facb4b0abb1bea5b5ad11ab99beb2a6ae9eb00fa9b1adafb8b9b1a4b600a9abaaabb1a2a6b007b5b9a80e00b3aebafeb086b0 +a6b02fa1acb1b89fb4af020d00a1b5b7b9afb6afa1acaeb3b9a9adbdb0a4a6bbacb50800a2beb3b7b2b5b0a4af07b1adb9b2ad9eb00cb9b400aba3b9b2a9adc0a8a515800008b5a1b4afa5bdc691b886b008b3a3bdc39aa801090080b604b7aaabb7b39eb000a380b70ca6abb5b1b3b200bdb4afaaafbda6b007a9a4bda400b6a8b1feb086b0 +a6b00aaebdabafbbb0a5aba0bf038000000881000ab0bea5bbadb1b9acb3010b810010b6adc49fada9b5afaab7ab00c2b9a3acb89eb013b1a8b408b3c0a2b5a6b9b5aaadb9aa0308030004800001b8ae87af02b6ab00801009a0a9bda69dbbafb2a4ab9eb00fb6b5b7abaaaba5b6b0b700b1b4b8a6aba6b007acbab6afb905a6b5feb086b0 +a6b010aeaac0a6a9c3a2bebaa0a6c2ada4d1acba800000128000000680000611aca4bab6b8b080ab0dacbabeab9dbdb1ad13a2a0c5abae9eb008a9b5af00b1a3adb6b480ae0aabb5bcb0a8aeafb4abb8af89000e0600a4bf98b7baaab9adb0abb6baac9eb00faf9fabaeb4baacb5a7b410a4b5a3b6b7a6b007a5bda1a7a504a8affeb086b0 +a6b02fb3b0a5c3a4acb4aba5c7aca8b6afa8ada8bfaaacb9acaeb5bea4acbaa9adb5a7b4b8afaca8b7b6acadb600b0bca3b9ad9eb080b105a9b600c4a5ba80b303abb6a9a880b407b7a7b7b3aeaabaaa86af0fb7a4b4b8a3bfabaeb9a7b4abb3a8aeaf9eb00fb4adbfb1a7b4abaeb3ac000aacbba9b3a6b007aeacb0b7b6a702b4feb086b0 +ceb007baa305b4ada6bca59eb007abb3acb400b2b5aeceb007acb9af00bbb49ab9a6b00fb6b5a0c2a4a60ba8a0bda9a5b6a6adbafeb0 +ceb007ae00b0aab3afc0b19eb007b6a9c4aba10a9abdceb007b1abb602acbbb7a9a6b00fafa6c2a8c1b200bcc5a5bac4adbcb09ffeb0 +ceb007a019b1a6b1b7abaf9eb006bba99db5b909afcfb005b7b3b800b1aa80b1a7b00ebaa8afa9b3ae009fbb96bf9eb0b1bafeb0 +ceb001b50080c003b0a7b2b59eb007a8beb4b2a5aa00acceb007b5a4a8c300acb6b7a6b001adb380b20ab1a9b909b7b0b6b2c2a9affeb000b0 +ceb007bb0b9fb3a3b7b9aa9eb007b2bca3bba8b500c7ceb007a3bbb6b014a4a7b3a6b00fb2a4b9abb9b29eac00c2a79baebab8aafeb0 +ceb007ae00b6afb9a1a3b99eb005a2aabba4bbad8000ceb007b5b69da200b6c1a1a6b00fb6b19fb9a3b1d4ac00a7c1bba2b8a7b1feb0 +ceb00703aabfb4a8c1b7af9eb007bbafabbda6bcba00ceb080ad05aec405a5c5b4a6b00facb4aebbaba89cb3b700b9aeb7acb0b9feb0 +ceb007acb9a6a7b4acaeb39fb006a5b4b0b3a5b4b3ceb007abb9b3a9aabf9eaca6b00facb8acadaabeb4afb1b0abb3ada9c2a9feb0 +8eb000b180b002b8a9b288000601000a000dabbd88000616000c0008a6b48800070300020005aeb407800004010003010481000b10000400b7ab0d0007000f02800001040380000002800006b0b8000206000887000408b4a20308810003040003068000000880000401bbaa000a880006070010b1a7000586000601000a000dabbd88000616000c0008a6b48800060300020005aeb98000810282000102078000090700b7ab0d0007000f02800001040380000002800006b0b800020600088600030100bea78000000d810000048100000381000401bbaa000a880006070010b1a7000586000601000a000dabbd88000616000c0008a6b48800070300020005aea6178100000282000102078000010700a6b0 +8eb007b7a5b2a8b50b00048600000d81000397ba00088600060d00010005aeb987000105048000030203a5b98100021900178100050a090100070080b08000020c05108100000580008008080007bc9a0016000103880003afa4070580000102078200011408810005bb9c0104000a8700040700a4ae028800000d81000397ba00088600060d00010005aeb987000105048000030203a5b980000a1500030004080301030015800001bcb08000020c05108100000580008008080007bc9a0016000103880003c99d080e8000010308870005bb9c0104000a8700040700a4ae028800000d81000397ba00088600060d00010005aeb987000105048000040203a5b90c8000000480000603000301030015800000bca6b0 +8eb006abb4b0b2a8000f8a0004c4b90005038600000280000417acad00018700000f80000807a9aa0012000600078000020600038000061600bfae1200178000020a00028400041aa8b5030c800002060001860003c6a102078000030900070580000009820004bdb50600128800800105bba001040602890004c4b90005038600000280000417acad00018700000f80000207a9aa8000000d80000205000c80000209001a800004bfae1200178000020a00028400041aa8b5030c800002060001860003b0a4000c810000028000000f80038000060c00bdb50600128800800105bba001040602890004c4b90005038600000280000417acad00018700000f80000207a9aa810004110700060280000209001a800001bfaea6b0 +8eb007abb0acb5b2aeb5aa86b007a9caa798b3bbb59f86b007a8bcb296adbfabb286b00ec291c1a2a4bfacbfa4b9b1a5aeb7bc80001eb39dbea49facbd8fd2a19ec0aaafaeb5baabadc6bca3a8a3b9a8b8b597c5a186b003a6b4b6a880b111bd9d0006a7b5c0a8c9a8b3a79fb4bfa9a5ba86b007b6aba2bebca4aca886b007a9caa798b3bbb59f86b007a8bcb296adbfabb286b02fc291c1a2a4bfacbfaeacbdaec3ba00b8a8a5bfa5a9c4a8a98fd2a19ec0aaafaeb5baabadc6bca3a8a3b9a8b8b597c5a186b017afc1b4a4a0cb000811000ca300b7bda0b3a79fb4bfa9a5ba86b007b6aba2bebca4aca886b007a9caa798b3bbb59f86b007a8bcb296adbfabb286b009c291c1a2a4bfacbfb9ad80a50bafb1acb4a8a5bfa5a9c4a8a9a6b0 +8eb007c2a0bba5b0a5b4bb86b207b5a8b5baafaeb2b886b207abb9adbabda7afb686b22fa0b7bbacb8a6a8a5a8b4b6b4a5a8b202b3a5caabb4bfb4a4c0afa2b3bcb5b4ada7afb5aba3aeb8b2a7b7adb9a4c7a0b786b206baafb6a5bcb2a580bd0cbb00a5acb3a7b4b6aac2b1adc080aa86b207acb3b1b2a7aec5b786b207b5a8b5baafaeb2b886b207abb9adbabda7afb686b22fa0b7bbacb8a6a8a5c4a9b0a5a3a90aabc0b1abb4b1acb5b9c0afa2b3bcb5b4ada7afb5aba3aeb8b2a7b7adb9a4c7a0b787b214afa8b3b6a7b5b3b5aea9c508a6b1adb6aac2b1adc080aa86b207acb3b1b2a7aec5b786b207b5a8b5baafaeb2b886b207abb9adbabda7afb686b20ca0b7bbacb8a6a8a5adafabb4b980a808bdc0b1abb4b1acb5b9a6b0 +8eb007ada2b4b5c3a5b4a586ae07b4a2acaeb1b0a1b089ae04a1a7b8b1a787ae2ec2a0c1a1b2c4b6bcb1a0c3b2b1bb00aeb0a3b0ada4c0b0aca6bfb89aa9baabc3a2aac5b7a3a9b4c1a5b7a5b2a8b5ac86ae17a3b0acc194b3b5a5a3ab00bcb9a1b4aea9b9aba99fa0bdaf87ae05b7a9aabea99487ae07b4a2acaeb1b0a1b089ae04a1a7b8b1a787ae2ec2a0c1a1b2c4b6a8af9acdbaa6b300a5a7c2b5a8b4aba8aca6bfb89aa9baabc3a2aac5b7a3a9b4c1a5b7a5b2a8b5ac86ae06b1a3c6aeadc4ab80a50eb7b1970ea2aeb8a9b9aba99fa0bdaf87ae05b7a9aabea99487ae07b4a2acaeb1b0a1b089ae04a1a7b8b1a787ae16c2a0c1a1b2c4b6aabcb5b6b5a9acaba5a7c2b5a8b4aba8a6b0 +8eb007b4baa6a8a9b5b8ac86b200ad80b800b580af01b5ae86b207b3b6b9aeb0b1a9b986b22fbc9ab6a0b4b1b99ca2b3bda4a5b700b8a4bcb6b2abb6a9b0b4b3a2b7bfa8afb4a9b5b2a6aab6b5ada2b2b4bbada9bcac86b200b480b614a4c8a9b3a9b7a6bc00bab6afb1b0afb0b3c4bda2ac86b204b697b3b7a980c087b200ad80b800b580af01b5ae86b207b3b6b9aeb0b1a9b986b211bc9ab6a0b4b1b99ca4c6ba9cb0b2b100c3a180ae1badb4aec5b4b3a2b7bfa8afb4a9b5b2a6aab6b5ada2b2b4bbada9bcac86b217abb2adbb97b4a8beb3b7aa10a9bbada6b0afb0b3c4bda2ac86b204b697b3b7a980c087b200ad80b800b580af01b5ae86b207b3b6b9aeb0b1a9b986b211bc9ab6a0b4b1b99ca8b1a3a9afb2beaec3a180ae03adb4aec5a6b0 +8fb006a7c2b0b8aea3b986b107b3a7b2afabb4afad86b107a8b1a4b8b9a9b6a886b12fa9b2afb8afb0a4b7aeba9eb0baadb2adb9a9acb3aea9baacb0afb9a9abb6a7b1a9bbaca5bbb2a3b8b4b8a8a2b6b8a1b386b10bb7a4b3b49db4aabaabbeaf0080af09a9afa8bba8acb3a6b1b686b101acb980b203aca5b0ab86b107b3a7b2afabb4afad86b107a8b1a4b8b9a9b6a886b12fa9b2afb8afb0a4b7b3aeabb1b5b6a605a2c4a2aabfacb1a9b0afb9a9abb6a7b1a9bbaca5bbb2a3b8b4b8a8a2b6b8a1b386b117b4b0acaeb9b3acadb2aab200b6a5b2b4a8bba8acb3a6b1b686b101acb980b203aca5b0ab86b107b3a7b2afabb4afad86b107a8b1a4b8b9a9b6a886b117a9b2afb8afb0a4b7b3b6adbab0a2b5ada2c4a2aabfacb1a9a6b0 +8eb007b1b2a7b8b0b5afbb86b00fa3b8b4a5b0b5a8b5aeb1b7b3aaaeb1a986b020b4adbfb1a7b4abaebea0afb1b5a5bfaaadb3afb7afa9b9b0bb98bab4a5bcafaaaf81b20bafa8c1a5b7b4b8acaaa1bfad8eb017b1a7b8b5a4adc1b0acb7aba900c29ebaaeabb4a7b1bfadb4beb017afb1aab8b1acab0100b9afabafb8a9b5a7b8b0b9abb7adb697b01dada7b9a6bcaeb2a8bf9e0cb4b1a4b8b5adaea8bca7bea6a2c3adb0afb5a5efb0 +8eb007b6a4bbafb4b6a6a286b00cbeb59ac3bfa0b9b1b5aca8aeb480b000b886b012af9fabaeb4baacb59eb9afb7a7aaacb3be000480000005810016229abea9ada6b2b9a2aebeacb3a9b7a3a7b0bcb4bc9ab18eb00bb3b9abafc0b49fabb19dbebf800009b5a2b5acbab4aeab9fafbeb017b2b3b0ada7b7b4b008a9b2aeb6a4b6b2caa1b4a1b0abb2a496b01fafb9bba8c0a6adb0b9b1c300a5b2c1aaa3bdacbaa2b89ebfbeaaa9a8bdaab8baeeb0 +8eb00798d1a5bb9d001db486b000a980af0bb49faab7afb2b6adacb6aca387b01ab6b5b7abaaaba5b6b5a8bfa7bd16000700bba9b6bbadb8b60500038000000781000ec4ac9abdbaa4b5babeb1a4bab1aebc8eb017aba6b2b7aaafbebfbdb79daaac0fbab8b6a5abaaabb7b5b6bfb016aeb6b4b5ad9fbb00b1a4b3b0b8b3a5b2a0c1b1a8b1bcb596b01fb293b8b2a8c3a3b9afa3ab00a9bcadabb998c1b2a9b9b2afa6a2beb3aea2b4a7eeb0 +8eb007b8a8a4bd03b7b2a686b004b4aabbb1c28100070392d2a9a1bebdab86b000a380b708a6abb5b1b3bab0a405800004aeb5c4a90c800004010007b8a480b207b1beb2aba204000a800001c5a580aa05b2a5b1aabf9a8eb00cb6a3bab0a6aebf91b7a5a8c6ab8000059db3b1b5aba680b700a3beb017aba8afadb7a8c8a502b7b8a9b49eb0b1a9b0adb3c5a8a4b296b000b280b901b3a08200160f0a0011adaeabb0c3a4a9b7b9a6b8bdb7b0b3a2bfb4b1eeb0 +8eb002afadbb800002aeb1aa86b001a2c081000aaf0103b5b2a4afc4b0a1bd86b009a9b1adafb8b9b1a4a3bc800002051305810013a8b0b8bcaea6b5b0b7aea4aaaeb6bbb9a0bab4af800000a980b804b0a99fbfb88eb017adb7ba9cb7abb9c29dc3bca9acad12b0a4b1b9b8afadb1a9beb017b6b8ac9bacb7bcab00b5b2b4aabeb0bab4c4a59fbd9bbcb296b011ada7b8af01000c00b4a8b7a3ae0d000c00058000010a0080a880a505aab7aeb9a3bfeeb0 +8eb007a3bdad06bcb59dbe86b008b2aea5c8a41500aea080b704adafa9a2aa86b02fbbb1adbaada2b7bcaa04aab8a2b2aca9b1aeb7a7bb9fb2bbaeacaeb2b9b8afa9b59cbf99b2b4a2c60900afadbfb0a8ac8eb017b4a9aab6b5aba8acb7b5a1b0bea800a9bcb7a2adbaadb1bbbeb008a7b9bdabc5a700010980000011830004aeb5bab3bf80aa96b001b7ae80001bb7ae9eb2adb5b0c4ad9dc4a2baa1bbb5a5bd0508beabbfa2b1b9afa5eeb0 +8eb007b1bba700a6b4afb486b080b203b4acb70080ad07bdb0a6a8b1b5b6b986b029aba6aab7a5aac19d00b3b1b0acb8acb0b5b3acb99fbeafa2aeb8b2aca8a3adb9adb2b8bbb9a6b8a8a9b8800003b0a3c1a88eb017acc0b6a50704000507000501000d000d9dc1aaa5b7aaa6abbeb003aeb69e0a80001103b4a1c9a500b7b3bdb8b30004a1afb0b3ab96b01faf000fa3adafa7c3b2b9999cbdb1c0b1b2b5a5b6a99ebda4000999c6afa2b4baeeb0 +8eb007b2a406b1afb5abb286b00fb3aeb1b700b4b5b4a8b1b7b0abb6b7a386b02fb4b1afb5b1c1990aaeb89eb6b3a0bcada9b7adb3b2aab6b2aeb4aaaeb9b3afabb3adb5aea4baabb1acbaa9ad0ab0a0b98eb017b4a0010500b3a9b3aac19f10020002000a99c1b1b5afb1b4beb0170b001100acb4b8adbd9cb9afb1b49db4b1acae00b3aeb1ae96b01f01029ec4b0afb9a4b1afb2bcb1a9adabacb0b4aebaaeb2b1b5000fa7aeb8a9aceeb0 +8eb017b2ac02adacb6a9b8abafb3b9aeaab4aeb5a5afb100afacb28eb007a5bfa5bba7a9030086b00fb1a8baa1bab5b0b6afb9a1b9a9b3aeaf86b007aeadbcb200b0a1b786b014a8acb0a5b4a5c0acb70500b5adb3a8b7acbba4a9ba8200160701040006abafb1b4acb8a8b2a9b3aaa6c3a5b3b7b0b4a6b006b6a9acb6b1af0580030200a1bc80ac11b4a9b0acafb4b2b5abb1b9a8b608a1c0a4ac8eb006a9bab0adafa6c3800000c380aa16b7a3b8b3afbca1aab6b2acb4afacb4a5b8bc98bab2a7bf80001abdc1a7aeb2b1a9acbab0acba9fb3baa2b2b6a7baa9a7adacafb2aed6b0 +8eb017a7ad00baafb0baa1b9ada3a8acb2b8aeb2b8b700b6b2c0a48eb007c59db5b6acb300ab86b003aec1000f82000707a6b8a7bdba98b886b007b6a9ada8a00fc3ab86b019b8a8bbbca8c1b5a5ac00bbb2ac00bdadb7aab3bdadabc20004a680aa03abb2000482000bbfb79ebec6aca1aba7aeabada6b01fa6bab8adac0800b9adaab7aab6b1a4c2b1b6b59faab8afaaada8b2af00aeabc28eb005afa8aababbae800005b5a8b4bb000982002d0906b5a9b2afb2b0acbba9b3c4a4b4b59cb0099ca1b6a8b4afaab7b3a6b6abbeafacb2bca8b3a2b4c1b7abb0b1a3d6b0 +8eb00fbb08b1a0abb6aab2a9afb8b9b2aeacae80b005a308a4a1b0c28eb007a4acb2a3b706b6b586b0030400b99b800009acbb9bb6ba95a8b0b9b386b007a9bba3b9bc00a5b286b00dabb3a5adb4a199bd07a6c4aa011881000d0900060002acb4aabcb9baa8030280000117c2810009b5aa95b9c2afb2c0aeb4a6b009b5aca5bf0002bcacb0cc80a813a9b0bba6a3b2a7cab7aea0bdb7acb5b702aab1a38eb03bb9a6b9a5b0a919b3b4aba8b9a1b5aa07b8bab9a7afb99cb8a7b4b8a2b19db5b2b4a6bcb7a317a6b7bca0afb8a5a7bfb5a0b9a2bca1a6d49db8a9a4ae80b501b7bcd6b0 +8eb0179b05b1afc5abadb0b6aeaaa4aeb7b0b5a30a0cb7afb3ba9d8eb007bab6baacb500a0ba86b000ac80c10ab40004abacc2b5afbab90e800086b007aab0c09fb30ba2b786b015b3b0b1b0acb1c602b9bca1aca7bba9b0aca40ea1b6b3800017bc8bb7a50010afb1bb9ea4bcb0be06b6cc93adb6a8a7b7a6a6b007a7b7b200aeadaab281000210050880000f0700baa3afadb4a9b3ba97b4ac05b8af8eb03dadafb6a2b6ac00a9abc1aaafc2b00100a8a9b1a8acadc8abb8070009b8b6a2bdacbb9cb9b600a4b7b2b8aea6bab0b2a9b7b0b5b6bb9eb1b7a8b9baaca6a780a6d6b0 +8eb00bc900b8b3a9a3c5a4abb2beb180b209a4b8bc00adacb2b1c0a88eb007a9b38cbea904b6ac86b000ba80a208ac05b2abb8aaa3b8b1800001cdaa86b007b5adaea6c100beb286b000b381b480b1209a00a69fb7bca8a4b8b2b6a903b2a6a3c0bab9beab03b5aca8b1aabea8afb4b69f800006bac0a6b5b3b9b7a6b01fb5be0007b0a2b7aeb1afb300a9a2b5b6c1a7a8b50006afada4afc6a8b600b2ad8eb021b3a3bcb8b200b0b7a8adaeb6afad00b7b9bca2bab1aa9eb9000aadaab3bfb9a1b8a680ae0baf00c9a7aea9bfb0abc3ad0380000daea1b4b9a7acb8aea3aebeb5b0c2d6b0 +8eb001aa0380af02aab0058100000780000a03000500c0b7b0b7af97c78eb007b2a9c7b7ad00bdad86b00fae9ecabe00adaeabc0aab300aebca9af86b007b3b6a0c0a900b8aa86b01fa6b6a3aeba9b18b0b5c89faabebc94b8bb009fb2c5a1b49fa3ac04b1b4a7b5b680b40dbd9ab9abb7bc00cd96b9af9fb0aaa6b003a1b400ba80b400b080b309a707afa8beb0ada4aebf80000ac099c0bab295bbc000a5b58eb02ab3b4a8a9af0ab5a6b4b7b09fb1bc05b1a5a7b3b6a6b3bc00bda9b2bd9aacaeb4abafb3b5af00adafbaa7ae80b91291b8a800020009b4a6a7bfa5b2afb0bcafa0abd6b0 +8eb00e050009010f00b3b6b2a6ada9be9a228200040b030013008eb004a9c3a2a4b1800000a986b00fb3bca500c0b4b2afa8af00b2c6b59fb286b007b1aac3a5ac09aeab86b016b1abb4b6adb900a0a6b3b2b0aab3b0aea800d0ac9ebdb380b40700a0b5a8c696b3ab80af07b8acb5afaa0b98b881b901abb5a6b01fb500bdada5b4a2c0a6bb00acb6b595c2b20e00b7b4a8b8a8a7b6c79fa312a1b88eb03fa3b4bdb0af00adb8b6a3bac4ab9c05aac39dbca6b4b018aca9b1b7b6b0c1a6b1a3b7b6a3c00097bab4aab8a1a5c0bf000ab2b49cb6b1bf001196cea59fbebdaad6b0 +8eb006afbbaaafaeb2b680aa0eafbca5b4ba98bbb5a6b7b29dcaa1ba8eb007adb8a9abbdad00b887b00aacb009b0a8b3acb0b600ae800001060486b007afb2afacb400a4bf86b015adbaafa4c2a800bcb5a7aabab0adafb3b007abafb3b180ae0e0100b2a8b8a2c7abb5b4a7b6b0a9bd80ad0607afada9b7abafa6b00f00afadaab5adc0a1b300b0aeb6aabea680000db4afa9b6b3aab8aca7bbb000c4a28eb00ab5aba7b1b20700a9b5a4ae80ad0712acb1aabba8a9c7800010010600a7b6b1aea6b8b9aab2a7ad04b5b380ad15beafb4b0aa02a8aeb6c0a4baa705a9b9ada9b9afa3b5d6b0 +aeb003b6acaead80b10ba9babcada8b6aab1ac00adb180b62faab0a3bdb5b1bb00b7a8afb7a8b200050aa8b900b1adaeb0b6b5b3b1b3b1afb8ac02abb1b4a5aab9a7c0adaab0b3afad80ae0300acaead80b303b0a5bfa780030eaab1bca9b6ab04a1b7bda3b5b9acb880ac0cafacb0adb3ae0cada2b4b7b3aaa6b00604acb0abb5b3af80b02700a9baad9fbcb300aeb0b2bbb7b0afb3aaaeb1af03b0b4a7b3bba7b7abb6b5a9c19bacb5a0bbafa680b210aab4b700b4acb9a7aeb7b2aeafabb9a4b7800019bdadb9ad00b6aea5b6b1adb1abb505aeb1b0aeb9aeaab3af02b280b405a9b5b3ae0004deb0 +aeb02ab1a6b0acb6aabf91a5acbeaeacbaaa0c06a7abb2bcbaaca2aaaca712a4bcbb9aba0a00b0a0b7000bb5b7b080ba009380ae03b7a8acaf800000b580b224b7b9a7acaeb2b7b4aaacbab7b400b5aab8a4baadc1a6af00a3b99eb6b5ac0f00c49802000980000fa8b5b0a9afaba7b6b000b2c3a1adb2b4a6b0000080ba11bcaaa9beaba803acaab0beac00b2c7a1a6af800001a9b680ae22aabe00b2afc8a0b0b2a7b6b99fb6a7bbc3aabfb3a0c1acaeaba7ab0c00bbaeb6b1b29b80b427b2b0b8af0400b2aca5bf00bba5acb1b6a9bdae000409ada6b1a8aabf9db4adb3a5b0ada6a10a00b1deb0 +aeb020afa7b9a6bcada5d1afb4afadc2a900a40004aea3adafb9b7bbaf12a4b1a3b2b9ae80000fc4b1a50eaca6babca4a7bbbfbca3b5af80000dc8aaaba0c6b2aca8b8afb1a7beb680a92aa400aebca7b2a9b596bcb903cfa4b1acb1b700b1b3ab05c7ada30ba0bab4b8bbadb8ac020ab0bab5b4a4b4a6b01400a7b69cb0b79bbe0100c9afadacae04b2a100010c800016bdaec7a4aa05199ebca4c1a5b3c7a4b8b5a8b99ca3a4af80b615b2abb0b4b2bc911aa6a8b6baa6c0b1b2b8b1a7bcaa1180001f090005b9a4c3bd9cb3b4b80500a40b0709a8aac0a1b9b0b1b8aebcc5ada4b4b1deb0 +aeb00eaab8aab5a9b2b996b3bbafa70016a780b706ab0800b1a7baa380a808aaadbbbaadacaeb50a80001711a3a9b696b901afb1a4a2bb000304ad9cbbb4b1afa1b9bc80af01b2b580ae1aa9afb11500a3bbaebfb4b7b8a600aaa6b8b4a3aebd00b9acb2a6b180000fb0c2a493b5aeb2ad069db1a0b9a8aeb7a6b00eb405aab5beadb5ab060099bbaeafb1800001b3c280003113aba2a79bc20096aabeaaaeb9bc9aa4b3acaeb0bbbfb7b5a7aaada5bdacaeb2a9caa00bc0a4b0afa8b4aeb0a6ada3b9a2bc80b10babc5a0b9a3a7bfb49b02aca380b602a3981580000bbfa0c0b3a7b5a2aaa3c2aab9deb0 +aeb02eb2b0b8a4b1b3a6c1a89cb2109daeafb0a8afb8b2001000bbafbd00bda2a8b7afb4abb4a3c3aab3b7aec6a005b6a712800018b4aabbafb5a9b6b5a4bba5b4a4c4a6c294b5c0a8b89200baa980b10eacb193c4b2a2b7bfa3b5b3a6bf00078000120cb0a7b3a1aac9b0abbf00a2cca4bbae9fc2a5a6b010b6a100a9bd97bdb3b4bbbaafaea9b5b604800054a7c7acb5b3bcba00c0c1a5b1afb300010500bfa9b30900a7b2a3c3b1adb0bda3b2b1a3b1b49d0100a6beadaeadb7b9c6b1a2a9b6b0a3c797b5baa5b6a6001aa8c0b2afaeb7afc7a0ac0c0700a5b1bca1b2c6aca6a9deb0 +aeb016b6a7bca0beaab2a9b50c00b8b3b5a5b7c0acaba9c2a0b08000060d02a8b9b0aead80b20cb0a2b2adaaa5b0b3ab070002ad80b416af000507acb2b4b6a4bbc7b3aea7b3acadb8b0aaa9d2ab80000ab3b8a0bcbfafb3b2b6b2b480af18bfa1b8b1afbca8a4c3bbb2b1bc9f050003bb9ca5c7a9b3b79fa6b002a6beac80000db5a8aeb5b1a2b8a4b1ada8b4a3ad80b1019faf81002fbca0acb2b0b7b5b801b8a20b0002000eafb6afb5b0acb3a9aac2aab9b7aab99f111000b2afb3b0a494b2c6b898babba581b20205000e80b015b4a4b6b5b1a8b492b7acb0b4a30e00b5b1b9acabb6b5deb0 +aeb016aab6a0bfa9aab40700b6b1a1b89bbdb2a89cc3af9dc3b180b481000c0501000e050006090305001302800028acc70005ac9fc7b1000f00bba5a4d0990005a4bfaba8b9a7a1bdb299b4bb0900abadb2b89ebea5a2bd80ae0bbba1b3b5a8b5ada9bba89cb780000b0e00c4acb1b5b8aba6b8a8b7a6b000b780ad00ba8000120b00a0c4abadb5bea1b9b2b9bda4bc0001b1b7800005bdc0b4aea1a9800006acc2a1c0a90ea780ad1ab89eb0b3b2aab4bb9eaeb4a6b5b000a30500030006000a0c00010f80008001130700b5b89ab8abb3a4b8b3a3c1b0cfafada7aeaa80b0061000a3b0bba6bbdeb0 +aeb080af25b6a4aec300b0b99cbdb3a3beb2aab0c1a7a9beaaa4b3b5000bacb3baaab0b3b1b0b1b0a4b4a780b203b4aca702800005c19bb400a9b381b210a2bc09a9adb6aab7a2b9c199bba3b6a5b68000231400aabda1c0b4b2a6b6adb4acb4afacb0b7a40a0700b1bda8adafb2a8bda4abbab1adb1a6b00ab9a3b9af00b6aab00002038000000683001e0c00b3b5aeb5a8c500aeb7a6bfaf04bab0abb1ae0300b3b2b5a8b7b3acaeb580b026b6adb1b6b00100b7b4b3acb3a5bcaaa8beb3a9bab2b6b2b0af0200b9acbba5bdada9bba8afa1b080b405b5a8b6b09fbe800002a8b1aadeb0 +9eb01fb3a6adbca8b7aabab1b3b9adb0a5b7a8b8acb0b4ad00c0a6a7b8b0b9abb7adb686b000af800080b310b0aeb3b7acb49eacbaacb5b3b8afb0afb681000eb6b400aebfa2b3abbeb000b9afb3ad86b000ad80af04b0b3ab090180000db7b6b2a6b4aab1afa10d04001700a6b037b4adbfb1a7b4abaeb2b1a7b8abb1afaab3a1b10500bbacb0aeafb3b0ba9db3b0b4aca6b3b8aaadb4b69bbab101aab1ae0100b8aeb5c6ac0186b080b10db5aeb1b5adafb000b2acb8b3a7b586b00eaea1c2a9c3a30500b1b2b4b3b5990b800016b9a4bfa7b3c0abaca9b8aea70f00b5aaacb1acb3b2bda6d6b0 +9eb01faac6aba4b6a8b6a8b2ba9eaeb6b2b1c0aabfa60009aaa2b8caa1b4a1b0abb2a486b003b3000aa980aa17b3a9a5b6b9bdb9b39eb2b3a2b8b4a6c1b60508a2a60bb3b180ae07bea004aaabb7acb386b080b507b0a5adc88fb5c2058000000d8000080b000408a7a0c892bfa6b006af9fabaeb4baac80b509a7bcb3afacc2aebbb50080b3209bb7b2bcb2a5b2a2c110a7a6c1b5b0a9adb2b4b5bbb0a8a70eafb4b1bbafb3b493800086b00fb5ada4b3bea3b5b10cb3baa9abaab2ad86b023aec59ea9a2b9bc00aca9afb5a8c6ae05b000b4aea3aea0b4bab4a2afc6990900b8bda7bc81ad00b7d6b0 +9eb01fadb9abb0b7a9bebdae9eb7bfaba8b2a9ad000aa9b1afbaaab2a0c1b1a8b1bcb586b000b580000ebe0b000f03049fa7a4abbfaeafb2a980b302b593b281000dbb02a2a8bba8a6b800b3b9aba4b986b017a4afbab2b0b3a6bdac9dc2b3aeadb4a7bab2aaafb6b9b1a9a6b015b6b5b7abaaaba5b6b4a4b1a4b2acb4b2990400aac8b980ac00b080ab02c3abae80000caab2aeadbcb6b5b1a2bbaabbb2800008afb3b09dbbacb804bd86b002afc2ad80a70ac19c0900aba9b3b7acbca586b027aeb9a6c2b299bc9e0faeb4a8b6b49603afb5adb3c80e00b5a5afb9b1a2bfabbe00109eafb19dc0a3d6b0 +9eb00ab2aaa9c2a7acb298aeb2c6800012110004070018a7a4b6b1a5a9b0adb3c5a8a4b286b00baf001496a60e00a6b5b10113800001b9ae80b115a8acc2b6b8ab05000700b7a8bfa9a81600a3aebbb0b286b00aafabb0aab0a5b2aaadb6b280a80ab4bba9a0a7bbadb5a5b1afa6b000a380b72ca6abb5b1b3afb4b2b3b7afa1b0c900b3c092b5abb7afaeaabab2a7a50b04a6b0b8b1b2a6afbda4b09ababb000880b005b8a1bdb7a4a186b00fa0bab2aab1ad11a902afc3a9b8b29fb986b013b2b1b6a0c2be8ed10008a8b9c2ad00bbb5a300028000070f00bfa3b9aeb7aa80a502aba91180b402b0a1b9d6b0 +9eb008b9abaeadb7b3bcb9078100081900aeb4bcaea0001780000815b4c4a59fbd9bbcb286b027ae0008b6b900afb39d0b0800b900b7a6b5b1b7aa95b2acb20a0406a1b1c7a6b0a907acb4adb1b2ab86b000b980ab14a7b6abc6b1acb2a8b9b1a5aeb8c4b4a8b6b1aeacbca6b033a9b1adafb8b9b1a4aec0ad9badb4bbae00b2b8a4bab1baa3acbaa9b1acb7c4a700c0acba9daec3a5acaeb4b9a9b1b700aeb1b8b580000110b386b00fc3a7abbdb80004a500b69bbda0aab2b486b01eb6aeada6b0c0b3a2b700c6a7990209a6b0beb900b0bc00aab1b4bfa2b3b0b780bd03a6b2a5a980b600a5d6b0 +9eb004a3c4aab3b2810015a9c2b5a6b4acaab7aab9b1b3a6b3b29400aeb5bab3bf80aa86b000be80000ab29f00c7a6bc9d0ca8b50180b302a4acb680b802b7bda681000c02a2a7b1b0be00a6b9b6a3c5ac86b009acaab6b2b7a5b3a3b7b980aa0bafb8b5a2a4a8b9a1bbb4bca1a6b011bbb1adbaada2b7bcb399b0c8aea7a800a7b380b01fa1b4a1bba8bcafaeb1aca0b2b1009fb8b5b0aab6a8c79ab1adafb300b6a7bbaa800001b4a386b003aab6b2b0800009c1af09aba6c1a7acca9e86b014b3a4b5c3a59fb7b1b2b900b3caa7abb4acb300b3b7800010bca7b4a2aeb3bea2a6a7bea8b7a2bd9cbcd6b0 +9eb01fbfa0bc0002aaa4beb2a2b0bfafbbada9aaa2c0aab4b3afc9b30004a1afb0b3ab86b00bb2010caebf00b0b2a81500ae800406a0aeb7bca5a2ba80a510b5ab10b700b9aeb5a6a0b8b6b39abaa4b986b003afadb5a980ac09b6bfb5a3b1b9b4a8b0bb80b805afbaa7aaa8b9a6b00aaba6aab7a5aac19db5b4018100180500bdafa3b8bea9b9b3b5b4afa3b0adc4acb80013bea8001180000e9fccb1aaaeadb3a9bbb3acb8afa0bf86b00fadb8a2ba0cc2a4b502aabb9fb9b7a6ac86b027aeb4baa4abc0afaea5b800bba0abb3aba903b7b10304b0a8bab8aabda8a9aabeb0aeadaf0ca4adb7d6b0 +9eb01fa60300b6a5bab0a9acb4be9facb0b4b0bdacabb7a8b5b2a3b1acae00b3aeb1ae86b0800008aeaa0012a1b6b3001280000ba3b5b4a7b1b9b3a8c0a2b4b280000c02b0a9aeb7b4aea7b3c0a4bba986b080ae08b7aeb2b3a3acb6a4bb80ad0ab3b5a7a8b0b1afaeb7b5afa6b00eb4b1afb5b1c1990a001000b403000d8000800581002103abb0a6bbb5a9bb9eb9b5b200a5bbb2000bb7af00acb3b4aab2baa3afb1b2b1bba986b00209000f8100020b0004800004b5adb2a8b986b009afb9aab5b8a8b1b0b6b7800005c2abb3b6ae0b800000b680af10b3b0a5b5afb0adc3a2adb6a7b80009aaabd6b0 +96b00db1b3a3c49fc1ad0200b5a8c4aeaa80000207000c800012b1a9b9aeb6b0adaaafaab09fb9b500bab19eb486b001000180af01b2af81b106a712b4abafbbab86b002acae0480000ab8b0afaeabb4a7b1bfadb4c6b009acb0b1b9a8ad0b00a710800008aeb6aab4b8a7b6acaa80b62600afb3b2aa9fb4b6abbaa600baacb500040700b500b2bda3b2abbeaaafb8afabadb5b0a7c0a70580000a0104000100a7b7aeaf08af800002b2b0b18eb007aca7ae01afa8c1a98eb007b5b1a7c19e0c02aad6b0 +97b011b4b0abb49c00b5b4adbba19b1805b000b29e80bd1200b2a1aa03000eacbcb3a8c49fb2ad00abd0a086b001000180af01b2af81b106ae9db2abaeabaf86b006b2bda30b16a4ab80b506acbab4aeab9fafc6b006beaea3a906149e80001db3b4afbeaeadabadb0b6b4ada1b3a304a2b9beb4c0aab59dc8a300b0000f80001204b00aa3aac8a5b500b4b88ec2aebab7a3abae800008a4b200b0c0aea9aeb080b10600b1afb303afa78eb007b8bbba00c3ab97b98eb007a9b3adb1baa49ec2d6b0 +96b027adbca1b2b50bb7adafaab5bcc597a90200adbcad9009c9b00f00b4aba9afaab9adb1a9c000b8b4ad86b001000180af01b2af80b107b2a8d0a7b2baabae86b002a7abc0810009b1b4b6a5abaaabb7b5b6c6b03aa8a2bcb903ab00bdc59ba5be9fabbca7abacb99cc2bcb5b4ab00a8bea7b0a0b3b5b4a800ac04aeb40bb2ad02a1abb6b7a719a7adc7a7b3aba9beb2800012c4b9a9bea4a9a6c0c199b8b900aeb9adb100b68eb0079dc2aaaca9afbfb78eb007b3acb0afabb9bca7d6b0 +96b027b1a1b7b500acb8abaeadb1abafbab408b4aeb8b9b5018bc200b6abb8a9b1b3a8b5a0aaa703a7abb486b001000180af01b2af80b107b2aba0b0b3b7b2b186b00cbba99dbe0b0102a5b3b1b5aba680b700a3c6b03fa9bfaf00b3a6bea8a3c4b4a6b3a1b5b3afbaaeafb09da9afb30baba8ba9cbbb3afb69fbeb0abaf00a2ab01a6c4b9ada3a700b3abb4aebca5a9b50fa3bda300028000000480000aaab1b30016a3b5aca310a18eb007b6b1bd9fb6aaacae8eb007b4a4afb9a7a3aeadd6b0 +96b00aacb7a1b60ab0afacb2bbad80ab06aaa800b0bba1a9800711acba11b8adb7b4b79ebdb3bab0c400c1a0b486b001000180af01b2af80b107b0b99bc1ada5aeb786b00fb6b2baa700bc04aca4b1b9b8afadb1a9c6b006b6acb204a6afb580048000010409800005b0bca4a2c0b180b621acaa00a0b6bccaa2b4acabbeb6a7a9bd070c08bcbfa2afb1b3b700b2ba9fb2b1b8b6800014b6adb7b6b10db2b1bda106aeb900acb1aab50004bd8eb000b380aa00bf80ad01bfa98eb007acb3b0acb2b9b6b2d6b0 +96b002b3aeb680000db8b9acb2aebaa4bcb100bab6a0c1800012a8af00a2aa0200c3afa3b8a9b89d01aeadb3ae86b001000180af01b2af80b103aeb0b8b280af01abad86b00faba8c5a3b50500b8bcb7a2adbaadb1bbc6b011a9a500a3c2aab5a2b100b8aba2b70400a2cb810080b038aeb012b9ae99aeabb8b1bfada5b9b09cb6a5b3aa9ab7c3a5b5b2a7a8b5c1a1acb1ab05b8abb7a2b300a8a6aeb30900bd00a5b4b5b4a9169ca58eb007b2adb70003b4b8a18eb007adbab0a8b2aea4acd6b0 +96b01eb1b5a404c2a4b0bab1aaa1b9a9b400a8afbf0008b0b7b0000d001001a0bab280b503ac0900ad80b500b486b001000180af01b2af80b107afa7b4a6b2bbb0a887b00eaab1acbc04a8089dc1aaa5b7aaa6abc6b01eb40b08a3b2c096bfa801b8a3c0a20800b200b7aab4b19cbfc100b2c8aebbb080ac219aaf10aebbb6abb0b1b9b2bda3a5b4abbeb5ada8b5b6a400c5a1a7b7a0c100b5b4bd800007c400b8bba4aea70980ab00c08eb080b205bcab000697ca8eb080ac05b0b7b5a8abc0d6b0 +96b00fb1a7b703a8b5abaab1abc6a0b6af0005800015b6b4a6b3acb2a7b3b2b7afb0b1a8aeb100b8adb0abb186b001000180af01b2af81b106b9a5b9acabb2b686b00fb3aeb9a6b70007000a99c1b1b5afb1b4c6b022b100b4b1afb1b3acba00b0afacb700ae00acadaeb1b4b8a900beb6a2baa3afb3b7b0b1800003a9afadb680ac1cb2acb4b7a9b0b3a8b2b4b1acb000abb9b5b1b90004a7b8000eb300a901800005bbb300afb5a88eb007abb1aab3b900b7a98eb007b2abb0afa8b3b8a6d6b0 +96b00db2abadb300aeb0aeafb1b2a7ad0c800086af0cb0b7b09ec1aea8af0109abb3b080af00ad86b0800005b8a9bdb1ada98eb00fafb2adafacb50faf00c0aba6b6a8b4b6c6b017b400adb1baa9b3b807a4b4a3b700af0700aeb2a9afadb50386b007b2acb6bf00b7b3a78eb01700a8bbaeb20006030a0500acaf0500080100ac00b9afb8a8feb086b0 +96b00fb2a8beb20304c2a5b2adbeb6c1abaeab86b10dadabb8c3a0ab0300b58fc8ada5b080b586b0070d0300baa6a2c1b48eb007abb6a9bda3b095b1800005b4c1abb5b3a8c6b001aa0480b013abaeb1b400b6c3ad03afad00af000e00b1bbb60086b007bcafa39a1aa6adba8eb00d0fabb2a5b20300a9a0b0a7b7ac11800007ad0006a6a9b0aeaffeb086b0 +96b004adc699acaa800001bbac80ad04a993b3b5be86b00fb9b3aaa60400baafbda6b3b0b2baafa486b005971400bcb4a980b18eb003aeb6acb980a609d4abb500c0b5a6b4aabbc6b00ec000b4ad9fc8000200010006aeb2af800806a600089bb1001086b007abb3b6b79cbcaab18eb080000ca5caafa4beb8bdaeb4bfa0a1bc800006afc1a8b8adb1b3feb086b0 +96b000ae80b20cb3b9b1010007b5a2c1c6aeb2a686b080000d0f06abb5a7adaab2a5b0aab0abaf86b007c6001aa2b4b9a5b18eb00fb2b0b1a9baaca7b1be0003afb8a7b6aac6b0179a0f05b2c8a20001b7abc1a3b8a6acad000e00acba0eabad86b006acb3acaec0b2ad8fb000b6810013a7b9a6a5b0aa9cb0090704adaca3aeb5a3adb4b1feb086b0 +96b008b2b3aeafb6a8b0b8ad800004080009000c86000caac59fa4bda1bcb7b1c6abb6a780ab00b986b000a0800002afa0b790b080ae0daca8bfbb92bf9fc4009fafb7bbabc6b004b5b000a5aa80c210b2b3a8b7b0acb2c0abb7a8beb900a5b5b686b007b3b2a5a6aca8b7af8eb003afb2b50580000310040014800001aeac80ad07c6a8adbea9be9dadfeb086b0 +96b00fb8ada4b2b8a0c6a6afb8abaab7b2b3ab86b20fb1b7a3b9abb1b4aaa3b3a5b7b2b6aaac86b007b10900bcabb3aeb18eb00fadb6a5b2a9b5b1b4adb300bbb7a7adb4c6b011c09ebb1198b5ada7c29db5baa9b2a9afa7b7800003b7b1b0af86b007abaeb6c0afb4bba38eb017a7bbb599adb9b2a7ae93d2afa4bab0afa7abb7a2b6a5beb9feb086b0 +96b00fb1afb7b6b0b4a8b9adb5b3b1aab0b4b786af09b3a5bcaeb1b9a5adbfb680ac03a9b5adaf86b007b50001a8b8b3a8b98eb00fafb8abb3a4acb7a9bfa20407a7bca4b3c6b003a7b6a5b4800011b7b3a9afacb5b39eb8010701a4b2a6c7a7b487b006a8b1ada0acb3ac8eb017b8aca4c6bca7a1b7baa4aab5b7a8b9b1abbda8b9b6ada4a9feb086b0 +96b005adb3bba2b7ab80ae07be99b4bfa1c0a8ab86b10db2adb2b8a8bbafb6aca3b3b2aeb780ae86b002a90d0080b302acaaaf8eb00facaeb6adbab4a2b8a9bcad00c0a9a7b7c6b006aabcaeb7adb1048000000881000a0708a3b1a5b8bda7aeb7ad86b007b2a8b8acb0b1aeb48eb017a9b6b7a4b1aab2b5afb3adb7a7bca6b9b5a9b1ada4bab3b6feb086b0 +c6b000b9800003bcb0adb897b007a8b2b000aeb2bea7e6b007a5b5b3a7a9bfacb186b002aeb4aa80af02a1b3aec8b005b1ae00b3aeb1ceb0 +c6b007000c00a0acb0baa896b007b8b7b606aab7a1b3e6b007b6adb4b8ab9eb2b186b006acb0b2b5aec5b4c9b005b1ae00b3aeb1ceb0 +c6b00705ad0cbdaab4a2b896b006a9aca19c12a8b3e7b007b599a6b9b6abc2aa86b000aa80ae04b3b091b4acc8b005b1ae00b3aeb1ceb0 +c6b00700b500aeb2baa6bb96b006bca5bcb900b1a5e7b007b4b3c0b4a1b1a2b386b007aeb5a7aeb61ab6acc8b005b1ae00b3aeb1ceb0 +c6b0070ab10ea4b9b1b3a496b006aabda6ad0200cae7b007b5aba9b2bbbd000786b002b2b9ac80b00200b5b1c8b005b1ae00b3aeb1ceb0 +c6b007009b0ab5a8b1a9c196b007adb4b0b6aa00b1a6e6b000a780ab04aca8b100a986b080ae05b3b1a00fadafc8b005b1ae00b3aeb1ceb0 +c6b00700ad09a1bbbc96b696b007c59bb6a7ad05aabae6b007bdb9acadb1a700c286b007afa7afb4a312aeacc8b005b1ae00b3aeb1ceb0 +c6b00100b2800003aea8bda796b007a6b3acbda4b603abe6b007a9b2adafbea70aa686b007baaeabb9ba00bcafc8b005b1ae00b3aeb1ceb0 +c6b00700b9a100c699aeb596b00fb6b5a0c2a4a60ba8abbbaca6abafb0b4deb007abb4aeb1b3bb00bd86b007bbacb6b800bcb1abaeb007b2b7b2aab6aaafae90b005b1ae00b3aeb1ceb0 +c6b0070c9ec900a7b3bdb496b00bafa6c2a8c1b200bcb3abbcb480b001b8a4deb007b2b9afada79f229f86b007a8b0a6b504a1bcb3aeb007a7aeaca9b59eb2b490b005b1ae00b3aeb1ceb0 +c6b0070006aa00bbc2a8a797b008baa8afa9b3ae00b7a080b203b3abbda7deb002a8b2ae80b602aea2ba86b007abb6aca319b0aca5aeb007bdb2abadbfacb5ab90b005b1ae00b3aeb1ceb0 +c6b007b50fac00a9a7a4bf96b001adb380b20bb1a9b909a7c5ada8b6a3b2b8deb007adb4abb4b1a7c4ae86b007adb3b6b49900b9b7aeb007abaabbb4a5a8a7b290b005b1ae00b3aeb1ceb0 +c6b007ae00ab00aeb4baa896b00eb2a4b9abb9b29eac06a8a9aac5b1a2dfb007b3b5abb0aca7aea686b080ae80b302c700b7afb001b3a080b101aac680b290b005b1ae00b3aeb1ceb0 +c6b007b300ba06acabbeaa96b00fb6b19fb9a3b1d4ac00a4c9a0a9afaac0dfb080ad04b2b6baaabb86b007b3b2aea59cbdad9eaeb002c1a6b080b102a4b6ab90b005b1ae00b3aeb1ceb0 +c6b007aa00af06b3a6acb696b00facb4aebbaba89cb3000cabacb9beaba9deb007b4a8b4acafaca2aa86b007b2adafb6bca8bdb5aeb007a0abc3b69a18a3b490b005b1ae00b3aeb1ceb0 +c6b007b402b300b2b9a9b696b00aacb8acadaabeb4afb700ae81af00acdfb007b3a2bbadb2abbaad86b007b89fbaabafada6aeaeb007b7afabaeba00b9ad90b005b1ae00b3aeb1ceb0 +c6b007aa03ae00b2abb1b29eb007a901b0aeafb4a9b2e6b007a3cbac9dbbaab1ab86b007b8a2b4baadb6aeaca6b000af80b104aeb300b0b18eb007afc29eaf0facaeb7ceb0 +c6b003b200b30c81b100b39eb007b8000bb5a0bc9cbde6b007b79eb8b6b0b4afb486b007a9b7aca4b3abb8afa6b000af80b104aeb300b0b18eb007b1a2b9af99aeb3abceb0 +c6b007bb00ab009eadabb89eb007b1bf00adb3b0bea3e6b007bc9eb6b9aaafaeb486b007b4b1b5a9b2a5b6ada6b000af80b104aeb300b0b18eb007b2a9aeb1c5bba6b5ceb0 +c6b007af00b701b8bea8b19eb007a3b10004c3ab9ec8e6b006b2c2adaab3a5b487b005bf92bbbfa8ac80aea6b000af80b104aeb300b0b18eb007acc3a5af9fbca3bbceb0 +c6b007ae04ad00b0b6a6b89eb007b8c3a6048dc0a7a4e6b006ae96adb0b6a8b887b007b1a7acbaa9b1b0b2a6b000af80b104aeb300b0b18eb007aab6baaca9adb6a8ceb0 +c6b007ad07a311a6ada6b99eb007a7a4b8ae19b3b6b1e7b0061db0bfabaeb1ae86b001abd480a603b9acb6aea6b000af80b104aeb300b0b18eb007b3a5b0b4b8aabda3ceb0 +c6b007a404b993c4c0aaa89eb007bda6b0ad00a3afaae6b007b200afbaaaadb2ad86b007b195b0a3bda9b6aba6b000af80b104aeb300b0b18eb007b4b0a0b4b0abb5afceb0 +c6b004b700a8c39f80ad00b29eb007acb4b2b0b301a6b8e6b007b304afaabaaabfb186b007af0fb5acafadb2afa6b000af80b104aeb300b0b18eb007a7bdb7a8baa1b6b1ceb0 +c6b007af01aeb2aeb3adb29fb00eacb0bca300b8a7b3b1afabbaa7b8a9d6b00fa3b7b6abb0b7b1a8b500b5adb3a9bcaa86b007ad1102adb0aeb0b3a6b007b7afabaeba00b9ade6b0 +c6b007af01aeb2aeb3adb29eb002c4a5a780b90a0008b2a4a6b2aab2aab7aad6b00eb9b6b5b1a8a6b0bdaf18a9b4a5b7b687b007ae9700a5bdaab3aea6b007a0abc3b69a18a3b4e6b0 +c6b007af01aeb2aeb3adb29eb00fa7b1b2a6b7c600b0bdb4bfa9a5abb6b2d6b004aaa2a9afad80b708a000aea4adb8a8b9a686b007a8d700a7baacb4b2a6b002c1a6b080b102a4b6abe6b0 +c6b007af01aeb2aeb3adb29eb00fa6c7aeb9a4aa00b6a79fb3b1b2b6adabd6b00fbda1b0c4afa4b2b505bcacbbacb2b1a986b007afa900bbaab2aeb5a6b001b3a080b101aac680b2e6b0 +c6b007af01aeb2aeb3adb29eb00fbda4a5b6a5b4cd00b9b5aeacb0b2a9b4d6b00eabbdbea1a9d2920300a6acb6a8b1b287b007bc9408c0a8adacb1a6b007abaabbb4a5a8a7b2e6b0 +c6b007af01aeb2aeb3adb29eb00fabb2b3a7c5a39c029ac7b0acb0adaab9d7b00ea3acb6acadb6b200b7b0adb4a7b4ad86b006b1b302abb2a6b4a7b007bdb2abadbfacb5abe6b0 +c6b007af01aeb2aeb3adb29eb00fb3adb4b2abcbabbc0c9fa8b5c0b4aaa8d6b000b880b00cb4aea8acb5bb97b5bca4bca5b286b007a6ba00a5b4abb6b2a6b007a7aeaca9b59eb2b4e6b0 +c6b007af01aeb2aeb3adb29eb00aaeb9a1bcaca9afac00bbb880ac02a7b2b4d6b00fa9b1aeaab3b7b1aea5c4a6adaeb6a9b286b006b5a402bbadb7aca7b007b2b7b2aab6aaafaee6b0 +8eb007a6baa5bbb3b2a3bf86b002acb5ab80b202b0adaf86b013abb4adabb7a9acb3b0aea8acb5b1aeb6b7a3b1ac80b81998b7bc00aeacb3a5b4b1aabcada6bbb3a4b8afbaa5bfb5a1b5ae87b002aab7af80ab01b2b486b00700baa5b3a6afb4ac86b005b5a5b8b3a5b080b186b007b7abb2a9adb9abad86b002acb5ab80b202b0adaf86b013abb4adabb7a9acb3b0aea8acb5b1aeb6b7a3b1ac80b81998b7bfa6adb5ada9aab3aabcada6bbb3a4b8afbaa5bfb5a1b5ae86b007aebc00a9adb5a5b886b000a880b104adbab4a3b286b005b5a5b8b3a5b080b186b007b7abb2a9adb9abad86b002acb5ab80b202b0adaf86b013b7a6b1b3b2a7b5b7b0aea8acb5b1aeb6b7a3b1ac80b81998b7bfa6adb5ada9aab3aabcada6bbb3a4b8aeb1b7b3aaaeb1a99eb0 +8eb007b9a6bb9aa7baaea686b207b3b2a5b2bd9cc0ac86b22fb7baa6b5a2b2b8aeabb4b8b1acb0afa8b0afabc6a09bd7a7aa00b6c5b1c1aca8a7b3b0a4a8b4b3aaa5a9c08ab0c0a1c086b207baa4b5b9a6bc9db686b202ab04b280b702ba9db786b207adbbafb3b2aeb7a287b202a5adba80ac01bdaf86b207b3b2a5b2bd9cc0ac86b22fb7baa6b5a2b2b8aeabb4b8b1acb0afa8b0afabc6a09bd7a7aba4b5b3b1bdb1a8a7b3b0a4a8b4b3aaa5a9c08ab0c0a1c086b207aab404b8b7aabca586b207baa8b5aca0b2b8b586b207adbbafb3b2aeb7a287b202a5adba80ac01bdaf86b207b3b2a5b2bd9cc0ac87b22baab8b9a5bea2a4abb4b8b1acb0afa8b0afabc6a09bd7a7aba4b5b3b1bdb1a8a7b3b0a4a8b4b3aab5aca8aeb480b000b89eb0 +8eb007a5bfa8bfbaabb9ae86b007a8b0b9b392c0abb186b02fad9abcafb3a8bba2ada9b2b3a9b3bcafb6b0abaab1aea6b1aabeaba4b1a2b5bac4a2aac5b7a3a9b4b2b5aac9b1b8a39f86b080ae05afa4b6accc9786b007b4b0a8b1a3acb3ab86b007afb297acbfa7aebb86b007a8bea6b4b69fb2ab86b007a8b0b9b392c0abb186b02fad9abcafb3a8bba2ada9b2b3a9b3bcafb6b0abaab1aea6b1afb6b2b3b1a6acbac4a2aac5b7a3a9b4b2b5aac9b1b8a39f86b007bf9eaeafb0b2bca986b0079bbcb2adc0b09fad86b007afb297acbfa7aebb86b007a8bea6b4b69fb2ab86b007a8b0b9b392c0abb186b02eadb4aea9b7a3caacada9b2b3a9b3bcafb6b0abaab1aea6b1afb6b2b3b1a6acbac4a2aac5b7a3a9b4b2b6adacb6aca39fb0 +8eb006b7afb1ae9fb0b18b00030515b1aa8600020500078000070d00beab1c00060e8000010400800a060002070a00a9c280000210020580000101068100040a0401acb080000202060c8700021bafaa8100000b8700061400aebf010002870004020310afb288000602000d0003b4c68b00030515b1aa8600020500078000070d00beab1c00060e8000010400800a0b0002070a00abbf060017000b80000101068100040a0401acb080000202060c87000603b9a00008000f86000007800001b0af80000013870004020310afb288000602000d0003b4c68b00030515b1aa87000311000205800005b6ab1c00060e8000010400800a0b0002070a00abbf060017000b80000101068100090a040392d2a9a1bebdab9eb0 +8eb007a8a7adbdb1ad0003860107000900010499a60c86010100148000030206afb28000010d028000060f00100002000e800001b3b8800006180013001300048000011006800002ada8068200870105059aae03000180008601800001c7b1810000038601050300079f9d088000860105000107089fb08000860107000900010499a60c86010100148000030206afb28000010d028000060f00100002000e800001b3bb8000060c000e001200048000011006800002ada806820087010700b3a803110302038601050d00b1a4090180008601050300079f9d088000860105000107089fb08000860107000900010499a60c860102001002800002139fb18000010d028000060f00100002000e800001b3bb8000060c000e001200048000011006800007b5b2a4afc4b0a1bd9eb0 +8eb006bbbaa1aca2ba0387000504001900adbe880000178000050400aab4000a830000088000090400090015a8b80009078100010200800301000580000420adb7000681000007870003b3b400048000002487000608ae9a0c01090688000502a6be14001387000012800004b6b700030f86000504001900adbe880000178000050400aab4000a830000088000060400090015a8b88000010e088200800301000580000420adb7000681000007870002abbb0a8c0006b9bd0f000c0b0a87000502a6be14001387000012800004b6b700030f86000504001900adbe8b00010b0080b401030a830000088000060400090015a8b88000010e088200800301000580000220ada080b704adafa9a2aa9eb0 +8eb007a2b3b6adbda6a9bb86b307b0aba7b2a7b9abb686b32f99acc6a9b8b2afb7a4b1bbb9b0acaba8b3b5b8b5a7acb7a6ad07a8b5adb5b3b1acb1a8a6b5b4adb4bbaaa3baadb6a7ad86b305a9b0b5adb9a080b086b307afb0b800b5aab6ae87b306afb2a4acb7a6b286b307a9b2c0a4b3c199a886b307b0aba7b2a7b9abb686b32f99acc6a9b8b2afb7a4b1bbb9b0acaba8b3b5b8b5a7acb7a6adbaa7a3aeb1b9b2acb1a8a6b5b4adb4bbaaa3baadb6a7ad87b306aea5b0bfb9b8b586b307b8b6a4b2bda9a5a687b306afb2a4acb7a6b286b307a9b2c0a4b3c199a886b307b0aba7b2a7b9abb686b32f00afb6b1b9acafaaa4b1bbb9b0acaba8b3b5b8b5a7acb7a6adbaa7a3aeb1b9b2acb1a8a6b5b4adb4bdb0a6a8b1b5b6b99eb0 +8eb007b4b1a8bc00b1c0a886b007adb9b2aeb6aab1ad86b00cbeaaadb4a9b0adb0b8b0aab1b680aa20bdb4a5aeabb1b9acb9af09ada8bea8b6b0afaeb8b7abb0b6a8a6bfb4aab2afbcaa86b007b3b2b0acaebaaab286b007a6bbb400aab6a9b286b007adb5acb4b5aab3b186b007b2adaeb0afadb0bb86b007adb9b2aeb6aab1ad86b00cbeaaadb4a9b0adb0b8b0aab1b680aa20bdb4a5aeabb1b9acb9b2b7acb1b8acabb2afaeb8b7abb0b6a8a6bfb4aab2afbcaa86b006bca4b3bd9cb1a987b001acb280ae03acb1bcb286b007adb5acb4b5aab3b186b007b2adaeb0afadb0bb86b007adb9b2aeb6aab1ad86b00c00b8b4a8a6bda1b9b8b0aab1b680aa17bdb4a5aeabb1b9acb9b2b7acb1b8acabb2afaeb8b7abb0b680a806b1b7b0abb6b7a39eb0 +8eb00fa9b6b2aa04b2a8b7b5abaeabb6abbcaa86b107b4b1b5b4adafbfa98eb01fadb0b2b7adb69fbbb100b9a9adb4b0adb0b5aeafa9b5b2b1b3b1b4bda4afb1b68eb00ab7adafb7a8afa8baaeadae800002b3b5b086b105b4aab7b2abb780b1ceb007af01aeb2aeb3adb286b007acaeb3baaf9ec4a7aeb007af01aeb2aeb3adb28eb00704aeafb8a3b4afabc6b0 +8eb005afadbfa905a580b180ac05b5adb0aaabae86af07b1a5aaabb2b3a0b88eb00ab6baa6a2a6b9b6a8af07af80ae12adabbbb4a9b4afbda9b3b4aea8afabacbfa9b28eb008abb0c0b1bcb6baa5b180a904cc00abb7a286af80b2049ab8c0a9a5cfb007af01aeb2aeb3adb286b007bfaeaaa9b9c0a5b9aeb007af01aeb2aeb3adb28eb00700bca9a8bab0bdb2c6b0 +8eb00fb6aea1b400c3b0abacb1b7adafbaa4be86b207b0b2b9b4abb3c1a38eb00db2a3c0bdb9a9bab6b300050308058000000680000202040180000006800004bca7b1c29a8eb00eafb99aaca8bda8b4aac0a6b30200b187b207b4a8c4b590beb2b9ceb007af01aeb2aeb3adb286b005a8abc5a6bcb08000aeb007af01aeb2aeb3adb28eb00707abbdb5a9aea8b1c6b0 +8eb005afadc406a8a080b106b9adaaafb99f12870007adb49eb5aba8b2b78eb006b8af9db3ada8b08000120400af9cb1c1b3a8a7030200c2b7aea7b9ae03800001aeba8eb00aacb6c5a6bea89d110b0011800002080003870006b8afb1bbacaaacceb007af01aeb2aeb3adb286b007b7ad9dc0a0aab803aeb007af01aeb2aeb3adb28eb00700a7bcb7a0bbacbbc6b0 +8eb00fb4a8b200b9b2b6aca2b0bbafacbf99c686b0050008b3c1b2ac80b28eb017a7beacb9b0ac12000700b4a3c7b196b0beadb9b7be9daab780af05a6b2b5c500ab8eb00fb2a0a6b19d0709b1aeb00605000bc0a386b007b50100a6b7aac8aaceb007af01aeb2aeb3adb286b007b5acb6adafb4b200aeb007af01aeb2aeb3adb28eb007199daea6bab3b4abc6b0 +8eb00fa7bfa900b8ba9fb9b8b2ada1aab9a1b686b001b9bd800003bab698b78eb003b1a3afa7810011c9adb1acb3a2b4b6b7a9adabaeb0bbb5adb080b6049fb59bc7008fb003c2aec2098200060da9a5ada1aac086b004a8b1b5010280ae00aaceb007af01aeb2aeb3adb286b007bda9a8b6b396c700aeb007af01aeb2aeb3adb28eb0078e1caeb0bda8a6a8c6b0 +8eb00ab3aab10f9eb3b4aea5adbc80b702adaeb286b107a3abc300aeb2bcbb8fb00eb1beb20300b79eabbaaabba7acb1a780b50dbab6b0a6a9b0b2afa4b6bab8a0088eb002ba9cba80000ab8b1babfb3a7b0bbbca8aa86b107a9c0adaeb10100b8ceb007af01aeb2aeb3adb286b007a6adb8a3c6ba990daeb007af01aeb2aeb3adb28eb007c000acbbacb4b1bdc6b0 +8eb006adb4b000b6b4aa80b306abada7b0a5bcb086af07b50600bcb0a8b7aa8eb00cabb8aa00afa4c2a7b7b2a4b5af80b610ada8b6a7aea3c2b5ada9b2aeb3a7b3b7008eb001acb980000bafabc19faaa9b3b7a7a4b9b586af07b7a2b4abb1aead00ceb007af01aeb2aeb3adb286b007aac5acb0a8acbd00aeb007af01aeb2aeb3adb28eb007acb2b3b0a7afbba1c6b0 +8eb01faea8b304afaeb1b6b4adbfb1a7b4abaeaab2bea3b3bd9cb90a99c1b1b5afb1b48eb01fadb300b3afadaeb5000c00020004000504abc0a8adb1a3bca9b6aebaa4b8a9048eb016aeb000bc9eb2c3a3abbaaaaeb4acb9abacbba6b5b2a4b680b50ea3b0bf9fb3bda800bf9db4b6b0b8a6beb00fa3b7b6abb0b7b1a8000eb0afb2b3adb586b007afb2bab6a5b0bd01aeb005bc00bfabafb1e0b0 +8eb003b2b602a780ab19c4a4af9fabaeb4baacb5b2bd9bb8a1b1b6009dc1aaa5b7aaa6ab8eb010b8ab19a7baa6b3a9bfa7b1b502adc7a9ae80a60cb7b900109eb2b6b3a4b0bb9f088fb02600aab0b8aaa8c3ba98bdadaaac0007b10003b7adafb2a3abb1b2a1c4b191c20e00cc9fb7a5a9bbbeb00fb9b6b5b1a8a6b0bd0aa0b2a1b9b2b4a986b007b6adb1a7b9afa100aeb0079821a8afb0afb7a9deb0 +8eb01fa8b900b2c7a9b2b0b6b5b7abaaaba5b6b7a5b5b3b8000cb5bcb7a2adbaadb1bb8eb01fae0300aab1b9b0b7a4b5a90400bf9db4b7bfa3b50002b5bda3bba2bebfa7ba008eb008b403a4c4aeafae9db480b1000680000015800016aec0a1aac8a2b60104bf9eacb5c4a7a300baa4bdacabb2beb004aaa2a9afad80b708a000cbb0abb1acb6b286b007b5a6b3b2c0b900c0aeb007c700a8caa5afabb4deb0 +8eb008afb501bb97bbacb2a380b714a6abb5b1b3b0afae9d10b29ca8a4b1b9b8afadb1a98eb01fae00bca8afb9a2b2b3acb200b7abbbb3b794c800aba9afa6b2b3b8a8a7a60db18eb01a9d0d03a5a6c8a6c2a9acb3a4bda604b6bea6a2bab49eb70300aca080b80aafacaec1ad00ca9bb3c5a5beb00fbda1b0c4afa4b2b5169ab2c0a5aeafb786b007a9c2aab9949fc4a2aeb007b504ada1b0b3bca9deb0 +8eb016a5b900b8bda4acb3a9b1adafb8b9b1a4b7a71600a7afbb80b303b1b5aba680b700a38eb01f02a99db8b59eb0b9b6a0c201aabba5af9fbe00a8c2a7a6bdb5a4b0a7c0b900bb8eb027c5a500aebda5bea7b3bcb4b1afb100aea3b1bd9bbcb300b5acaec6a8b4a4b1adaaa90d90aeb7a6b5beb00fabbdbea1a9d29203a3a6b3b9adb4ada986b006baada4aac3b5a9afb007a300bcb5acb69fbcdeb0 +8eb01fc300a4aaacbbaeafbbb1adbaada2b7bca400a9c2adafb4afb6a5abaaabb7b5b68eb01f03a9bdb9b0a8c0a6b6aea400aeb1a8baae09179dabc6aea4a9c4b2b4b000a8ad8eb010a4ad00b995bfa6acb6a4ada8b200aeb7b680b214a6bd00b3a7b3b5a1b4adafb4b0acc200bcafb1a8b1bfb00ea3acb6acadb6b2bec1aaa4bbaab5a986b002a3bbb580b202b999bdaeb0070bb5a99fbcb4aaafdeb0 +8eb01f9c06b7b5aeafb7aeaba6aab7a5aac19d0caabaacaebeaca5b5acbab4aeab9faf8eb01003a5bb96aac199c1acbb00cbb1aab3abba8000000a800008beb0b1a9a8b3b205b48fb016afb600aeb5a9acc2abb7b4a8cd00ada7b49facb900bbb080af0e9fb7a7bbb6a1b2bb9d01abb4b0b4b2beb000b880b00bb4aea8acb598b3a8a6b8a7b887b007b5acb79ac0a7c1adaeb00700b9a7beb1aca7b8deb0 +8eb006ba00abb1afbca280b416b1afb5b1c1990a00acb1aab6a8adbcaeabb4a7b1bfadb48eb015b300b9b7b9aab8a3b59f16a9abb7aeb00400b9acb60280af07b3abb8b100a9b7ae8eb027b8b0a500baabb7a6abaeb8b4990aafb7aab8b600bdae0007010600aeabb0b2aeb1ad00b1b0a7b4abbeb00fa9b1aeaab3b7b1aebca8b7b6acb5b1a786b007acb5a9baa9adb4aaaeb00700b8a6b6afa5bfafdeb0 +8eb011b5010c0007000400030005030600a303000e80000b1300aba9acb4baa8b6acb1ad86b080ae25b7aeb2b3a3acb00009a7b4b6adb1aa0bada7b6b0aab700bda9b40009bba5b0acafb203bba0b68eb002b2b8b580000ebda9aeb2afadaf00b1aeadaeacb00b80ac03c0acb80081b701a8b880ab0e09afaaadbaa0b7afb3b2a5b8b3a8b1feb096b006a9b8a7baabafb180b306b1b4b2afaeb5adc6b0 +8eb0050006a5bbb9a580b010afa4b09db6a9c5a8b5a0c2b7a2c0000e0780000004800001cca686b003afadb5a980ac02b6bfb380b11c00b2a6b6afc000b4bdb2b7baad01b3ad00b9a4aabfa8b5b700b1a2c3a08eb00ca7a3b2bc059cb9b7abb5b4b9ab80ae1eb6b8b2ac00aebc950c00bac290b5b7a9b2bc00b1bbb2afbbafaeaab0baadb480adfeb096b00caab7aab2aab2a6a4a9b4a1b3b880ac00b4c6b0 +8eb00bb5a6c3a9a4aebdafb7afb9ac80bf1191bbb7b5a7b99ebaa7afabb6aebaa6b000b986b018acaab6b2b7a5b3a3b2b0adb3000c00b1ad00b6b8a0a5b5a6ad80000cb6aabab29ebe0500b3b19fbfb98eb02bc0a5b6b0a606bda0abb4a9b4beacafa8abb6b0000e001100b4aca8b7ada2c3a9a60dadb0a6b1a6afb6bca4b880b501a2bbfeb096b00fb2b6aba5a9bfb4bd09abbcb4a4b2b5aac6b0 +8eb00ebdaca2adb6b3afa2acafadb5a4b2b880ad0ea2b2b3ba9ecda6b5acb29dc1baa8b786b000b980ab17a7b6abc6b1c29bb8b0069db2090700afadaeb8a0c4afadbf80ad0ab4a9c700adb3afabc1aaa28eb02fabbda9aab4aa00bcb3b1ab9facb6beacaeafbbacabaca2b3afa7c0bbacb4b1b600afb0b1beb0b6b5a0c5aba7abb8aaadfeb096b00fabadb6b2b1b39fa700aea9b4aeb0adb2c6b0 +8eb007acb3abbdb2a2aec080b315b4b9a1a5cea1b4bab1a3bcb7a3b1aabdadb9a4b8aca386b01cafabb0aab0a5b2aa97b30400b1b3afb2acad00010f002000b4ac0c0008810007b4b6a5b6abaaafb88eb02fa8afb5b9aab3a80003a2afcda0afa8b6afadacb9a7bdb4bfc2a4a6acbaa4b500c3af9fc39ea9aba9c2afa9bda4afc39ffeb096b00fb4a9b2b0acaeb5b900aea9b4aeb0adb2c6b0 +8eb015b1b4acb1afaeafa7b3aabbaeb7abb0ad9ebdaab7ad9c80b407b5a3a5c2c4a1b7bf86b00ba4afbab2b0b3a6bdc50da7b480b119b59eb8b5a8b8adb1a2b400039dc0b3afb1c0abb1b596cdaaa3b68fb021c1aea2accaa8b400120286c5a6bfa6baa5aeacbbafae99a1c3acc0b4b9b10699bcba80b206afc1b100a4bcb480b101a6c6feb096b00fb9aaadb0acb0c79a09abbcb4a4b2b5aac6b0 +8eb017aeabb8afacb1b6acb0a7b4abbab2a7b5bf99bab0acb5bca980b805bb98b3afb1a586b080b525b0a5adc88fb500b1af9fbdb1a2bfafa1b9b8aeafacb9b3aac3b79eadb5a9b0aebdbba0a3bab38eb01baca7b0b3bcaeac00a6adb6000100abb1b7a7bab1bc9bbac1b5be95aa80001101a9c694b7a2a6baa3b30c0009b3a2baafa3feb096b00ca8aab4c0b5a89f0ca9b4a1b3b880ac00b4c6b0 +8eb003bc9fb4ad80b019b3aeb5b4abb5a8adc0a9acbbacafaeb5a4b7a8b5abb5b2adb0b286b000ad80af24b0b3ab0901b4b7afb7acb3b7a7abc3ad9ebda3c4a3b6aaacb3aeb9aeb2adbaae9ec2a9b8a78eb011b6adb6acaeb500b7b8acb4aab3bb00060001820013040005001800aab3b4acb1b5a4c0aeb3adaea9b480000304aeb3b5feb096b002b4b2a780ac0ab8bb00b3b1b4b2afaeb5adc6b0 +9eb01fb9b0afb1b2aaabb1afbca9beada6afb2b4aabbafa4b9adb3abaeaca6bd00b7a98fb080af0ca9b9afb4aab0b1aea7b8baa7b186b017acb3ada8b7b2acb3aeb3a9b6b1a900acadbca3b8b3adafb48eb017b4b2af9fb8b4b0afb0b1a7a8b4afa9b7b1afb0b4bcafbcabfeb08eb007b2b3aab4a5b7a800ceb0 +9eb00eaaabb3a8bbb8baa9afb0a2a3b5b4bf80a808b7a6adb9aeaaa8b3bb80020300a8a9bb8eb00fac0aa9afa9b1b2b7b2b703c79ca7b4ab86b017acb0b1b7a6abadb1b7b1b6a9b906b1b9b7aab4b8a4a6caa48eb00ba7a4bdbaab99b6aab4afb9ba80ac09b4ada4bca6ada2adb2b4feb08eb007ada9b9b5b8aab907ceb0 +9eb008b9b4a3bba1a8a1bbab80b908bcb5abb4afb2aab5bb80a809bac0aa00b4a4b4aeabb78eb003b100bfae80b209b9a2b4ad9800bdb7b2b886b017b7adabbda6b8b6acb0a6acae07aaacb0a4b8a9bdb1b7b2b48eb007beb3a7b3bbb2aeab80ad0db5abafcf9003b4abb5afcea6acadfeb08eb007b2b6adaba7aaae00ceb0 +9eb01ba1b2beb0b5b7b9aab1ab9bbbaeb3a7b4c19baeb7afa8ae9a10ac9ec680b201c39c8eb00fba00afbca4b0aab9afa5dc00b0c1ada786b000a980a70cafaeb7b6b4b1bca4bb00afbead80b405ac9fc8a09daf8eb011a500c5a3aab2baacaea8b7b59ca7bfba01a780b10396bcb4bafeb08eb007a9a8bfb0bab500b4ceb0 +9eb01fbcb6a2b0a8b8acaebcb5afb2a9adabb8abb7aeacab051005a1b6b5ae9ab7aeb98eb00da2d0ada7bcb0b7a5b1b09f00a4ac80ad86b017b1c0bfadb7a6a5b4b1b0b400acbdadaabea8aab2acb5bbb98eb000c1800014c9aeaab0adb5aca7b1b9ada3a909b8acb3baa9abadfeb08eb007b4b6a2ada6ba02a4ceb0 +9eb00ca7afb7b2aba8b0b8a5a8c1a7b680b410a8b1a8cca500b4a5b0adc4b7a2c0b8aba48eb008abb69db5adaea9bbb180b80400b9abafbf86b017a9afa9a6b7b5aeb5a7a907b8c394bea9a0b2c1aab1b0a6ab8eb012a6b50697adb3adb7a0c1b99fadc1bab0aa00bb80aa02bcb3abfeb08eb007b3a5b4b0b89802beceb0 +9eb008b4aca80911001e0005800004060005000c82000017800008020095b1b8b19ab6ba8fb00eadb3b5b6afb0a6a9b6a0bca8b6b0ab86b006b7b4b0ca9bb5b180ad00178100030a000517810003bab9b5ae8eb017abbd00abc9a9b6a6b3a8abb7b3a7a8b0aeb4aabab1acafb5feb08eb003a9aca8b380ba01b4a2ceb0 +9eb08000090ca0a9c796b9a7bea8ae8000110bae0100aab5a0c3afadb401000aa5b0b7a58eb00fad08adbba6b0aeb3abb3b2a6b5b3a8b386b005adafabb10002820009a9bdb1b6a4b8a2c2aead800000048fb014aabaa7089faab6b2b8a6b5bca6afbea9abb8adb89e80b300b1feb08eb007abb6b9aaabaea9b6ceb0 +96b027abacb4a2cfa4000106aeabbca2b0b1bab7a3b8b7a8ada80400b2baacb0b6b8a4afbaa5b700b9acb38eb017b200b1b6a1b6b2acbaa2a3b8b3a4b7afabbbabb6abaab1038000000580030100038000150206b2b4bfa3b2b4b1afb5b1c1990a00b5afb3b6acad87b007b7b0b404acb3a0b986b007aab7b0a9bc00b8b7feb0e6b0 +96b006b7c6a8b90004b380ad1ea4b4b0b4be9da4a6cba8b3adc4b89fc3b298beb0a9b6bcacbab5a8a70004a58eb000bb800014a5beaba7b4a1c7bdaeb6b0beacb7aeb1a7b208000380ba1da7aab0adafc2adaaa1a3b8a6b0c2aba6aab7a5aac19d06adacaea4bbb0b386b0079db3b4a1baa5c2a786b007be9fbcb1a61faf9efeb0e6b0 +96b00baa9cbc00afb9a9aeb4b80003800001130580001506b8b39bb3bea3bbbf00110e9aaaaea1b2c3b5b003b78eb007aab403ba9fb5c49b80b103a605a5a080b602b592cb800022bab4a4aab2b6acb6b0b3a2b3b4c2b9a7b8b99dbbb1adbaada2b7bc009db7c4a6b2a8b886b007bfacb1a9b5ac00b186b004a9b2b4aab6800000c2feb0e6b0 +96b023bdbe00b2b8a8adb3a4ba00b0a50baca3bdaa0200acb7aeb5b10100be9aaeb9b7b2c89e9b80b201a5008eb011aab5b4a3b3a6abc0afacb800c1baaaaea3c9800023abacb8aeb7a5bfafb6a0b8b7a2bda2a9b40800c3a9b1adafb8b9b1a400baafa5b8adbba586b007aea0b3bcaeb000b586b007b4a5baa9adbbabacfeb0e6b0 +96b00f9b000ba9afbab1aebb9ca6be00b2acbe80ae0ba80c0aacb4a304abaebca7b580b007a5b2afb9adb7bf008eb017baafa4b1c4b8a9adb2a9c500a6a8bab1b600b3b2bc98adb784000a0fa2c0aabba602ba00a7a380b70ca6abb5b1b3b400b1c1a0bba2bc86b005adb2bf9ca6b6800086b007adbcb1b0b3b89cb9feb0e6b0 +96b00cbc00b0acb7aaa5c5b6a6caac0080ba189ca4c3a0b400b3b10c00afacb2aaa9afadb3b1b0b7b394bd008eb009aaa0c6a3aca3aab9abb380aa02beabbd800004b4b1b8a8bd80001f06a8afc2b2a600b9a4b5a9119ca90dadb6b5b7abaaaba5b6b00ea9a2b2b6b5a986b007bbab9cbcb4b5b20086b007a8b5a3aea6b9b7a9feb0e6b0 +96b0270898c5b1a2afb6a2a5bd98af06bea6b9b1b9b808b2a70300b1baa3b1beafbda5b6b5a9adafbd99048eb037b2a705b3b2b7b6a8a7c4a9b4afbc0001afbba6b4aeacc3a809aab1afabc500adbda205a1bdbca8b7af9fabaeb4baacb5aa00b4b8b4adacaf86b007aaacbfa9b1aeadae86b007b8b3aeb8a9aebfa6feb0e6b0 +96b00700b1adacbbafabb780af1bbaa600acaab3afb400abb0b706b3000a0001a4b3acb6aaa9bfa5b7af80008fb013b700b2acaeadafbb9eb5b6a400bfadb0aeafacb580af2000a8b3b8adb0b100b7a80ba7c6a1b0afb0b4adbfb1a7b4abaeb700b1b3a2bbafb286b007abb4a8b7aea6c0ad86b004abb6aca8bd80a900b9feb0e6b0 +96b01a08a8b4a2bdb1aeb6b4acb2b005b8aca9aa00adb9a7b300acb2a6ba810009bda8abb5baaabaa304bb8eb006b1b301a9b6afa680ae2eafada4a80baeadb4b3a7b9b89fac00b4abb1b2b400b2ae00bdaebda4acbcb0b7a8b0b7a5b9aeaf03b8b2aeb2baa4b98eb005b1a4b2baadaf80ae86b007b1b301a9b6afa6aefeb0deb0 +96b01000c8aeb0a7b2a4a7aabaa102a1a5ab0c0080b714c198bb08afaebca2000200a8b2bda1b2b0a505b4a08eb022abb00eaab7b4afb9b0c1beb70f92aab9a8adbcaaa7cbb200b1a8b4ac00b3b1b200a7ae8000000c81000ebbaab0b1a5b0b400abbab0a7b7a7ad8fb006cda69fb3a2b9b286b007abb00eaab7b4afb9feb0deb0 +96b0170a96c6b1acbabbb4b0b8a9bbc1000700aeb2a897c7a8a20980000d0a00b7b5abbaacb6abba0900bdb38eb037b3ad00a1b4b6aba3b495b7a200c2bf9fbdb8a5b4ae9cbc00b8b5b7b401b0a0b500c3acb3b6aba4070aa6b3baaeb0bea219a5b4b3a9bbb6b78eb007ada6b7a9b7afb8a586b007b3ad00a1b4b6aba3feb0deb0 +96b00900029dbba5aab3aa000281001a0db6abafc09ec2b4afb7a9b6c792bbabb2b6a4adb5b100bba8b3a48eb019adbb04baaca5b2b5b1b5b1b200a8a9b5a6aab7b8b2c1b300a5a9800004b9b3c0a9bb800014aea50d06b8b0b1abbaa0bba00f95bfadb5abaea9ad8eb007bb00afc99cb9a2bf86b007adbb04baaca5b2b5feb0deb0 +96b027af0008aab9b0a9bbc3b1aeb6a6a8b4adb4aab6b9a7a5b0b2ada0c0b4adbb9fb9af0d00aca8ada8c28eb003adb000b680af2fbcadabbb9db4c600b0b3afc0aba5afb000c2c900b7bfa8a7a8b5a6b7030d069faba1a4bdc09eb1ae00aac1bda4aeabb080ae8eb007adc3ba9dc0abbe9d86b003adb000b680af01bcadfeb0deb0 +96b011bb9cb60001b8a5b0a2a5caa3b1bdb3b8a4b580a50cbbb8b1b3c0a7b9a89dbcb5010080a804aecbb0ada68eb002b3ac0880af11b1b69fc09ac1af9f0305a6b1acb9bda5afc280001712afbda4bab0b3afbbaba9adb0c8b5b4a09fb8b6bc00b8a480af80ae02bbbab28eb005ada6a59fb9a580b586b002b3ac0880af02b1b69ffeb0deb0 +96b027aab9aeada5050900021600050aa0acafb3bbaca8bca4aab3a5afb2aa110001a9abc5a3afb0ada0bf8eb02baabf93c5aa9eb1c0b4aeb0b5a7bc0100b2a9b7aa040005a2bab1a3aaa5acc6a7bb9cacbea3b8b6a2bea4b5ae800005b3a6afb9bfb380b001a8a58eb007aeb8b5b0b8afb3a986b007aabf93c5aa9eb1c0feb0deb0 +96b027acb9acb7b6a9b9aaa8a9bdaab300030100010008000c00030400010e99b5b2b4b3a2bfb1aeb4b6a68eb019b1a9bea6b2b5ada9b2a8b2afb5a6b0b50100b5b3a6b8aeb4b0b180b314bab1aeb2adbcb0acb9a6aeb6aa000300b4aeafb3b580a704aab5aeaabe8eb007c095b5bfa4aeafb186b007b1a9bea6b2b5ada9feb0deb0 +deb01facb4000604a6aaaeb1acbaafadb2abb4afadb4b5a7ae00010a99c1b1b5afb1b4feb0feb08eb0 +deb00aada6b3a5ae0c060500070080af04bd99b3b20380000b1303acb19dc1aaa5b7aaa6abfeb0feb08eb0 +deb00eb2c7aaaeb6a5acaeb3a1bd0007001780000eb8b5b4b3a4afaebcb7a2adbaadb1bbfeb0feb08eb0 +deb005a2baabb4b5ad80b001aeb580b113ae9cb3b6b3b1a1c6a6b7b6aea4b1b9b8afadb1a9feb0feb08eb0 +deb013b6adb7acbe96b0bbb1b3a4b0bdbbbca5b0a2c0a680a706b3b5b3b1b5aba680b700a3feb0feb08eb0 +deb012adb2a5a7abc3b9a5b7a8bcb6a4b89dc1b8b6a980b80ab3aeafb6a5abaaabb7b5b6feb0feb08eb0 +deb01fafa2bab0b8a1afb2abbea4acb5a8c2a2a9b4ad9bb8acb5a8b5acbab4aeab9faffeb0feb08eb0 +deb01faeabb7ada9b3b6adb2aeb3b2aab9a9b3b6aab8b7a5beabb5aeabb4a7b1bfadb4feb0feb08eb0 +feb0feb0feb08eb0 +feb0feb0feb08eb0 +feb0feb0feb08eb0 +feb0feb0feb08eb0 +feb0feb0feb08eb0 +feb0feb0feb08eb0 +feb0feb0feb08eb0 +feb0feb0feb08eb0 +feb0feb0feb08eb0 +feb0feb0feb08eb0 +feb0feb0feb08eb0 +feb0feb0feb08eb0 +feb0feb0feb08eb0 +feb0feb0feb08eb0 +feb0feb0feb08eb0 +feb0feb0feb08eb0 +96b003b4ba0001840001040380000002800006b0b8000206000887000408b4a203088a000401bbaa000a880006070010b1a7000586000601000a000dabbd88000616000c0008a6b48800070300020005aea6178100000282000102078000090700b7ab0d0007000f02800001040380000002800006b0b8000206000887000408b4a203088a000401bbaa000a880006070010b1a7000586000601000a000dabbd88000616000c0008a6b48800070300020005aea6178100000282000102078000090700b7ab0d0007000f02800001040380000002800006b0b8000206000887000408b4a203088a000401bbaa000a880006060006a1b4adb49eb0 +96b000ae8000000d800000108000000580008008080007bc9a0016000103880003afa4070580000002880005bb9c0104000a8700040700a4ae028800000d81000397ba00088600060d00010005aeb987000105048000040203a5b90c8000000480000603000301030015800001bcb08000020c05108100000580008008080007bc9a0016000103880003afa4070580000002880005bb9c0104000a8700040700a4ae028800000d81000397ba00088600060d00010005aeb987000105048000040203a5b90c8000000480000603000301030015800001bcb08000020c05108100000580008008080007bc9a0016000103880003afa4070580000002880005bb9c0104000a8600030c0800c280b201a4b19eb0 +96b002ad0018810000028500041aa8b5030c800002060001860003c6a1020780000009880004bdb50600128800800105bba001040602890004c4b90005038600000280000417acad00018700000f80000207a9aa810004110700060280000209001a800004bfae1200178000020a00028400041aa8b5030c800002060001860003c6a1020780000009880004bdb50600128800800105bba001040602890004c4b90005038600000280000417acad00018700000f80000207a9aa810004110700060280000209001a800004bfae1200178000020a00028400041aa8b5030c800002060001860003c6a1020780000009880004bdb50600128a0005bba3b1b8b4af9eb0 +96b005bbaeb0a4babe81b50ebaabadc6bca3a8a3b9a8b8b597c5a186b003a6b4b6a880b101bd9d86b007b3a79fb4bfa9a5ba86b007b6aba2bebca4aca886b007a9caa798b3bbb59f86b007a8bcb296adbfabb286b009c291c1a2a4bfacbfb9ad80a523afb1acb4a8a5bfa5a9c4a8a98fd2a19ec0aaafaeb5baabadc6bca3a8a3b9a8b8b597c5a186b003a6b4b6a880b101bd9d86b007b3a79fb4bfa9a5ba86b007b6aba2bebca4aca886b007a9caa798b3bbb59f86b007a8bcb296adbfabb286b009c291c1a2a4bfacbfb9ad80a523afb1acb4a8a5bfa5a9c4a8a98fd2a19ec0aaafaeb5baabadc6bca3a8a3b9a8b8b597c5a186b003a6b4b6a880b101bd9d86b007b3a79fb4bfa9a5ba86b007aacbacba9ea8c0ab9eb0 +96b006aab0aac6b1a5ab80a70eafb5aba3aeb8b2a7b7adb9a4c7a0b786b207baafb6a5bcb2a5bd86b205b6aac2b1adc080aa86b207acb3b1b2a7aec5b786b207b5a8b5baafaeb2b886b207abb9adbabda7afb686b20ca0b7bbacb8a6a8a5adafabb4b980a820bdc0b1abb4b1acb5b9c0afa2b3bcb5b4ada7afb5aba3aeb8b2a7b7adb9a4c7a0b786b207baafb6a5bcb2a5bd86b205b6aac2b1adc080aa86b207acb3b1b2a7aec5b786b207b5a8b5baafaeb2b886b207abb9adbabda7afb686b20ca0b7bbacb8a6a8a5adafabb4b980a820bdc0b1abb4b1acb5b9c0afa2b3bcb5b4ada7afb5aba3aeb8b2a7b7adb9a4c7a0b786b207baafb6a5bcb2a5bd86b205b6aac2b1adc080aa86b207adaea2adc0b89dad9eb0 +96b002bca6ac80aa12acb6bec3a2aac5b7a3a9b4c1a5b7a5b2a8b5ac86ae07a3b0acc194b3b5a586ae07a9b9aba99fa0bdaf87ae05b7a9aabea99487ae07b4a2acaeb1b0a1b089ae04a1a7b8b1a787ae2ec2a0c1a1b2c4b6aabcb5b6b5a9acaba5a7c2b5a8b4aba8aca6bfb89aa9baabc3a2aac5b7a3a9b4c1a5b7a5b2a8b5ac86ae07a3b0acc194b3b5a586ae07a9b9aba99fa0bdaf87ae05b7a9aabea99487ae07b4a2acaeb1b0a1b089ae04a1a7b8b1a787ae2ec2a0c1a1b2c4b6aabcb5b6b5a9acaba5a7c2b5a8b4aba8aca6bfb89aa9baabc3a2aac5b7a3a9b4c1a5b7a5b2a8b5ac86ae07a3b0acc194b3b5a586ae07a9b9aba99fa0bdaf86ae07adbfb4b0a3a5bdb69eb0 +96b000a980b914a4bcb9a2a7a9b5b2a6aab6b5ada2b2b4bbada9bcac86b200b480b604a4c8a9b3a986b207b0afb0b3c4bda2ac86b204b697b3b7a980c087b200ad80b800b580af01b5ae86b207b3b6b9aeb0b1a9b986b211bc9ab6a0b4b1b99ca8b1a3a9afb2beaec3a180ae1badb4aec5b4b3a2b7bfa8afb4a9b5b2a6aab6b5ada2b2b4bbada9bcac86b200b480b604a4c8a9b3a986b207b0afb0b3c4bda2ac86b204b697b3b7a980c087b200ad80b800b580af01b5ae86b207b3b6b9aeb0b1a9b986b211bc9ab6a0b4b1b99ca8b1a3a9afb2beaec3a180ae1badb4aec5b4b3a2b7bfa8afb4a9b5b2a6aab6b5ada2b2b4bbada9bcac86b200b480b604a4c8a9b3a986b207b0afb0b3c4bda2ac86b200b480a404bbc9a8baa39eb0 +96b017adbfa0b9aea7afb9a9bbaca5bbb2a3b8b4b8a8a2b6b8a1b386b107b7a4b3b49db4aaba86b107a8bba8acb3a6b1b686b101acb980b203aca5b0ab86b107b3a7b2afabb4afad86b107a8b1a4b8b9a9b6a886b12fa9b2afb8afb0a4b7b3b6adbab0a2b5ada2c4a2aabfacb1a9b0afb9a9abb6a7b1a9bbaca5bbb2a3b8b4b8a8a2b6b8a1b386b107b7a4b3b49db4aaba86b107a8bba8acb3a6b1b686b101acb980b203aca5b0ab86b107b3a7b2afabb4afad86b107a8b1a4b8b9a9b6a886b12fa9b2afb8afb0a4b7b3b6adbab0a2b5ada2c4a2aabfacb1a9b0afb9a9abb6a7b1a9bbaca5bbb2a3b8b4b8a8a2b6b8a1b386b107b7a4b3b49db4aaba86b107a8bba8acb3a6b1b686b107a9b2bda8a3b79cbf9eb0 +feb0feb0feb08eb0 +feb0feb0feb08eb0 +feb0feb0feb08eb0 +feb0feb0feb08eb0 +feb0feb0feb08eb0 +feb0feb0feb08eb0 +feb0feb0feb08eb0 +feb0feb0feb08eb0 +feb0feb0feb08eb0 +feb0feb0feb08eb0 +feb0feb0feb08eb0 +feb0feb0feb08eb0 +feb0feb0feb08eb0 +feb0feb0feb08eb0 +feb0feb0feb08eb0 +feb0feb0feb08eb0 +8eb080b115acaeb3ada7aeb6acaab2b4aeb8abb2a8b7b8a9adb2b486b019b8adaaaeb4ada6bda6bdb9a2b8b99eb7aab8a8b3afb4adafaead80b409b1afabb0b1a5b2afaab280b01fa9b1adbca7abb2b6abb3aab6b3adb4afb2a7b5b2aeb5abaab5abb1b7aca6afb5feb0feb096b0 +8eb00ab3afadaeb3babebdb1b7ae80ba07a2bbaabea4acbbb580b300af86b009a4b1b4b3adb8adaebea680ad0aa5b4bab3b0afb3b0abb4aa80b20fb4a2b3b4a5b8b5b2baaeb8b1a5b6a7b880ae80b004baabacadb480ae13c3a8a7bda8bbb8adb6b1aac3aea8acb3b4b5b2a8feb0feb096b0 +8eb017a8acbcbaa8a9ae9fb4a9a6a2b0aabab8aeb4b2afaea8acb986b01fafb5abb3a6bcb2a4adb3b2b5b3a3a2b1b2a4b6ada8b1abb1a9adb6a6a9bdb0a880a903b1acadb680b411ada9b4a8afb4a5b1adb0bca3b1acadabacb780a900b480ae05b3b7b5b0abad80b400acfeb0feb096b0 +8eb017b9abafaca1b9c8aeafa7c0b1b8b3a1aea7b8b0abb2b6b4a486b021b6b1a7bb9babb7b6b1b59fb3c7b2adafb3a8b2b3b1afb6afb0b3b7b0b1b8b2acbab480ac23afaba8b0acb6b7acb4aeacb3bca2bbb5a7b9c0a9b8aeadbbafaebca3b0b5b3adacaaaeb8feb0feb096b0 +8eb017b3a3adbab5b28c46324e3135333f88b98c612e365887b7b286b01d9ab3bba7472e44373b3c52795661b6acb0b2a5b6b4a8b4a9b3b49abbba9880b327ac924839424c88afaebca8adb1aab3a6bb9ea2bcb0b3afb3b0aeb3b8adacb8b0a5acadb3baada6b6feb0feb096b0 +8eb001b7ac80ae13aab7bdaaacad036db7acbe56001680a31a0084b286b047c2b6a8aaabc09e0777a0afb46a5cbab0b1bfa8bab1aeaab9aeacc1a9abc3adae63002e838c2e008aacb5aab9a4b6bfb5a2c1b2afb2a6a8b0aeaaafa9b3baa9b2b4b9acabbab2a8b5feb0feb096b0 +8eb017a6b1bbb6a7a3adb7adbc007ab2a49d2a33bdb9aaa74b4fc086b0029faabb80ad3bb9ab007cb9a7a9897fbe957b8b858675916ab0b5ada66d74afa89f2a3dbcafaea6376eb58a87977fc29a887a93b3b19d6fbcb0906eb5b17a8881729080b404a4afb2acb6feb0feb096b0 +8fb016afaaafb9b4acb0b3a80078afbc6a0078b3a9afb6a9b7ab86b046b7acbbabb1adac016eacbbab3d39ae760511221300360068aca20017210b907b007da6b1b7aebba4b236203236a834003d0066ac6e02b0ab3601b0af0005320a348fb9acafb3acfeb0feb097b0 +96b05cacb60076b7b5770082a8bc6d75796cb7b3b1ae8d797a7276b6a1b6adb7b8a90074b4b6af363bac7800b6ab0087ac2a3eb24816adbd1647770087b9af6a7f7675bc2b1986b8930087b83e2da06c00b0b13c03a4ba0020c07a0e65b59bbe80ae00b1feb0feb096b0 +96b021abbc0072a8ad740067bbb470795706b0aeb5b1846c787677b3aabbafabacae0474af80aa3b3740b37004b0b8006fb34438b30015363415017208649ead72745003ab353cab9d310aaf9b8c07657017a2ac3500b6b5037a91c53b37afb7afacb7a9feb0feb096b0 +96b017acbc007aacb57b0050aea9aaba7700afaeb5a76740443c3680ae45b7b3abafb80076b5aeb1393eb97204a6af006ead3439b0002b85697577800453b9c9a8b37600a74633b4c24500a8b873007a7b00aac04409afa9007bb5ad3d27b2bda6aeb4a9feb0feb096b0 +97b00dad0078adc09d3a1582b7af8c001380b304b6b1876f75806e80af06abb3afb5b2007080b53cb63734b07500bcb40082bc2c42b7411699c1673fa92b168299ba860004b0472daaa9810494b44e37947800afa80e00b2b40324b67d1958baa8aeb3a9b1feb0feb096b0 +96b05fb3a30f799fb5bd9724002232005a00adb0abb5b0b1b8b2bbb2b4abb1a9ada80d76aeadb14847a97b00b2a7036ab03c37afa90020350050b0a030003a20005602bb3338c0a7ad2200320259b8b5070b343500b2ad000b221f3297b79fb8b1acb2feb0feb096b0 +96b034b3b065a3a8a6b9bab68f7f6d94a07fbbb0a2acb1b4b1a4adacb3b2b3a7aeb5699ab1aab67d85b69473b3b77493b68d85af9eba7c5d80a928b2b1a78e647c96a579a78187c1acaabe8f7298bfaba8ad75848e65b2bb00796c758ab3acafb8abb9adfeb0feb096b0 +96b01fafb7acbdb7a9adaea4b2a6a4c1b4a2abb5acb5b4b5b7adb5aaadb4b2adb6b9b180b506afbda8b5baadb680ab33bab2a8b0b5bdacb4a6bbbaa4bdb2b0beafb3afa7adb1c3a7a8bca4b59eb0b1adb29dc2afb8a8babeb6007cb1adb8b3abb5b3adb4feb0feb097b0 +96b004adabb4a5af80b408acafb8b1b8a9afbaaf80b004b8aaa7b3ae80b415aaafadb0b4a3b6b2acadb6acb8a6b1a5beaab1b2acb880ae19b0b6b1afa6c59fb6a5aeb0acb4b3adaeadb0b1a5b9b1b4acb8a480b902a6b2a880af0daca3b5b2adb4a9b1b3a9b1b4a2bafeb0feb096b0 +96b013b1acada2bdb3acb5a9b7a5bab1a8aebcb1aaafb680b216b1a7abb5b2adb3b4afb1abb2b4aab4ada6bbb1b2aeaaac80b281ae07b4b1acb4b7abb3ae80b411acb5b8a3b0b7acb7ada2baafabb2b4adaaad80b10fadb5b4b1b3afacb2b0b1b3b4b3b1aeacfeb0feb096b0 +96b02caab7bfafadafb0a4b7afb1acadbba39eb8aeadafacb0b8bbafb4b2aeb0aeabafb3a8b1aeaab9b89fa8afb5b4b181af00b680a81eb1aeaab0b7aeb3b1acaaa8aebcb4a6aab2b7bab1a8b4b3b0aeb4b9b5acafae80ad00af82b006afaeadaeafb2b3feb0feb096b0 +97b00faeadb5abacb9bab19eadbab4a8b0c5b880b301b5b080a802acb3b280b105b0adaeb1adb080b806a7b0bbb5adaeb180b503b1b0b1b380b500b380b103aea7abb780b014c0baabb0c0abb9aaa6b0a4baaaafb1afaeafaeacb580ad0cafadb1b4aeb5b3b1afaeafb0b1feb0feb096b0 +96b016b3b0a6b3b1aaa4a7abb8aeafaaa3bd9ea7abaeb3b7b1ad80b402aeb1b480b11eb5b4b1b7a0b0b8b2a4adb7aea7aab0b2b1afabafadaeb5b7b4b6bdada6b0b180a40bb6a7a8bab6b4b3a9bbb2b3b483b30ab5adb0b3acaeb2aaaeb0b180b202b0aeadfeb0feb096b0 +96b003b7afaeaa80b555aabcb7b0a9b0b4b9baafb2bbb3aaafb0aeb8b5acb1b5afb3b5a7aebba3b4a9b4bab8b3b1aeabadafaeabb3afa7acb2a5a4bcacb0bab2a7bdc5a6b6c0a9abb8b1b0a8b8aea6a9b2b5b1abaeadb2b3afaeb0adacadaeaffeb0feb09ab0 +96b019ac393a3941354f9cacb5ae692e402f628fb4b9acb1afa5aab5ad80b21ba9b2ae8d283f32483271ada7abb8bdb5b1b2aca067a4bcafb3b7aeab80b00fb4904724364b83b5a9abb3a8b5afaeaf80b20faca9aeb6acb4b0afb9b7b0b6bbb8b4b080ae01b0b1feb0feb096b0 +96b007ad0172b5ae652b1f80a72c290642af6c103b89b0adb8bbb1b4b3adb4afa7b6ab7815a8bfa42e0349bdabb0a9a0abb8a27c006db1afb2b9b180af26b958002d9888350f75afb5b7b0aeb7b0afb2b7b5b0afb3aeb8a29bb8b4a2aeaaabaeb0b1b0afaefeb0feb096b0 +96b05fb90080acafab6e005d850074afadaf8c2f8db9abacafaab2b0acb5afa8bdaf7100ada8c1ac340496ae9c7d759ab89250055296b4a26c6aa6af903738a5bf9db12877aa8986988ea8ad8a768cb0b69776abb38d81aaa58998768295a8b3b6b2affeb0feb096b0 +96b002b5007c80af01b9a5803f043807aeb7a080b206b1afa9afb1adb380b424acabb4adb7b37603b0aab5a4bc026c9f02302b08909427082287a2003424029f710c68b9a780af04aeb7b23824802b0cb51c0b390066a46e06b0b8310080b00706002616209dacb1feb0feb098b0 +96b01caa0784aba3b6b43b2840039fb69f73818088afb7b6a97c6e7d758bada980ad407600abaebca3ac00858d39b8b40073b168006fb37c3ec4a70071700081adab737b726bb6381a86b4930096a05921b17f00afab3103abb10031b3782268afabacb8feb0feb096b0 +96b01cb20069b9b7aaa1424f2f02b3b6a16771193aa7b0afb5737a6f648bc0b780b2407907b2b1bab3b60073b23226000476ab930c80afbe261e08006d810069adcc746a5211a64433aac02300b3b76a00666f00b3ac4009a4aa0076b9af3440b2b6b0a6feb0feb096b0 +96b057a50474a9b0bd8811363c0089aaa7b7b83a46b7aca8af3f35443d6ba5a3a9ac6e00b0a4a3b06e0080240482a7027bb55e0063b8210079be00777c094aacaa95c46606b0343ea8b04705ad997e01817808b3ac3c02b7b9017080b5052c36a0b1b6b3feb0feb096b0 +96b044aa0980b6b7a74b086ebf012fbbb5aa450127b3b2adbd697b76738dafacbabb7700b9b7acaa1300ad0738a9880970bf7a0187a30045ae880074a1371586bab18e1000c3334080b318830096b45e128e8200b8a82600aeb10028b4872075b5ada4b4feb0feb096b0 +96b017b80019383019115daaad84000135012f2348b2b1a9bc9cc081ae0fb2a9b0ab71081e3c3f0004a1b746034380003222ae7500367f67032d060029c29525002722004d04ab3132a6b9ac220a29006eb7a00c08361711b9af000719141695b0b7adb6feb0feb096b0 +96b05fb572847d7a7b8aa9aab9bab1836793889e8f9ca1b4c5afabafb7afb2b3b4b69c6793786684a4b3a3b5726f8b8186b0a489779da07b757e8f6bb0a9b0837a7b8fb46abd9396bcaea9b47f7a9db0bda9ab77928473a7aa0d6575849dbca5b3b0adfeb0feb096b0 +96b01db1b0abacb4a5bab7ba9eb0b7a2b4acb6aab2b4b8b0a5acb2abb6acb1b5aa80ae15baa9a7b6a4beabbaa3c5aaabbca8a2bcacb4a3bda8b580b116aeb9abb8aaadb7aab4acb7a4b3b0a4beb2aeb6a9b3a9b680b40eacb0b5abb70077b4a4b6b0aab3b1b7feb0feb096b0 +feb0feb0feb08eb0 +feb0feb0feb08eb0 +feb0feb0feb08eb0 +feb0feb0feb08eb0 +feb0feb0feb08eb0 +feb0feb0feb08eb0 +feb0feb0feb08eb0 +feb0feb0feb08eb0 +feb0feb0feb08eb0 +feb0feb0feb08eb0 +feb0feb0feb08eb0 +feb0feb0feb08eb0 +feb0feb0feb08eb0 +feb0feb0feb08eb0 +feb0feb0feb08eb0 +feb0feb0feb08eb0 +feb0feb0feb08eb0 +feb0feb0feb08eb0 +feb0feb0feb08eb0 +feb0feb0feb08eb0 +feb0feb0feb08eb0 +feb0feb0feb08eb0 +feb0feb0feb08eb0 +feb0feb0feb08eb0 +feb0feb0feb08eb0 +feb0feb0feb08eb0 +feb0feb0feb08eb0 +feb0feb0feb08eb0 +feb0feb0feb08eb0 +feb0feb0feb08eb0 +feb0feb0feb08eb0 +feb0feb0feb08eb0 +gr +gr +%%PageTrailer +rs +%%BoundingBox: 18 300 514 774 +showpage +%%BeginSetup +%%BeginFeature: *PageRegion Letter + letter +%%EndFeature +%%EndSetup +%%Page: 11 11 +%%BeginPageSetup +/#copies 1 def +sv +1.00 -1.00 sl +18.00 -774.00 tl +%%EndPageSetup +%%BoundingBox: (atend) +gs +gr +%%PageTrailer +rs +%%BoundingBox: 18 774 18 774 +showpage +%%Trailer +%%Pages: 11 +end +%%DocumentSuppliedResources: font StarBats +%%EOF diff --git a/doc/Building.html b/doc/Building.html new file mode 100644 index 0000000..0402a7d --- /dev/null +++ b/doc/Building.html @@ -0,0 +1,262 @@ + + + +Put your title here!! + + + + + +
+ + + + Building H5Part + + + +

Building H5Part

+ + +
+ +

Quickstart for the impatient

+
+ +
    + +
  1. Configure:
    + For the serial implementation +
    +    ./configure
    +
    + For the parallel implementation configure with +
    +    ./configure --enable-parallel
    +
    + If you also want to build fortran bindings, add the + --enable-fortran flag to the configure line. +
  2. + +

  3. Make the Library:
    + Type make to build the library. The libraries are + named accordingly. +
      +
    • libH5Part.a: Serial C/C++ Library.
    • +
    • libpH5Part.a: Parallel C/C++ library.
    • +
    • libH5PartF.a: Serial F77/F90 library.
    • +
    • libpH5PartF.a: Parallel F77/F90 library.
    • +
    +
  4. + +

  5. Make Regression Tests and Examples:
    + Just type make tests to build regression tests + and/or example programs for H5Part. These tests are +
      +
    • H5PartF: Fortran example (only build if --enable-fortran + is specified).
    • +
    • H5PartFpar: Parallel Fortran example (only built if both + --enable-fortran and --enable-parallel are specified).
    • +
    • H5PartTest: Serial C example. This test writes a sample + datafile and then reopens it for reading. It demonstrates + the most basic reading/writing capabilities.
    • +
    • H5PartTestP: Parallel C example (only built if + --enable-parallel is specified). This program only works + as an MPI/parallel program.
    • +
    • Bench: This program will only be built if + --enable-parallel is specified. It compares the + performance of raw binary + I/O (one file per processor), raw binary MPI-IO based + parallel I/O to a single file, and the parallel H5Part/HDF5 to + a single file. Generally, H5Part should be very close to the + MPI-IO implementation in terms of performance, but slower + than one-file-per-processor. If HDF5 is slower the + MPI-IO, it would indicate that some performance tuning + will be required for your platform (contact us, and we will + see what we can do!).
    • +
    +
  6. +

  7. Building Your Own Programs:
    + There are many different subtleties to linking on various + computer platforms, but typically one does the following. +
      +
    • C/C++ Serial: +
      #include + < H5Part.h > into your + source file. +
      $CC -Ipath_to_H5Part.h + -Ipath_to_hdf5.h -o outfile + MyFile.cc -Lpath_to_libH5Part.a -lH5Part + -Lpath_to_libhdf5 -lhdf5 -lz -lsz +
    • +
    • C/C++ Parallel: +
      #include + < H5Part.h > into your + source file. +
      $MPICC -Ipath_to_H5Part.h + -Ipath_to_hdf5.h -DPARALLEL_IO + -DH5_HAVE_PARALLEL -o outfile + MyFile.cc -Lpath_to_libH5Part.a -lH5Part + -Lpath_to_libhdf5 -lhdf5 -lz -lsz +
    • + +
    • Fortran Serial: +
      include + 'H5Part.inc' into your + source file. +
      $FC -Ipath_to_H5Part.h + -Ipath_to_hdf5.h -o outfile + MyFile.cc -Lpath_to_libH5PartF.a -lH5PartF + -Lpath_to_libhdf5 -lhdf5 -lz -lsz -lc +
    • +
    • Fortran Parallel: +
      include + 'H5Part.inc' into your + source file. +
      $MPIF90 -Ipath_to_H5Part.h + -o outfile + MyFile.cc -Lpath_to_libpH5PartF.a -lpH5PartF + -Lpath_to_libhdf5 -lhdf5 -lz -lsz -lc +
    • +

    + +
+ +
+ + +

Details for H5Part Configure and Build

+
+ + + +

Configure Options

+
+ H5Part uses GNU Autoconf to generate a Makefile from the makefile + template called Makefile.in. + The configure script pays attention to the following + configure options;

+ +

    +
  • --prefix=PREFIX Install files in PREFIX
  • +
  • --enable-fortran By default H5part will make no attempt to + build Fortran bindings. If you add the + --enable-fortran flag to the ./configure line, it + will create a small test program to determine how to generate + the fortran bindings and then create a library that includes + those bindings. You may need to set the fortran compiler by + setting the FC environment variable in your shell.
  • +
  • --enable-parallel The version of HDF5 that you build for + Parallel I/O differs from the library you would build for + serial I/O. Consequently, the H5Part libraries must be built + specifically for the kind of I/O you have in mind (parallel or + serial). The configure script will attempt to find an + mpicc if it is available. If no + mpicc is available it will use the regular + C-compiler and will try to locate the location of the MPI + include files and libraries. You can assist the configure + program in its search by setting the MPIROOT + environment variable.
  • +
  • --enable-tools Builds the currently available tools +
    + h5pAttrib, an inspection tool that prints the number of timesteps in a file + the file attributes, the step attributes, the dataset names and their values. +
    + h5pToGNUplot, a converter to two column ASCII format to load in GNUplot. +
  • +
  • --enable-python Under construction Option to build python bindings. It has not been tested. +
  • +
  • --help Prints configure options. +
  • +
+

+ + +

Make Options

+ + +
    +
  • make
  • builds the libraries and test programs +
  • make install
  • builds and installs +
  • make clean
  • removes extraneous object files +
  • make distclean
  • returns configuration to unconfigured state +
+ + +

Environment Variables for Configure

+
+ The + configuration script is of limited intelligence. Sometimes, you + have to define the following environment variables in order to + help it on its way. You will often only need to tell it where to + find the HDF5 libraries (H5ROOT for serial or + PHDF5ROOT for parallel builds). All of these + environment variables can also be overidden in the Makefile that + is generated by the autoconfigure script. + The configure script pays attention to the following + environment variables; +

+ +

    +
  • CC: Use the CC environment variable to tell the + configure script where to find the C compiler. You can + also directly modify this variable in the + Makefile that is generated by the autoconfigure
  • +
  • CXX: Use the CXX environment variable to tell the + configure script where to find the C++ compiler. You can + also directly modify this variable in the + Makefile that is generated by the autoconfigure
  • +
  • FC: Use the FC environment variable to tell the + configure script where to find the fortran compiler. You can + also directly modify this variable in the + Makefile that is generated by the autoconfigure
  • +
  • MPICC: If you are building for parallel C I/O, then it is + useful to tell the configure script where to find the + mpicc script. Normally, mpicc is + merely a wrapper script for a build using a regular C-compiler. + If no mpicc is available, then the + configure script will attempt to locate the mpi + header files and libraries. In that case, it may be useful to + define the MPI_HOME environment variable.
  • +
  • MPICXXIf you are building for parallel C++
  • +
  • MPIFC: If you are building for parallel Fortran I/O, then it is + useful to tell the configure script where to find the parallel fortran compiler. +
  • MPIROOT: Set this environment variable to help the + configure script to locate the MPI libraries that should be + used to build the parallel version of the libraries. This + variable will be ignored if configured only to build the + serial implementation of the library.
  • +
  • HDF5ROOT: Find the path to your serial HDF5 installation. If you + are building the serial version of H5part, then you should set + the PHDF5ROOT environment variable.
  • +

+ +

Common compiler environemt variables for NERSC platforms

+
    +
  • DaVinci: Linux ia64
  • + CC=icc CXX=icc F90=ifort MPICC=icc MPIFC=ifort MPILIB=-L/usr/lib/ -lmpi MPIINC=-I/usr/include +
  • Bassi: AIX
  • + CC=cc_r CXX=cc_r FC=xlf_r MPICC=mpcc_r MPICXX=mpcc_r MPIFC=mpxlf_r +
  • Jacquard: Linux x86_64
  • + CC=pathcc CXX=pathCC FC=pathf90 MPICC=mpicc MPICXX=mpicxx MPIFC=mpif90 +
  • Starsky.lbl.gov: (Darwin) PowerPC
  • + CC=gcc CXX=g++ FC=g95 +
+
+NOTE: You might need to set the MPI library path (MPILIB) and MPI includes (MPIIINC) if they are in non standard places. For example:
+MPILIB=-L/usr/lpp/ppe.poe/lib -lmpi_r MPIINC=-I/usr/lpp/ppe.poe/include/thread +

How to set the variables for configure:

+It is very simple just call env with the variables together with configure. Notice the quotes in MPILIB. +
+% env CC=icc CXX=icc F90=ifort MPICC=icc  MPILIB=-L/usr/lib/ -lmpi MPIINC=-I/usr/include ./configure (configure options follow here)
+
+In the worst case, you can edit the src/Makefile.am and test/Makefile.am as + needed to perform the proper build. +
+ diff --git a/doc/BuildingHDF5.html b/doc/BuildingHDF5.html new file mode 100755 index 0000000..d7e85c2 --- /dev/null +++ b/doc/BuildingHDF5.html @@ -0,0 +1,68 @@ + + + +Put your title here!! + + + + + + +
+ + + + Building HDF5 + + + +

Building H5Part

+ + +
+ +

Configure options

+ +To set the installation path configure with +
+	./configure --prefix=your hdf5 installation full path, e.g.--prefix=/usr/local/hdf5 
+
+ For the serial implementation configure with +
+	./configure
+
+ For the parallel implementation configure with +
+	./configure --enable-parallel
+
+To enable shared objects configure with +
+	./configure --enable-shared 
+
+ +

Environment Variables

+ +To add HDF5 to your PATH and LD_LIBRARY_PATH edit your +.tcshr, or .cshrc depending on the shell you are using and add +
+setenv HDF5 "your hdf5 installation full path"
+setenv PATH ${PATH}:${HDF5}/bin
+setenv LD_LIBRARY_PATH ${LD_LIBRARY_PATH}:${HDF5}/lib
+
+if you are using bash, add to your .bashrc +
+export HDF5="your hdf5 installation full path"
+export  PATH=$PATH:${HDF5}/bin
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${HDF5}/lib
+
+ +Open a new terminal or do a +source .tcshr (.cshrc, .bashrc) in the one that you are using. + +You can continue downloading and installing H5Part. +
+ + diff --git a/doc/Downloading.html b/doc/Downloading.html new file mode 100644 index 0000000..8d73223 --- /dev/null +++ b/doc/Downloading.html @@ -0,0 +1,48 @@ + + + +Put your title here!! + + + + + + +
+ + Downloading H5Part + + + +

Downloading H5Part

+
+
+ +

Subversion access

+
+ +
  • Anonymous via. Savannah:
    + Use svn from tigris +
    +    svn checkout svn+ssh://svn@savannah.psi.ch/afs/psi.ch/project/amas/svn/root/amas/H5Part/ .
    +
    + Password is svn. +
  • Using AFS:
    + You need AFS (openAFS) and must have an AFS-Account at PSI which in consequence gives you + the needed access right. +
  • +

    +    svn checkout file:///afs/psi.ch/project/amas/svn/root/amas/H5Part/ .
    +
    +In case of trouble please contact the person mentioned at the bottom of this page. +
    +
    Andreas Adelmann
    + + +Last modified: Mon Jan 9 22:18:55 CET 2006 + +
    + + diff --git a/doc/Doxyfile b/doc/Doxyfile new file mode 100644 index 0000000..aecf8a5 --- /dev/null +++ b/doc/Doxyfile @@ -0,0 +1,244 @@ +# Doxyfile 1.4.5 + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- +PROJECT_NAME = H5Part +PROJECT_NUMBER = V1.0 +OUTPUT_DIRECTORY = ./doxydoc +CREATE_SUBDIRS = NO +OUTPUT_LANGUAGE = English +USE_WINDOWS_ENCODING = NO +BRIEF_MEMBER_DESC = YES +REPEAT_BRIEF = YES +ABBREVIATE_BRIEF = "The $name class" \ + "The $name widget" \ + "The $name file" \ + is \ + provides \ + specifies \ + contains \ + represents \ + a \ + an \ + the +ALWAYS_DETAILED_SEC = NO +INLINE_INHERITED_MEMB = NO +FULL_PATH_NAMES = YES +STRIP_FROM_PATH = ../src +STRIP_FROM_INC_PATH = +SHORT_NAMES = NO +JAVADOC_AUTOBRIEF = NO +MULTILINE_CPP_IS_BRIEF = NO +DETAILS_AT_TOP = NO +INHERIT_DOCS = YES +SEPARATE_MEMBER_PAGES = NO +TAB_SIZE = 8 +ALIASES = +OPTIMIZE_OUTPUT_FOR_C = NO +OPTIMIZE_OUTPUT_JAVA = NO +BUILTIN_STL_SUPPORT = NO +DISTRIBUTE_GROUP_DOC = NO +SUBGROUPING = YES +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- +EXTRACT_ALL = YES +EXTRACT_PRIVATE = NO +EXTRACT_STATIC = NO +EXTRACT_LOCAL_CLASSES = YES +EXTRACT_LOCAL_METHODS = NO +HIDE_UNDOC_MEMBERS = YES +HIDE_UNDOC_CLASSES = YES +HIDE_FRIEND_COMPOUNDS = NO +HIDE_IN_BODY_DOCS = NO +INTERNAL_DOCS = NO +CASE_SENSE_NAMES = YES +HIDE_SCOPE_NAMES = NO +SHOW_INCLUDE_FILES = YES +INLINE_INFO = YES +SORT_MEMBER_DOCS = YES +SORT_BRIEF_DOCS = NO +SORT_BY_SCOPE_NAME = NO +GENERATE_TODOLIST = YES +GENERATE_TESTLIST = YES +GENERATE_BUGLIST = YES +GENERATE_DEPRECATEDLIST= YES +ENABLED_SECTIONS = +MAX_INITIALIZER_LINES = 30 +SHOW_USED_FILES = YES +SHOW_DIRECTORIES = YES +FILE_VERSION_FILTER = +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- +QUIET = NO +WARNINGS = YES +WARN_IF_UNDOCUMENTED = YES +WARN_IF_DOC_ERROR = YES +WARN_NO_PARAMDOC = NO +WARN_FORMAT = "$file:$line: $text" +WARN_LOGFILE = +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- +INPUT = ../src +FILE_PATTERNS = *.c \ + *.cc \ + *.cxx \ + *.cpp \ + *.c++ \ + *.h \ + *.hh \ + *.C \ + *.CC \ + *.C++ \ + *.H \ + *.HH +RECURSIVE = YES +EXCLUDE = +EXCLUDE_SYMLINKS = NO +EXCLUDE_PATTERNS = +EXAMPLE_PATH = +EXAMPLE_PATTERNS = * +EXAMPLE_RECURSIVE = NO +IMAGE_PATH = +INPUT_FILTER = +FILTER_PATTERNS = +FILTER_SOURCE_FILES = NO +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- +SOURCE_BROWSER = YES +INLINE_SOURCES = NO +STRIP_CODE_COMMENTS = YES +REFERENCED_BY_RELATION = YES +REFERENCES_RELATION = YES +USE_HTAGS = NO +VERBATIM_HEADERS = YES +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- +ALPHABETICAL_INDEX = NO +COLS_IN_ALPHA_INDEX = 5 +IGNORE_PREFIX = +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- +GENERATE_HTML = YES +HTML_OUTPUT = html +HTML_FILE_EXTENSION = .html +HTML_HEADER = +HTML_FOOTER = +HTML_STYLESHEET = +HTML_ALIGN_MEMBERS = YES +GENERATE_HTMLHELP = NO +CHM_FILE = +HHC_LOCATION = +GENERATE_CHI = NO +BINARY_TOC = NO +TOC_EXPAND = NO +DISABLE_INDEX = NO +ENUM_VALUES_PER_LINE = 4 +GENERATE_TREEVIEW = NO +TREEVIEW_WIDTH = 250 +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- +GENERATE_LATEX = YES +LATEX_OUTPUT = latex +LATEX_CMD_NAME = latex +MAKEINDEX_CMD_NAME = makeindex +COMPACT_LATEX = NO +PAPER_TYPE = a4wide +EXTRA_PACKAGES = +LATEX_HEADER = +PDF_HYPERLINKS = NO +USE_PDFLATEX = NO +LATEX_BATCHMODE = NO +LATEX_HIDE_INDICES = NO +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- +GENERATE_RTF = NO +RTF_OUTPUT = rtf +COMPACT_RTF = NO +RTF_HYPERLINKS = NO +RTF_STYLESHEET_FILE = +RTF_EXTENSIONS_FILE = +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- +GENERATE_MAN = NO +MAN_OUTPUT = man +MAN_EXTENSION = .3 +MAN_LINKS = NO +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- +GENERATE_XML = NO +XML_OUTPUT = xml +XML_SCHEMA = +XML_DTD = +XML_PROGRAMLISTING = YES +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- +GENERATE_AUTOGEN_DEF = NO +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- +GENERATE_PERLMOD = NO +PERLMOD_LATEX = NO +PERLMOD_PRETTY = YES +PERLMOD_MAKEVAR_PREFIX = +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- +ENABLE_PREPROCESSING = YES +MACRO_EXPANSION = NO +EXPAND_ONLY_PREDEF = NO +SEARCH_INCLUDES = YES +INCLUDE_PATH = +INCLUDE_FILE_PATTERNS = +PREDEFINED = +EXPAND_AS_DEFINED = +SKIP_FUNCTION_MACROS = YES +#--------------------------------------------------------------------------- +# Configuration::additions related to external references +#--------------------------------------------------------------------------- +TAGFILES = YES +GENERATE_TAGFILE = +ALLEXTERNALS = NO +EXTERNAL_GROUPS = YES +PERL_PATH = /usr/bin/perl +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- +CLASS_DIAGRAMS = YES +HIDE_UNDOC_RELATIONS = YES +HAVE_DOT = YES +CLASS_GRAPH = YES +COLLABORATION_GRAPH = YES +GROUP_GRAPHS = YES +UML_LOOK = NO +TEMPLATE_RELATIONS = NO +INCLUDE_GRAPH = YES +INCLUDED_BY_GRAPH = YES +CALL_GRAPH = YES +GRAPHICAL_HIERARCHY = YES +DIRECTORY_GRAPH = YES +DOT_IMAGE_FORMAT = png +DOT_PATH = /Applications/Graphviz.app/Contents/MacOS +DOTFILE_DIRS = +MAX_DOT_GRAPH_WIDTH = 1024 +MAX_DOT_GRAPH_HEIGHT = 1024 +MAX_DOT_GRAPH_DEPTH = 1000 +DOT_TRANSPARENT = NO +DOT_MULTI_TARGETS = NO +GENERATE_LEGEND = YES +DOT_CLEANUP = YES +#--------------------------------------------------------------------------- +# Configuration::additions related to the search engine +#--------------------------------------------------------------------------- +SEARCHENGINE = NO diff --git a/doc/H5PartExpress.html b/doc/H5PartExpress.html new file mode 100755 index 0000000..b79c417 --- /dev/null +++ b/doc/H5PartExpress.html @@ -0,0 +1,14 @@ + + + +Put your title here!! + + + + + +
    + +Under construction, will be here soon. +
    + diff --git a/doc/H5PartIDL.html b/doc/H5PartIDL.html new file mode 100755 index 0000000..8276d7f --- /dev/null +++ b/doc/H5PartIDL.html @@ -0,0 +1,15 @@ + + + +Put your title here!! + + + + + +
    + +Under construction, will be here soon. + +
    + diff --git a/doc/H5PartParaview.html b/doc/H5PartParaview.html new file mode 100755 index 0000000..8276d7f --- /dev/null +++ b/doc/H5PartParaview.html @@ -0,0 +1,15 @@ + + + +Put your title here!! + + + + + +
    + +Under construction, will be here soon. + +
    + diff --git a/doc/H5PartTools.html b/doc/H5PartTools.html new file mode 100644 index 0000000..62d3246 --- /dev/null +++ b/doc/H5PartTools.html @@ -0,0 +1,99 @@ + + + +Put your title here!! + + + + + + +
    + + + + H5Part Utility Tools + + + +

    H5Part Utility Tools

    + + +
    + + +

    h5pAttrib

    +
    + +h5pAttrib is an inspection tool that prints to stdout the number of timesteps in a file + the file attributes, the step attributes, the dataset names and their values. It's simpler to use than h5dump. + Usage options are given by typing: +

    +
    +% ./h5pAttrib -h
    +usage: h5pAttrib [OPTIONS] file
    +
    +  OPTIONS
    +   -h, --help           Print help page
    +   -n, --nstep          Print number of steps
    +   -A, --fileA          Print file attributes
    +   -a, --stepA          Print step attributes & values for time step n
    +   -d, --dataset        Print data sets names & values for time step n
    +   -H, --header         Print shorter version without the values
    +
    + +

    Examples

    +
      +
    1. + Show file attribute names & values of sample.h5part +
    2. + h5pAttrib -A sample.h5part +
    3. + Show step attribute names for time step 5 of sample.h5part +
    4. + h5pAttrib -a 5 -H sample.h5part +
    + + +

    h5pToGNUplot

    +
    + +h5pToGNUplot is a converter from H5Part to two column ASCII text format for loading into GNUplot. Usage options are given by typing: +

    +
    +% ./h5pToGNUplot -h
    +
    +usage: h5pToGNUplot -t TIMESTEP -1 VARIABLE#1 -2 VARIABLE#2 -i INPUTFILE [OPTIONAL_FLAGS]
    +
    +  FLAGS
    +   -h, --help           Print help page
    +   -1, --1var           (REQUIRED) Takes first variable parameter
    +   -2, --2var           (REQUIRED) Takes second variable parameter
    +   -i, --input          (REQUIRED) Takes input file name
    +   -t, --timestep       (REQUIRED) Sets the timestep (Value -1 will result in dumping values of all timesteps.)
    +   -o, --output         (OPTIONAL) Takes output file name (without this flag, the program will print to stdout)
    +   -n, --number         (OPTIONAL) Sets number of output points
    +   -s, --start          (OPTIONAL) Sets the starting particle index
    +
    + +

    Examples

    +
      +
    1. + Create a GNU plot file output.txt from sample.h5part by ploting x vs px for timestep 54 +
    2. + h5pToGNUplot -t 54 -1 x -2 px -i sample.h5part -o output.txt +
    3. + Create a GNU plot file output.txt from sample.h5part by ploting x vs px for timestep 54 + using 1200 points from particle index 76 +
    4. + h5pToGNUplot -t 54 -1 x -2 px -i sample.h5part -o output.txt -s 76 -n 1200 +
    + +
    + + + + diff --git a/doc/H5PartVisIt.html b/doc/H5PartVisIt.html new file mode 100755 index 0000000..857cbc7 --- /dev/null +++ b/doc/H5PartVisIt.html @@ -0,0 +1,75 @@ + + + +H5Part: VisIt Plugins + + + + + +
    +

    H5Part: VisIt Plugins

    +

    Introduction

    +

    +VisIt is an open source point-and-click 3D scientific visualization application that supports most of the common visualization techniques on structured and unstructured grids. One of its advantages is that it employs a distributed and parallel architecture in order to handle extremely large data sets interactively. VisIt's rendering and data processing capabilities are split into viewer and engine components that may be distributed across multiple machines. See this link for details on how to run VisIt in NERSC. +

    +

    +VisIt achieves extensibility through the use of dynamically loaded plugins. All of VisIt's plots, operators, and database readers are implemented as plugins and are loaded at run-time from the plugin directory. New plugins can be added simply by installing them in this directory. VisIt comes with a graphical plugin creation tool, which greatly simplifies the process of creating new plugins. The user describes the properties of the plugin and then the tool generates most of the code necessary to implement the plugin. For example, in the case of an operator, the plugin creation tool creates the code necessary for the graphical user interface attribute window; the C++, Python, and Java interfaces; and the code necessary to interface to VisIt. The only code you need to write is the C++ code that actually performs the operation. +

    +

    H5Part in VisIt

    +

    Database Reader Plugin

    +

    +We wrote a Multiple Time Step Multiple Domain database reader to read H5Part data into VisIt. H5Part datasets should be named with the extension ".h5part" to be recognized by the reader since VisIt does not have a format selection mechanism at the time of reading. Figure 1 shows a Pseudocolor plot of a data set and Figure 2 shows a Scatter plot x-y (any combination of x, px, y, py, z, pz, id are possible). +

    +

    + + + + + + + + + + + + +
    + +
    +Figure 1. VisIt User interface showing an H5Part particle file rendered as spheres using the Pseudocolor plot. +
    + +
    +Figure 2. A Scatter plot of the x-y projection of the particles. +
    +

    + +

    +VisIt provides a Query interface, for single time steps and for time series. Figure 3 shows the query interace over time for the sum of the x position and the z position of the particoes. +

    +

    + + + + + + +
    + +
    +Figure 3. VisIt's Time Query Output. +
    +

    +

    Operator Plugins

    +

    +

    Particle Random Sampler

    + + +

    +

    +

    Particle Binner

    +

    +
    diff --git a/doc/H5PartVisIt/cloud_visit.png b/doc/H5PartVisIt/cloud_visit.png new file mode 100644 index 0000000..4dc11aa Binary files /dev/null and b/doc/H5PartVisIt/cloud_visit.png differ diff --git a/doc/H5PartVisIt/cloud_visit.s.png b/doc/H5PartVisIt/cloud_visit.s.png new file mode 100644 index 0000000..65be8d3 Binary files /dev/null and b/doc/H5PartVisIt/cloud_visit.s.png differ diff --git a/doc/H5PartVisIt/cloud_visit_2D.png b/doc/H5PartVisIt/cloud_visit_2D.png new file mode 100644 index 0000000..a6163bc Binary files /dev/null and b/doc/H5PartVisIt/cloud_visit_2D.png differ diff --git a/doc/H5PartVisIt/cloud_visit_2D.s.png b/doc/H5PartVisIt/cloud_visit_2D.s.png new file mode 100644 index 0000000..c98cb29 Binary files /dev/null and b/doc/H5PartVisIt/cloud_visit_2D.s.png differ diff --git a/doc/H5PartVisIt/visit_query1.png b/doc/H5PartVisIt/visit_query1.png new file mode 100644 index 0000000..c6f6d4b Binary files /dev/null and b/doc/H5PartVisIt/visit_query1.png differ diff --git a/doc/H5PartVisIt/visit_query1.s.png b/doc/H5PartVisIt/visit_query1.s.png new file mode 100644 index 0000000..37247aa Binary files /dev/null and b/doc/H5PartVisIt/visit_query1.s.png differ diff --git a/doc/H5tools/H5tools.htm b/doc/H5tools/H5tools.htm new file mode 100644 index 0000000..94e46ac --- /dev/null +++ b/doc/H5tools/H5tools.htm @@ -0,0 +1,417 @@ +H5Part Tools How-to + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +
    +
    +

    H5Part + Tools How-to

    +
    +

    Table + of Contents

    +
    +

    + [1] Quick Guide

    +

    --- + For h5pAttrib
    +
    + [2] To see number of timesteps in a h5part file
    +
    + [3] To see file attributes in a h5part + file
    +
    + [4] To see step attributes in a h5part + file
    +
    + [5] To see dataset in a h5part file
    +
    + [6] Providing more than one flag at once for h5pAttrib

    +

    --- + For h5pToGNUplot
    +
    + [7] What parameters to provide
    +
    + [8] How to create an input file to GNUplot

    +

     

    +

    <back + to top>

    +

     

    +

    [1] + Quick Guide

    +

    Executing the program with + -h option will display a concise help page.

    +

    $>./h5pAttrib + -h

    +

    usage: h5pAttrib [OPTIONS] + file

    +

    OPTIONS
    + -h, --help Print help page
    + -n, --nstep Print number of steps
    + -A, --fileA Print file attributes
    + -a n, --stepA n Print step attributes & values for time step n
    + -d n, --dataset n Print data sets names & values for time step + n
    + -H, --header Print shorter version without the values

    +

    Examples:

    +

    1) Show file attribute names + & values of sample.h5part

    +

    h5pAttrib -A sample.h5part
    + OR
    + h5pAttrib --fileA sample.h5part

    +

    2) Show step attribute names + for time step 5 of sample.h5part

    +

    h5pAttrib -a 5 -H sample.h5part
    + OR
    + h5pAttrib --stepA 5 -H sample.h5part

    +


    + $> ./h5pToGNUplot -h

    +

    usage: h5pToGNUplot -t TIMESTEP + -1 VARIABLE#1 -2 VARIABLE#2 -i INPUTFILE [OPTIONAL_FLAGS]

    +

    FLAGS
    + -h, --help Print help page

    + -1 par, --1var par (REQUIRED) + Takes first variable parameter to "par"
    + -2 par, --2var par (REQUIRED) Takes second variable parameter to "par"
    + -i file, --input file (REQUIRED) Takes input file name to "file"
    +
    -t step, --timestep + step (REQUIRED) Sets the timestep to "step" (Value -1 will + result in dumping values of all timesteps.)
    + -o file, --output file (OPTIONAL) Takes output file name to "file" + (without this flag, the program will print to stdout)
    + -n num, --number num (OPTIONAL) Sets number of output points to "num"
    + -s idx, --start idx (OPTIONAL) Sets the starting particle index to + "idx"

    +


    + Examples:

    +

    1) Create GNU plot file + output.txt from sample.h5part by ploting x vs px for timestep 54

    +

    h5pToGNUplot -t 54 -1 x + -2 px -i sample.h5part -o output.txt

    +

    2) Create GNU plot file + output.txt from sample.h5part by ploting x vs px for timestep 54
    + using 1200 points from particle index 76

    +

    h5pToGNUplot -t 54 -1 x + -2 px -i sample.h5part -o output.txt -s 76 -n 1200

    +

     

    +

    <back + to top>

    +

     

    +

    --- + For h5pAttrib

    +

     

    +

    [2] + To see number of timesteps in a h5part file

    +

    Executing the program h5pAttrib with -n flag will display the number + of timesteps in the file.

    +

    EXAMPLE>>

    +

    $> + ./h5pAttrib -n sample.h5part

    +

    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

    +

    Printing number of timesteps + for: sample.h5part ...

    +

    There are total 252 number + of timesteps.
    + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

    +

    done
    +

    +

     

    +

    <back + to top>

    +


    + [3] To see file attributes + in a h5part file

    +

    File attribute contains information about the file. (file description + etc...) Executing the program h5pAttrib with -A flag will display + the file attributes in the file.

    +

    EXAMPLE>>

    +

    $> + ./h5pAttrib -A sample.h5part

    +

    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

    +

    Printing file attributes + for: sample.h5part ...

    +

    The number of file attributes + for file sample.h5part is 0 ...
    + There are no file attributes.
    + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

    +

    done

    +


    + NOTE: -H option will omit the list of values of file attributes.

    +

     

    +

    <back + to top>

    +

     

    +

    [4] + To see step attributes in a h5part file

    +

    Step attribute contains information that belongs to a specific step. + (step name, timestep number, etc...) Executing the program h5pAttrib + with -a flag will display the step attributes in the file.
    + Note that the timestep index should follow -a flag.

    +

    EXAMPLE>>

    +

    $> + ./h5pAttrib -a 2 sample.h5part

    +

    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

    +

    Printing step attributes + for: sample.h5part ...

    +

    The number of step attributes + for timestep #2 is 10 ...

    +

    Attribute #0 = Step
    + There are 1 elements in the attribute
    + Attribute Type is H5T_NATIVE_INT64
    + Printing 1 element value(s):
    + COUNT[0]: 2

    +

    Attribute #1 = Spos
    + There are 1 elements in the attribute
    + Attribute Type is H5T_NATIVE_DOUBLE
    + Printing 1 element value(s):
    + COUNT[0]: 0.143580

    +

    Attribute #2 = structLen
    + There are 1 elements in the attribute
    + Attribute Type is H5T_NATIVE_DOUBLE
    + Printing 1 element value(s):
    + COUNT[0]: 2.393000

    +

    .
    + .
    + .

    +


    + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

    +

    done

    +


    + NOTE: -H option will omit the list of values of step attributes.

    +

     

    +

    <back + to top>

    +


    + [5] To see dataset in a h5part file

    +

    Executing the program h5pAttrib with -d flag will display the datasets + information in the file. (dataset name, type, number of elements, + etc...) Executing the program h5pAttrib with -d flag will display + the datasets information in the file.
    + Note that the timestep index should follow -d flag.

    +

    EXAMPLE>>

    +

    $> + ./h5pAttrib -d 2 -H sample.h5part

    +

    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

    +

    Printing names of datasets + for: sample.h5part ...

    +

    The number of datasets for + timestep #2 is 7 ...

    +

    Dataset Name #0 = id
    + Dataset Type is H5T_NATIVE_INT64
    + Number of elements: 67587

    +

    Dataset Name #1 = px
    + Dataset Type is H5T_NATIVE_DOUBLE
    + Number of elements: 67587

    +

    Dataset Name #2 = py
    + Dataset Type is H5T_NATIVE_DOUBLE
    + Number of elements: 67587

    +

    Dataset Name #3 = pz
    + Dataset Type is H5T_NATIVE_DOUBLE
    + Number of elements: 67587

    +

    Dataset Name #4 = x
    + Dataset Type is H5T_NATIVE_DOUBLE
    + Number of elements: 67587

    +

    Dataset Name #5 = y
    + Dataset Type is H5T_NATIVE_DOUBLE
    + Number of elements: 67587

    +

    Dataset Name #6 = z
    + Dataset Type is H5T_NATIVE_DOUBLE
    + Number of elements: 67587

    +

    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

    +

    done

    +


    + NOTE: -H option will omit the list of values of datasets.

    +

     

    +

    <back + to top>

    +

     

    +

    [6] + Providing more than one flag at once

    +

    When more than one flags + are provided, one result after another will be displayed.

    +

    EXAMPLE>>

    +

    $> + ./h5pAttrib -H -a 1 -d 1 sample.h5part

    +

    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

    +

    Printing step attributes + for: sample.h5part ...

    +

    The number of step attributes + for timestep #1 is 10 ...

    +

    Attribute #0 = Step
    + Attribute #1 = Spos
    + Attribute #2 = structLen
    + Attribute #3 = org
    + Attribute #4 = maxX
    + Attribute #5 = minX
    + Attribute #6 = maxP
    + Attribute #7 = minP
    + Attribute #8 = centroid
    + Attribute #9 = nloc
    + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

    +


    + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

    +

    Printing names of datasets + for: sample.h5part ...

    +

    The number of datasets for + timestep #1 is 7 ...

    +

    Dataset Name #0 = id
    + Dataset Type is H5T_NATIVE_INT64
    + Number of elements: 60214

    +

    Dataset Name #1 = px
    + Dataset Type is H5T_NATIVE_DOUBLE
    + Number of elements: 60214

    +

    Dataset Name #2 = py
    + Dataset Type is H5T_NATIVE_DOUBLE
    + Number of elements: 60214

    +

    Dataset Name #3 = pz
    + Dataset Type is H5T_NATIVE_DOUBLE
    + Number of elements: 60214

    +

    Dataset Name #4 = x
    + Dataset Type is H5T_NATIVE_DOUBLE
    + Number of elements: 60214

    +

    Dataset Name #5 = y
    + Dataset Type is H5T_NATIVE_DOUBLE
    + Number of elements: 60214

    +

    Dataset Name #6 = z
    + Dataset Type is H5T_NATIVE_DOUBLE
    + Number of elements: 60214

    +

    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

    +

    done

    +

     

    + +
    +
    +
    +

    --- + For h5pToGNUplot

    +

    [7] + What parameters to provide

    +

    When you execute the program + with -h option, it displays what flags are necessary and what flags are + optional.

    +
    +

    Short Version

    +

    -h
    + -1
    + -2
    + -i
    + -t
    + -o
    + -n
    + -s

    +
    +

    Long Version

    +

    --help
    + --1var
    + --2var
    + --input
    + --timestep
    + --output
    + --number
    + --start

    +
    +

    Meanings

    +

    Print help page
    + (REQUIRED) Takes first variable parameter
    + (REQUIRED) Takes second variable parameter
    + (REQUIRED) Takes input file name
    + (REQUIRED) Sets the timestep (Value -1 will result in dumping values of + all timesteps.)
    + (OPTIONAL) Takes output file name (without this flag, the program will + print to stdout)
    + (OPTIONAL) Sets number of output points
    + (OPTIONAL) Sets the starting particle index

    +
    +

     

    +

    <back + to top>

    +


    + [8] How to create an input file to GNUplot

    +

    EXAMPLE>>
    + Create input file to GNUplot that plots x vs. y.

    +

    $> + ./h5pToGNUplot -1 x -2 y -t 1 -i sample.h5part -o output.txt
    + $> cat output.txt
    + -0.390779 -0.254793
    + -0.396527 -0.252781
    + -0.375362 -0.285137
    + -0.396527 -0.252781
    + -0.379917 -0.283147
    + -0.390779 -0.254793
    + -0.387536 -0.287346
    + -0.371787 -0.319797
    + -0.379917 -0.283147
    + -0.378967 -0.326058
    + -0.378976 -0.326078
    + -0.387536 -0.287346
    + -0.378957 -0.326069
    + -0.379917 -0.283147
    + -0.388762 -0.265390
    + -0.371787 -0.319797
    + -0.390779 -0.254793
    + -0.376825 -0.266804
    + -0.379917 -0.283147
    + -0.375362 -0.285137
    + ...

    +

    Then run GNUplot...

    +

    $> + gnuplot

    +

    G N U P L O T
    + Version 4.0 patchlevel 0
    + last modified Thu Apr 15 14:44:22 CEST 2004
    + System: Linux 2.6.11.4-21.11-smp

    +

    Copyright (C) 1986 - 1993, 1998, + 2004
    + Thomas Williams, Colin Kelley and many others

    +

    This is gnuplot version 4.0. + Please refer to the documentation
    + for command syntax changes. The old syntax will be accepted
    + throughout the 4.0 series, but all save files use the new syntax.

    +

    Type `help` to access the on-line + reference manual.
    + The gnuplot FAQ is available from
    + http://www.gnuplot.info/faq/

    +

    Send comments and requests for + help to
    + <gnuplot-info@lists.sourceforge.net>
    + Send bugs, suggestions and mods to
    + <gnuplot-bugs@lists.sourceforge.net>

    +


    + Terminal type set to 'x11'
    + gnuplot> plot "output.txt"

    +

    This will open a GNUplot + window that plots output.txt.

    +


    + <Sample screen shot of GNUplot + with input datafile generated by h5pToGNUplot>

    +
    + \ No newline at end of file diff --git a/doc/H5tools/H5tools_files/snapshot1.jpg b/doc/H5tools/H5tools_files/snapshot1.jpg new file mode 100644 index 0000000..a6301d7 Binary files /dev/null and b/doc/H5tools/H5tools_files/snapshot1.jpg differ diff --git a/doc/H5xxx/H5xxx.tex b/doc/H5xxx/H5xxx.tex new file mode 100755 index 0000000..ac383bc --- /dev/null +++ b/doc/H5xxx/H5xxx.tex @@ -0,0 +1,345 @@ +\documentclass[acus]{JAC2003} + +%% +%% Use \documentclass[boxit]{JAC2003} +%% to draw a frame with the correct margins on the output. +%% +%% Use \documentclass[acus]{JAC2003} +%% for US letter paper layout +%% + +\usepackage{graphicx} + +%% +%% VARIABLE HEIGHT FOR THE TITLE BOX (default 35mm) +%% + +\setlength{\titleblockheight}{40mm} + +\begin{document} +\title{H5Pie: A Portable High Performance Parallel Data Interface for Electromagnetics Simulations Including Particles\thanks{ +This work (LBNL-57607) was supported by the Director, Office of Science, Office of Advanced Scientific Computing Research, of the U.S. Department of Energy under Contract No. DE-AC03-76SF00098 and the DOE SciDAC project on ``Advanced Computing for 21st Century Accelerator Science and Technology.''. +}} + +\author{A. Adelmann, A. Gsell, B. Oswald, PSI, Villigen, Switzerland \\ + R.D. Ryne, LBNL/AFR, Berkeley, California, USA\\ + W. Bethel, J.M. Shalf, C. Siegerist, LBNL/NERSC, Berkeley, California, USA} + +\maketitle +\begin{abstract} +The very largest parallel particle simulations, for problems +involving six dimensional phase space, +generate vast quantities of data. It is desirable to +store such enormous datasets efficiently and also to share data +effortlessly between data analysis tools +such as VisIt or ParaView +among other groups who are working on particle-based accelerator +simulations. We define a very simple file schema built on top of HDF5~\cite{hdf5hp} +(Hierarchical Data Format version 5) as well as an API that simplifies +the reading/writing of the data to the HDF5 file format. HDF5 offers a +self-describing machine-independent binary file format that supports +scalable parallel I/O performance for MPI codes on computer systems +ranging from laptops to supercomputers. + +H5Pie is actually a composition of three parts. On a very abstract view we have, +H5Part which handles the macro particles of a simulation. H5Mesh defines the (spatial) geometry of the +computational domain and H5Fields represents scalar and vector filds. (H5Pie = H5{\bf P} art + H5F{\bf i}eld+ H5M{\bf e}sh) + + +The sample H5Pie +API will be available for C, C++, and Fortran codes. +The common file format will enable groups that +use completely different simulation implementations to transparently share +datasets. +\end{abstract} + +\section{Motivation} +The motivation for this undertaking is to create a file format that is +suitable for large-scale parallel simulation codes. +A suitable data format must have the following properties: +it must be a machine-independent binary representation that is +self-describing, easily extensible, language independent, efficient +(both for serial and parallel), and produces files that are seamlessly sharable +between different programs. In the following sections we describe +the motivation for these features and how they can be accomplished +using the proposed implementation. + +\subsection{Machine Independence} +Processor architectures use different binary representations +for data. While the IEEE 754 standard has decreased the number of +differing floating point number represenations, byte-order still remains +a source of incompatibility. While it is trivial to byte-swap a file from +a programming standpoint, it creates a number of long-term file management +difficulties for groups that are sharing or maintaining a repository of simulation +data. Given files that store data structures with differently sized elements, +one must know the storage format precisely in order to apply byte-swapping +properly. +HDF5 does not suffer from these problems because the file format is completely +self-describing and the internal binary structures are all machine independent. +The HDF5 library is able to convert data that is stored in any native machine +represenation in the data file into a native binary representation in memory +as part of the reading process with little performance penalty. + +\subsection{Language Independence} +The three most common languages used for implementing applications +in the arena of computational sciences are +Fortran, C and C++. The file format and associated API must hide +differences in the binary file-storage conventions of these languages +as well as offering native API bindings for each of these +programming languages. + +For instance, Fortran unformatted binary files contain integer fields +at the beginning and the end of each record that describe the length +of the record. The size of these integer tags is usually 32-bits, but some +fortran compiler implementations will use larger tags in order to represent +larger record sizes. C and C++ binary files have no such convention for +record-oriented storage. The language-dependent differences in +binary storage layout conventions +can cause difficulties for scientists who wish to share data files between +Fortran and C/C++ implementations of a code, or with visualization tools +that are primarily written in C/C++. The API bindings and underlying file format +provided by the H5Part API and the underlying HDF5 file format are able to +hide these differences in order to provide symmetric access via all languages. + +\subsection{Self-Describing} +The data is accessed by names, for example, one might ask for `the +column of data called $p_x$' -- affording a layer of file-layout independence. +In other words, self-describing data is +not accessed by a position in a file but by name of the datasets. Various attributes +of the data that may be necessary to using it are available. For +example, one can ask ``what are the units of column $p_x$?'. + +There are a number of examples of self-describing file formats. Examples include HDF earlier HDF implementations leading up to HDF version 5 and the Unidata NetCDF format. Another +very popular approach is the Self Describing Data Sets (SDDS) \cite{SDDS} although it +is only serial in nature. HDF5 is a complete rewrite of the HDF file format that supports +parallel I/O and offers a much leaner, more flexible interface. +Because it is self-describing, the entire contents of an HDF5 file can be +browsed and even converted to ASCII text, including XML syntax text files, +using the built-in 'h5ls' and 'h5dump' +tools without specific knowledge of the internal file format. + +\begin{figure}[htb] +\begin{minipage}[b]{0.5\textwidth} +%\includegraphics[scale=0.095]{./partview1.eps} +%\includegraphics[scale=0.097]{./density70.eps} +\end{minipage} +\caption{color: A common self-describing file format allows different codes to share a common set of visualization and data analysis tools. PartView and AVS/Express, pictured above, are able to read and display contents of an H5Part/HDF5 file written on any machine in any language, regardless of how many processors are used.} +\label{fig:vis} +\end{figure} + +The primary advantage of accessing data and its attributes is that one +can then construct more flexible data manipulation tools that are capable +of surviving the natural evolution of file formats. Data formats can be extended +to include additional information without breaking older file readers. +Self-describing data contains all the information +that analysis tools need to manipulate various types of data +correctly. Two examples of such tools using the proposed file format +are shown in Figure ~\ref{fig:vis} As a result, data exchange between different simulations tools is +much simpler, robust and better defined by using self-describing data sets. + +\subsection{High Performance} +The HDF5 file format allows data elements to be written to disk in the +native binary representation. The file format stores a description of +the native data representation of the machine that wrote the data so +that it can be automatically translated to the native binary +representation of the machine that reading the data (eg. if the byte +order differs). In contrast to XDR, where the data always gets +translated to/from an intermediate machine-neutral format, the HDF5 +data conversion only occurs if the stored data represenation is +different from the native binary representation of the machine that is +reading the file, so there is no performance penalty if the machines +have the compatible binary data formats. [ada: need work] In general, HDF5 offers +performance that is very close to what can be achieved by writing an +ad-hoc machine-dependent binary for F77 unformatted data file. + +\subsection{Parallel I/O} +HDF5 also supports parallel I/O capabilities for MPI programs. +The naive approach to writing data from a parallel program is to +write one file per processor. While this is simple to implement and +very efficient on most cluster filesystems, it leads to file management +headaches when it comes the time to analyze the data. One must either +recombine these separate files into a single file or create ponderous +user-interfaces that allow a data analysis application to read from a +directory full of files instead of just one file. + +Parallel I/O methods, allow you to write data into a single file from all +of the tasks of a parallel program. The performance is typically lower +than that of writing one-file-per-processor, but it makes data management +much simpler after the program has finished. No additional recombining +steps are required to make the file accessible by vis-tools or for +restarting a simulation using a different number of processors. + +Parallel HDF5 uses MPI-I/O for its low-level implementation. The +mechanics of using MPI-I/O are all hidden from the user by our +H5Part file API (the code looks nearly identical to reading/writing the data +from a serial program). While the performance is not as good as +writing one-file-per-processor, we demonstrate that writing files +with Parallel HDF5 is consistently faster than writing the data +in raw/native binary using the MPI-I/O library. This efficiency is +made possible through sophisticated HDF5 tuning directives that +control data alignment and caching within the HDF5 layer. +Therefore, we argue that it would be difficult to match +HDF5 performance even using a home-grown binary file format. + +\section{H5Mesh File Organization and API} + +\section{H5Field File Organization and API} + +\section{H5Part File Organization and API} +The proposed file storage format uses HDF5 for the low-level file +storage and a simple API to provide a high-level interface to that +file format. A programmer can either use the H5Part API to access +the data files or write directly to the file format using some simple +conventions for organizing and naming the objects stored in the +file. + +The HDF5 format, its benefits, and its file organization is decribed +at \cite{hdf5hp}. The file format was also adopted by the DOE +ASCI-VIEWS effort, so the library has been tuned and adapted to read +and write data efficiently on large-scale parallel computing +systems. We adopted HDF5 for our file storage needs because it offers +all that is needed as stipulated in the motivation section. + +We describe now the H5Part conventions for storing +objects in the HDF5 file as well as some examples of the API. +\subsection{H5Part File Organization} +In order to store Particle Data in the HDF5 file format, we have +formalized the hierarchical arrangement of the datasets and naming +conventions for the groups and associated datasets. The sample H5Part API formally +encodes these conventions in order to provide a simple and uniform +way to access these files from C, C++, and Fortran codes. The API makes +it easier to write very portable data adaptors for visualization tools in order to +expand the number of tools available to access the data. Even so, +anyone can use the HDF5 $h5ls$ utility to examine the organization +of the H5Part files and even write their own HDF5-based interface for reading and writing the +file format. The standards offered by the sample API are completely independent of the +standard for organizing data within the file. + +The file format supports the storage of multiple timesteps of +datasets that contain multiple fields. The fields correspond to different properties of +the particles at that particular time step -- for instance, +the 3-dimensional cartesian position of the particles +$(X,Y,Z)$ as well as the 3-dimensional phase of each +particle $(PX,PY,PZ)$. These two degrees of freedom +are organized such that the timesteps are groups (time groups) that are added sequentially +to the root group (``/''). The fields are datasets that are nested within the +time groups. The convention for naming the time group is $Particles$ where $$ is a monotonically increasing counter for the number of timesteps stored in the file. + +The fields contained within a given time group are simply named for the property of the particle they represent. For instance, the phase of the particle stored in a simulation variable called 'px' is simply named $``px''$. The field names are user-defined and +can be understood automatically by the visualization +tools that read the file. The only other convention is that each time group must contain the same set of fields -- the contents of the fields will change, but the set of names for these fields must remain the same for all timesteps. + +The fields can be either integer or real data types. Initially, the file format supports double precision float and 64-bit integers in order to simplify the requirements for file readers, but HDF5 is capable of automatically down-converting to 32-bit data types upon request. The API will be extended accordingly to support these conversions. + +Finally, the file, the individual timesteps, and the individual data arrays can contain {\em attributes} that provide additional information about the data. For instance, the datasets can be annotated with attributes containing {\em units} for a given data field, simulation parameters, or code revision information. The {\em attributes} are key-value pairs where the $key$ is a string that is associated with the file, group, or dataset, and the $value$ is either a string, a real value, or an integer associated with that key. + +%Visualization and data analysis tools can take advantage of this additional information if they are programmed to recognize it, but less-sophisticated tools can safely ignore it without compromising their ability to read the file format. + +% ada: to philosophic for a 3 page paper, although it is very important and of course right! +%The ability to ignore such information is arguably one of the most powerful capabilities of the HDF5 file format. Whereas changes to headers or data layout in conventional, non-self-describing file formats can render an older reader interface useless, one can continuously add new descriptive information to the HDF5 file without having any detrimental effect on readers that were designed to work with older versions of the file format. This provides enormous benefits for the long term maintenance and evolution of the file format. + +\section{GENERAL FORM IN PSEUDOCODE} +In Figure \ref{fig:usage} we show the very simple API for writing +data. The API for reading is almost symmetric. It is also worth to +note that there are minimal differences whether one read/write serial +or in parallel. The API consists of a small number of C, C++ and +Fortran functions and will be described elsewhere. +In the parallel case the original domain decomposition can be used or +the data can be decomposed according to the new number of processor +nodes available. +The resulting HDF5 file will contains a simple directory structure that can be navigated using the generic 'h5ls' utility; +\begin{figure}[h!] \label{fig:sbendVect} +\newsavebox{\gogo} + \setbox\gogo=\hbox{% + \begin{minipage}{0.4\textwidth} + \small + \begin{tabbing} + 111111\=aaaa\=aaaa\=aaaa\=\kill +\texttt{if(not parallel);}\\ +\quad\texttt{filehandle=OpenFile(filename,mode)} \\ +\texttt{else}\\ +\quad\texttt{filehandle=OpenFile(filename,mode,mpicomm)} \\ +\texttt{SetNumberOfParticles(filehandle);}\\ +\texttt{loop(step=1,NSteps);}\\ +\quad\texttt{SetStep(filehandle,step);}\\ +\quad\texttt{WriteData(filehandle,fieldname1,data1);}\\ +\centerline{\texttt{{\bf write more data}}}\\ +\quad\texttt{WriteData(filehandle,fieldname,data);}\\ +\texttt{CloseFile(filehandle);} +\end{tabbing} +\end{minipage} +} +\fbox{\usebox{\gogo}} +\caption{Usage of H5Part in pseudo-code} +\label{fig:usage} +\end{figure} + +% \begin{figure}[h!] \label{fig:sbendVect} +% \newsavebox{\gugu} +% \setbox\gugu=\hbox{% +% \begin{minipage}{0.4\textwidth} +% \small +% \begin{tabbing} +% 111111\=aaaa\=aaaa\=aaaa\=\kill +%\texttt{/Particles1/fieldname1 } \\ +%\texttt{/Particles1/fieldname2} \\ +%\texttt{ . . . } \\ +%\texttt{/Particles1/fieldname } \\ +%\texttt{/Particles2/fieldname1} \\ +%\texttt{ . . .}\\ +%\texttt{ /Particles/fieldname} +%\end{tabbing} +%\end{minipage} +%} +%\fbox{\usebox{\gugu}} +%\end{figure} +\vspace{-5mm} +\section{PERFORMANCE} +% [ada] We also have data for 4 procs +% [ada] name for one file per proc +Preliminary performance estimations, looking at global (GD) and local data (LD) +rates, suggests that our HDF5 writing has a very good performance even +with respect to raw mpi, as shown in Table \ref{tab:perf}. +\begin{table}[h!] +\begin{flushleft} \footnotesize + \begin{tabular}{|l|l|l|} +\hline +\bf Mode & \bf GD [MB/s] & \bf LD [MB/s]\\ +\hline +mpi-io (one file) & 241 & 3.7 \\ +\hline +one file per proc & 1288 & 20 \\ +\hline +H5Part/pHDFf5 (one file) & 773 & 12 \\ +\hline +\end{tabular} +\end{flushleft} +\caption{\label{tab:perf}{64 IBM SP-3 nodes writing $51e6$ particles (6D). }} +%, each having 6 double-precision floating point fields for 64 timesteps over 3 trials.}} +\end{table} +\vspace{-4mm} +\section{Conclusions and Future Work} +The file format will be extended in the near future to integrate fast bitmap indexing +technology~\cite{DEX} in order to provide accelerated queries of data +stored in the file. With fastbit technolgy, a user can efficiently extract subsets of data +using compound query expressions such +as {\it $(velocity > 1e6)$ AND $(0.4 < phase < 1.0)$}. +%Such a query-driven approach offers advantages over scalable technologies aimed at visualizing ever-larger datasets. + +We are also constantly tuning the performance of the parallel data +file format implementation. We will also be porting the H5Part reader +to a wider variety of visualization tools. +%in order to expand the arena +%of tools available for analyzing the stored particle data. +\begin{thebibliography}{9} % Use for 1-9 references +\bibitem{FPAT082} +A. Adelmann, R.D Ryne, C. Siegerist, J. Shalf, "From Visualization to Data Mining With Large Datasets," PAC, 2005. +\bibitem{hdf5hp} +HDF5 Home Page, http://hdf.ncsa.uiuc.edu/HDF5. +\bibitem{SDDS} +Definitions and libraries for SDDS implementation may be found at the link http://www.aps.anl.gov/asd/oag/oagPackages.shtml. +\bibitem{DEX} +K. Stockinger, J. Shalf, W. Bethel, K. Wu. "DEX: Increasing the Capability of Scientific Data Analysis Pipelines by Using Efficient Bitmap Indices to Accelerate Scientific Visualization." Scientific and Statistical Database Management Conference (SDDBM), 2005. +\end{thebibliography} + +\end{document} diff --git a/doc/H5xxx/JAC2003.cls b/doc/H5xxx/JAC2003.cls new file mode 100644 index 0000000..322d531 --- /dev/null +++ b/doc/H5xxx/JAC2003.cls @@ -0,0 +1,217 @@ +%% +%% This file has been developed as a common template for papers +%% destined for electronic production using Adobe Acrobat +%% software for Accelerator Conferences +%% +%% See the JACo Website for more information +%% +%% http://www.cern.ch/accelconf/ +%% + +% Special thanks to John Jowett and Michel Goossens from CERN and +% Martin Comyn at TRIUMF for their significant contributions to +% this class file over the period 1996 to 2000. +% John Poole +% March 2000 + + +% JAC2001.cls is a modified version of JAC2000.cls to produce indented +% first paragraphs after section, subsection and subsubsection headings. +% +% Martin Comyn April 2001 + +\def\fileversion{1.2} +\def\filedate{2003/03/10} +\def\docdate {2003/03/10} + +\newlength{\dsep} +\newlength{\dwid} +\newlength{\dht} +\NeedsTeXFormat{LaTeX2e} +\ProvidesClass{JAC2003}[\filedate\space Version \fileversion] +\DeclareOption{acus} + {\setlength{\dwid}{6mm}% + \setlength{\dht}{-18mm} + \setlength{\paperheight}{11in} + \setlength{\paperwidth}{8.5in} + \typeout{Setup for US LETTER PAPER}} +\DeclareOption{aca4} + {\setlength{\dwid}{0mm}% + \setlength{\dht}{0mm}} +\DeclareOption{boxit} +%% +%% This option draws a box on the output text with the correct margins +%% + {\special{!userdict begin /bop-hook{ + gsave + newpath + 58 55 moveto + 58 737 lineto + 539 737 lineto + 539 55 lineto + closepath + stroke + grestore + }def end}} +\DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}} + +\ExecuteOptions{aca4} +\ProcessOptions + +\LoadClass[10pt]{article} +%% +%% Using Times fonts produces a Uniform, compact document +%% suitable for the Acrobat Software and printable anywhere. +%% +%% In a 'modern' TeX installation +%% e.g TeXLive Version 3 or later (more information on the JACo Website) +%% one can use the following command +%% + +\renewcommand{\rmdefault}{ptm} + +%% +%% Older installations may require +%% \RequirePackage{times} +%% +\typeout{------------------------------------------------------------------------} +\typeout{LaTeX2e Class file for Accelerator Conference publication for LaTeX2e users} +\typeout{ } +\typeout{Use the boxit option to draw a box on page showing the correct margins} +\typeout{ } +\typeout{Itemize, Enumerate and Description environments are compact versions} +\typeout{------------------------------------------------------------------------} +\typeout{ } + +% +% DIMENSION OF TEXT: + +\setlength{\textheight}{241mm} +\setlength{\textwidth}{170mm} +\setlength{\topmargin}{23mm} +\addtolength{\topmargin}{\dht} +\setlength{\oddsidemargin}{20mm} +\setlength{\evensidemargin}{20mm} +\setlength{\columnsep}{5mm} + + +\hoffset -25.4mm +\voffset -25.4mm + +\columnseprule 0pt % Width of rule between columns. + +% Use Michel Goossens' dense lists +% Prevent infinite loops + +\let\Otemize =\itemize +\let\Onumerate =\enumerate +\let\Oescription =\description +% Zero the vertical spacing parameters +\def\Nospacing{\itemsep=0pt\topsep=0pt\partopsep=0pt\parskip=0pt\parsep=0pt} +% Redefine the environments in terms of the original values +\newenvironment{Itemize}{\Otemize\Nospacing}{\endlist} +\newenvironment{Enumerate}{\Onumerate\Nospacing}{\endlist} +\newenvironment{Description}{\Oescription\Nospacing}{\endlist} + +\renewcommand{\topfraction}{.95} +\renewcommand{\bottomfraction}{.95} +\renewcommand{\textfraction}{0.1} +\renewcommand{\floatpagefraction}{0.8} + +\def\@oddhead{}\def\@evenhead{} +\def\@oddfoot{} +\def\@evenfoot{\@oddfoot} + +%----------------------------------------------------------------------- +% We acknowledge the borrowing of the clever part of +% Steven Gildea's definition of \section +% from geophysi.sty. +% +% \section is tricky because we want to both support \section* and have +% the section title uppercased. + +\def\section{\secdef\@sectionb\@sections} +\def\@sectionb[#1]#2{\@sections{#2}} +\def\@sections#1{\@startsection {section}{1}{\z@} + {2.8ex plus 0.8ex minus .1ex}{1.5ex plus .2ex} + {\large\bf\boldmath\centering}{\uppercase{#1}}} +% Should there be any problem with this, we can revert to the following +% but then the onus is on the user to type the argument of \section in +% uppercase in the input file. +% +%\def\section{\@startsection {section}{1}{\z@}{2.8ex plus 0.8ex minus.1ex} +% {1.5ex plus .2ex}{\large\bf\boldmath\centering}} + +\def\subsection{\@startsection{subsection}{2}{\z@}{2.6ex plus .8ex minus + .17ex}{1.2ex plus .17ex}{\large\it}} +\def\subsubsection{\@startsection{subsubsection}{3}{\parindent} + {2.5ex plus .7ex minus .17ex}{-1em}{\normalsize\bf}} +\def\paragraph{\@startsection + {paragraph}{4}{\z@}{2.5ex plus .7ex minus .17ex}{-1em}{\normalsize\it}} +\def\subparagraph{\@startsection + {subparagraph}{4}{\parindent}{2.25ex plus .7ex minus + .17ex}{-1em}{\normalsize\bf}} + +\setcounter{secnumdepth}{0} + +% This definition of \maketitle taken from article.sty, and has been +% somewhat modified. + +\def\maketitle{\par + \begingroup + \def\thefootnote{\fnsymbol{footnote}} + \def\@makefnmark{\hbox + to 5pt{$^{\@thefnmark}$\hss}} + \twocolumn[\@maketitle] + \@thanks + \endgroup + \setcounter{footnote}{0} + \let\maketitle\relax + \let\@maketitle\relax + \gdef\@thanks{}\gdef\@author{}\gdef\@title{}\let\thanks\relax} + +\newlength{\titleblockheight} % so user can change it if need be +\setlength{\titleblockheight}{3.5cm} + + +\def\@maketitle{\vbox to \titleblockheight {\hsize\textwidth + \linewidth\hsize \vskip 3pt \centering + {\Large\bf \@title \par} + \vskip 2em % Vertical space after title. + {\large\begin{tabular}[t]{@{}c@{}}\@author \end{tabular}\par} + \vfil}} + + +% The \copyrightspace command is used to produce a blank space in the first +% column where a copyright notice may go. It works by producing a +% blank footnote of the appropriate size. Note that it should appear +% after any \footnote commands that produce footnotes for the first +% column. Adjusted to leave just 1cm. + +\def\copyrightspace{\footnotetext[0]{\mbox{}\vrule height 1cm width 0pt}} + +\def\abstract{\subsection*{Abstract}} +\def\endabstract{\par} + +% Redefine to use smaller fonts +\def\thebibliography#1{\setlength{\itemsep}{0pt}\setlength{\parsep}{0pt} + \section*{REFERENCES\@mkboth + {REFERENCES}{REFERENCES}}\small\list + {[\arabic{enumi}]}{\settowidth\labelwidth{[#1]}\leftmargin\labelwidth + \advance\leftmargin\labelsep + \usecounter{enumi}} + \def\newblock{\hskip .11em plus .33em minus .07em} + \sloppy\clubpenalty4000\widowpenalty4000 + \sfcode`\.=1000\relax} + +\let\endthebibliography=\endlist + +\twocolumn +\sloppy +\parindent 1em +\leftmargini 2em +\leftmargin\leftmargini +\leftmarginv .5em +\leftmarginvi .5em +\flushbottom +%----------------------------------------------------------------------- diff --git a/doc/H5xxx/makefile b/doc/H5xxx/makefile new file mode 100755 index 0000000..4a6f230 --- /dev/null +++ b/doc/H5xxx/makefile @@ -0,0 +1,14 @@ +################################################# +##BEGIN OF makefile "makefile" - using the gnu-compiler g++ +##This file is used by the Make command. +################################################### + +FILE=H5xxx + +all: $(FILE).tex + latex $(FILE).tex +#bibtex $(FILE) + dvips -j0 $(FILE).dvi -o $(FILE).ps +# dvips $(FILE).dvi -o $(FILE).ps -x 1200 -O 10mm,15mm +clean: + rm *~ *.bbl *.aux *.blg *.log *.dvi *.ps diff --git a/doc/InternalLayout.html b/doc/InternalLayout.html new file mode 100755 index 0000000..5e26b65 --- /dev/null +++ b/doc/InternalLayout.html @@ -0,0 +1,54 @@ + + + +H5Part, Logical Internal HDF5 File Layout + + + + + +
    +

    H5Part: Logical Internal HDF5 File Layout

    +

    +HDF5 is extremely flexible in the sense that it allows the user to define a higher level data model to describe domain-specific data relationships. This flexibility however makes it necessary to develop an agreement on the logical layout of the data. The H5Part data model consists of Particle groups corresponding to the simulation time steps, each with seven datasets corresponding to x, px, y, py, z, pz, id for each particle. Attributes can be added to the file and to the datasets. +

    +
    +
    +HDF5 "parttest.h5" {
    +GROUP "/" {
    +   GROUP "Particles#0" {
    +      DATASET "id" {
    +         DATATYPE  H5T_STD_I64LE
    +         DATASPACE  SIMPLE { ( 10 ) / ( 10 ) }
    +      }
    +      DATASET "px" {
    +         DATATYPE  H5T_IEEE_F64LE
    +         DATASPACE  SIMPLE { ( 10 ) / ( 10 ) }
    +      }
    +      DATASET "py" {
    +         DATATYPE  H5T_IEEE_F64LE
    +         DATASPACE  SIMPLE { ( 10 ) / ( 10 ) }
    +      }
    +      DATASET "pz" {
    +         DATATYPE  H5T_IEEE_F64LE
    +         DATASPACE  SIMPLE { ( 10 ) / ( 10 ) }
    +      }
    +      DATASET "x" {
    +         DATATYPE  H5T_IEEE_F64LE
    +         DATASPACE  SIMPLE { ( 10 ) / ( 10 ) }
    +      }
    +      DATASET "y" {
    +         DATATYPE  H5T_IEEE_F64LE
    +         DATASPACE  SIMPLE { ( 10 ) / ( 10 ) }
    +      }
    +      DATASET "z" {
    +         DATATYPE  H5T_IEEE_F64LE
    +         DATASPACE  SIMPLE { ( 10 ) / ( 10 ) }
    +      }
    +   }
    +
    +

    +See hdf5.pdf for an introduction on the use of HDF5. +

    +
    + diff --git a/doc/ReferencePages/H5PartF_8c.html b/doc/ReferencePages/H5PartF_8c.html new file mode 100644 index 0000000..4757d6c --- /dev/null +++ b/doc/ReferencePages/H5PartF_8c.html @@ -0,0 +1,2181 @@ + + +H5Part: H5PartF.c File Reference + + + + +

    H5PartF.c File Reference

    #include "H5Part.h"
    +#include "Underscore.h"
    +#include <hdf5.h>
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    Defines

    #define f_h5pt_openr   F77NAME(h5pt_openr_,h5pt_openr,H5PT_OPENR)
    #define f_h5pt_openw   F77NAME(h5pt_openw_,h5pt_openw,H5PT_OPENW)
    #define f_h5pt_openr_par   F77NAME(h5pt_openr_par_,h5pt_openr_par,H5PT_OPENR_PAR)
    #define f_h5pt_openw_par   F77NAME(h5pt_openw_par_,h5pt_openw_par,H5PT_OPENW_PAR)
    #define f_h5pt_close   F77NAME(h5pt_close_,h5pt_close,H5PT_CLOSE)
    #define f_h5pt_isvalid   F77NAME(h5pt_isvalid_,h5pt_isvalid,H5PT_ISVALID)
    #define f_h5pt_setnpoints   F77NAME(h5pt_setnpoints_,h5pt_setnpoints,H5PT_SETNPOINTS)
    #define f_h5pt_setstep   F77NAME(h5pt_setstep_,h5pt_setstep,H5PT_SETSTEP)
    #define f_h5pt_writedata_r8   F77NAME(h5pt_writedata_r8_,h5pt_writedata_r8,H5PT_WRITEDATA_R8)
    #define f_h5pt_writedata_i8   F77NAME(h5pt_writedata_i8_,h5pt_writedata_i8,H5PT_WRITEDATA_I8)
    #define f_h5pt_getnsteps   F77NAME(h5pt_getnsteps_,h5pt_getnsteps,H5PT_GETNSTEPS)
    #define f_h5pt_getndatasets   F77NAME(h5pt_getndatasets_,h5pt_getndatasets,H5PT_GETNDATASETS)
    #define f_h5pt_getnpoints   F77NAME(h5pt_getnpoints_,h5pt_getnpoints,H5PT_GETNPOINTS)
    #define f_h5pt_getdatasetname   F77NAME(h5pt_getdatasetname_,h5pt_getdatasetname,H5PT_GETDATASETNAME)
    #define f_h5pt_setview   F77NAME(h5pt_setview_,h5pt_setview,H5PT_SETVIEW)
    #define f_h5pt_resetview   F77NAME(h5pt_resetview_,h5pt_resetview,H5PT_RESETVIEW)
    #define f_h5pt_hasview   F77NAME(h5pt_hasview_,h5pt_hasview,H5PT_HASVIEW)
    #define f_h5pt_readdata_r8   F77NAME(h5pt_readdata_r8_,h5pt_readdata_r8,H5PT_READDATA_R8)
    #define f_h5pt_readdata_i8   F77NAME(h5pt_readdata_i8_,h5pt_readdata_i8,H5PT_READDATA_I8)
    #define f_h5pt_readdata   F77NAME(h5pt_readdata_,h5pt_readdata,H5PT_READDATA)
    #define f_h5pt_writefileattrib_r8   F77NAME(h5pt_writefileattrib_r8_,h5pt_writefileattrib_r8,H5PT_WRITEFILEATTRIB_R8)
    #define f_h5pt_writefileattrib_i8   F77NAME(h5pt_writefileattrib_i8_,h5pt_writefileattrib_i8,H5PT_WRITEFILEATTRIB_I8)
    #define f_h5pt_writefileattrib_string   F77NAME(h5pt_writefileattrib_string_,h5pt_writefileattrib_string,H5PT_writefileattrib_string)
    #define f_h5pt_writestepattrib_r8   F77NAME(h5pt_writestepattrib_r8_,h5pt_writestepattrib_r8,H5PT_WRITESTEPATTRIB_R8)
    #define f_h5pt_writestepattrib_i8   F77NAME(h5pt_writestepattrib_i8_,h5pt_writestepattrib_i8,H5PT_WRITESTEPATTRIB_I8)
    #define f_h5pt_writestepattrib_string   F77NAME(h5pt_writestepattrib_string_,h5pt_writestepattrib_string,H5PT_WRITESTEPATTRIB_STRING)
    #define f_h5pt_getnstepattribs   F77NAME(h5pt_getnstepattribs_,h5pt_getnstepattribs,H5PT_GETNSTEPATTRIBS)
    #define f_h5pt_getnfileattribs   F77NAME(h5pt_getnfileattribs_,h5pt_getnfileattribs,H5PT_GETNFILEATTRIBS)
    #define f_h5pt_getstepattribinfo   F77NAME(h5pt_getstepattribinfo_,h5pt_getstepattribinfo,H5PT_GETSTEPATTRIBINFO)
    #define f_h5pt_getfileattribinfo   F77NAME(h5pt_getfileattribinfo_,h5pt_getfileattribinfo,H5PT_GETFILEATTRIBINFO)
    #define f_h5pt_readstepattrib   F77NAME(h5pt_readstepattrib_,h5pt_readstepattrib,H5PT_READSTEPATTRIB)
    #define f_h5pt_readfileattrib   F77NAME(h5pt_readfileattrib_,h5pt_readfileattrib,H5PT_READFILEATTRIB)

    Functions

    haddr_t f_h5pt_openr (char *file, int flen)
    haddr_t f_h5pt_openw (char *file, int flen)
    void f_h5pt_close (haddr_t *file)
    int f_h5pt_isvalid (haddr_t *file)
    void f_h5pt_setnpoints (haddr_t *file, uint64_t *np)
    void f_h5pt_setstep (haddr_t *file, int *step)
    void f_h5pt_writedata_r8 (haddr_t *file, char *name, void *data, int flen)
    void f_h5pt_writedata_i8 (haddr_t *file, char *name, void *data, int flen)
    int f_h5pt_getnsteps (haddr_t *file)
    int f_h5pt_getndatasets (haddr_t *file)
    haddr_t f_h5pt_getnpoints (haddr_t *file)
    int f_h5pt_getdatasetname (haddr_t *file, int *index, char *name, int namelen)
    uint64_t f_h5pt_getnumpoints (haddr_t *file)
    void f_h5pt_setview (haddr_t *file, int64_t *start, int64_t *end)
    void f_h5pt_resetview (haddr_t *file)
    int f_h5pt_hasview (haddr_t *file)
    void f_h5pt_getview (haddr_t *file, int64_t *start, int64_t *end)
    int f_h5pt_readdata_r8 (haddr_t *file, char *name, void *array, int namelen)
    int f_h5pt_readdata_i8 (haddr_t *file, char *name, void *array, int namelen)
    int f_h5pt_writefileattrib_r8 (haddr_t *f, char *name, void *attrib, int *nelem, int namelen)
    int f_h5pt_writefileattrib_i8 (haddr_t *f, char *name, void *attrib, int *nelem, int namelen)
    int f_h5pt_writefileattrib_string (haddr_t *f, char *name, char *attrib, int namelen, int attriblen)
    int f_h5pt_writestepattrib_r8 (haddr_t *f, char *name, void *attrib, int *nelem, int namelen)
    int f_h5pt_writestepattrib_i8 (haddr_t *f, char *name, void *attrib, int *nelem, int namelen)
    int f_h5pt_writestepattrib_string (haddr_t *f, char *name, char *attrib, int namelen, int attriblen)
    int f_h5pt_getnstepattribs (haddr_t *f)
    int f_h5pt_getnfileattribs (haddr_t *f)
    int f_h5pt_getstepattribinfo (haddr_t *f, int *idx, char *name, int *nelem, int maxnamelen)
    int f_h5pt_getfileattribinfo (haddr_t *f, int *idx, char *name, int *nelem, int maxnamelen)
    int f_h5pt_readstepattrib (haddr_t *f, char *name, void *data, int namelen)
    int f_h5pt_readfileattrib (haddr_t *f, char *name, void *data, int namelen)
    +

    Define Documentation

    +

    + + + + +
    + + + + +
    #define f_h5pt_close   F77NAME(h5pt_close_,h5pt_close,H5PT_CLOSE)
    +
    + + + + + +
    +   + + +

    +

    +

    + + + + +
    + + + + +
    #define f_h5pt_getdatasetname   F77NAME(h5pt_getdatasetname_,h5pt_getdatasetname,H5PT_GETDATASETNAME)
    +
    + + + + + +
    +   + + +

    +

    +

    + + + + +
    + + + + +
    #define f_h5pt_getfileattribinfo   F77NAME(h5pt_getfileattribinfo_,h5pt_getfileattribinfo,H5PT_GETFILEATTRIBINFO)
    +
    + + + + + +
    +   + + +

    +

    +

    + + + + +
    + + + + +
    #define f_h5pt_getndatasets   F77NAME(h5pt_getndatasets_,h5pt_getndatasets,H5PT_GETNDATASETS)
    +
    + + + + + +
    +   + + +

    +

    +

    + + + + +
    + + + + +
    #define f_h5pt_getnfileattribs   F77NAME(h5pt_getnfileattribs_,h5pt_getnfileattribs,H5PT_GETNFILEATTRIBS)
    +
    + + + + + +
    +   + + +

    +

    +

    + + + + +
    + + + + +
    #define f_h5pt_getnpoints   F77NAME(h5pt_getnpoints_,h5pt_getnpoints,H5PT_GETNPOINTS)
    +
    + + + + + +
    +   + + +

    +

    +

    + + + + +
    + + + + +
    #define f_h5pt_getnstepattribs   F77NAME(h5pt_getnstepattribs_,h5pt_getnstepattribs,H5PT_GETNSTEPATTRIBS)
    +
    + + + + + +
    +   + + +

    +

    +

    + + + + +
    + + + + +
    #define f_h5pt_getnsteps   F77NAME(h5pt_getnsteps_,h5pt_getnsteps,H5PT_GETNSTEPS)
    +
    + + + + + +
    +   + + +

    +

    +

    + + + + +
    + + + + +
    #define f_h5pt_getstepattribinfo   F77NAME(h5pt_getstepattribinfo_,h5pt_getstepattribinfo,H5PT_GETSTEPATTRIBINFO)
    +
    + + + + + +
    +   + + +

    +

    +

    + + + + +
    + + + + +
    #define f_h5pt_hasview   F77NAME(h5pt_hasview_,h5pt_hasview,H5PT_HASVIEW)
    +
    + + + + + +
    +   + + +

    +

    +

    + + + + +
    + + + + +
    #define f_h5pt_isvalid   F77NAME(h5pt_isvalid_,h5pt_isvalid,H5PT_ISVALID)
    +
    + + + + + +
    +   + + +

    +

    +

    + + + + +
    + + + + +
    #define f_h5pt_openr   F77NAME(h5pt_openr_,h5pt_openr,H5PT_OPENR)
    +
    + + + + + +
    +   + + +

    +open/close interface

    +

    + + + + +
    + + + + +
    #define f_h5pt_openr_par   F77NAME(h5pt_openr_par_,h5pt_openr_par,H5PT_OPENR_PAR)
    +
    + + + + + +
    +   + + +

    +

    +

    + + + + +
    + + + + +
    #define f_h5pt_openw   F77NAME(h5pt_openw_,h5pt_openw,H5PT_OPENW)
    +
    + + + + + +
    +   + + +

    +

    +

    + + + + +
    + + + + +
    #define f_h5pt_openw_par   F77NAME(h5pt_openw_par_,h5pt_openw_par,H5PT_OPENW_PAR)
    +
    + + + + + +
    +   + + +

    +

    +

    + + + + +
    + + + + +
    #define f_h5pt_readdata   F77NAME(h5pt_readdata_,h5pt_readdata,H5PT_READDATA)
    +
    + + + + + +
    +   + + +

    +

    +

    + + + + +
    + + + + +
    #define f_h5pt_readdata_i8   F77NAME(h5pt_readdata_i8_,h5pt_readdata_i8,H5PT_READDATA_I8)
    +
    + + + + + +
    +   + + +

    +

    +

    + + + + +
    + + + + +
    #define f_h5pt_readdata_r8   F77NAME(h5pt_readdata_r8_,h5pt_readdata_r8,H5PT_READDATA_R8)
    +
    + + + + + +
    +   + + +

    +

    +

    + + + + +
    + + + + +
    #define f_h5pt_readfileattrib   F77NAME(h5pt_readfileattrib_,h5pt_readfileattrib,H5PT_READFILEATTRIB)
    +
    + + + + + +
    +   + + +

    +

    +

    + + + + +
    + + + + +
    #define f_h5pt_readstepattrib   F77NAME(h5pt_readstepattrib_,h5pt_readstepattrib,H5PT_READSTEPATTRIB)
    +
    + + + + + +
    +   + + +

    +

    +

    + + + + +
    + + + + +
    #define f_h5pt_resetview   F77NAME(h5pt_resetview_,h5pt_resetview,H5PT_RESETVIEW)
    +
    + + + + + +
    +   + + +

    +

    +

    + + + + +
    + + + + +
    #define f_h5pt_setnpoints   F77NAME(h5pt_setnpoints_,h5pt_setnpoints,H5PT_SETNPOINTS)
    +
    + + + + + +
    +   + + +

    +

    +

    + + + + +
    + + + + +
    #define f_h5pt_setstep   F77NAME(h5pt_setstep_,h5pt_setstep,H5PT_SETSTEP)
    +
    + + + + + +
    +   + + +

    +

    +

    + + + + +
    + + + + +
    #define f_h5pt_setview   F77NAME(h5pt_setview_,h5pt_setview,H5PT_SETVIEW)
    +
    + + + + + +
    +   + + +

    +

    +

    + + + + +
    + + + + +
    #define f_h5pt_writedata_i8   F77NAME(h5pt_writedata_i8_,h5pt_writedata_i8,H5PT_WRITEDATA_I8)
    +
    + + + + + +
    +   + + +

    +

    +

    + + + + +
    + + + + +
    #define f_h5pt_writedata_r8   F77NAME(h5pt_writedata_r8_,h5pt_writedata_r8,H5PT_WRITEDATA_R8)
    +
    + + + + + +
    +   + + +

    +

    +

    + + + + +
    + + + + +
    #define f_h5pt_writefileattrib_i8   F77NAME(h5pt_writefileattrib_i8_,h5pt_writefileattrib_i8,H5PT_WRITEFILEATTRIB_I8)
    +
    + + + + + +
    +   + + +

    +

    +

    + + + + +
    + + + + +
    #define f_h5pt_writefileattrib_r8   F77NAME(h5pt_writefileattrib_r8_,h5pt_writefileattrib_r8,H5PT_WRITEFILEATTRIB_R8)
    +
    + + + + + +
    +   + + +

    +

    +

    + + + + +
    + + + + +
    #define f_h5pt_writefileattrib_string   F77NAME(h5pt_writefileattrib_string_,h5pt_writefileattrib_string,H5PT_writefileattrib_string)
    +
    + + + + + +
    +   + + +

    +

    +

    + + + + +
    + + + + +
    #define f_h5pt_writestepattrib_i8   F77NAME(h5pt_writestepattrib_i8_,h5pt_writestepattrib_i8,H5PT_WRITESTEPATTRIB_I8)
    +
    + + + + + +
    +   + + +

    +

    +

    + + + + +
    + + + + +
    #define f_h5pt_writestepattrib_r8   F77NAME(h5pt_writestepattrib_r8_,h5pt_writestepattrib_r8,H5PT_WRITESTEPATTRIB_R8)
    +
    + + + + + +
    +   + + +

    +

    +

    + + + + +
    + + + + +
    #define f_h5pt_writestepattrib_string   F77NAME(h5pt_writestepattrib_string_,h5pt_writestepattrib_string,H5PT_WRITESTEPATTRIB_STRING)
    +
    + + + + + +
    +   + + +

    +

    +


    Function Documentation

    +

    + + + + +
    + + + + + + + + + +
    void f_h5pt_close haddr_t *  file  ) 
    +
    + + + + + +
    +   + + +

    +

    +

    + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    int f_h5pt_getdatasetname haddr_t *  file,
    int *  index,
    char *  name,
    int  namelen
    +
    + + + + + +
    +   + + +

    +

    +

    + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    int f_h5pt_getfileattribinfo haddr_t *  f,
    int *  idx,
    char *  name,
    int *  nelem,
    int  maxnamelen
    +
    + + + + + +
    +   + + +

    +

    +

    + + + + +
    + + + + + + + + + +
    int f_h5pt_getndatasets haddr_t *  file  ) 
    +
    + + + + + +
    +   + + +

    +

    +

    + + + + +
    + + + + + + + + + +
    int f_h5pt_getnfileattribs haddr_t *  f  ) 
    +
    + + + + + +
    +   + + +

    +

    +

    + + + + +
    + + + + + + + + + +
    haddr_t f_h5pt_getnpoints haddr_t *  file  ) 
    +
    + + + + + +
    +   + + +

    +

    +

    + + + + +
    + + + + + + + + + +
    int f_h5pt_getnstepattribs haddr_t *  f  ) 
    +
    + + + + + +
    +   + + +

    +

    +

    + + + + +
    + + + + + + + + + +
    int f_h5pt_getnsteps haddr_t *  file  ) 
    +
    + + + + + +
    +   + + +

    +

    +

    + + + + +
    + + + + + + + + + +
    uint64_t f_h5pt_getnumpoints haddr_t *  file  ) 
    +
    + + + + + +
    +   + + +

    +

    +

    + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    int f_h5pt_getstepattribinfo haddr_t *  f,
    int *  idx,
    char *  name,
    int *  nelem,
    int  maxnamelen
    +
    + + + + + +
    +   + + +

    +

    +

    + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void f_h5pt_getview haddr_t *  file,
    int64_t *  start,
    int64_t *  end
    +
    + + + + + +
    +   + + +

    +

    +

    + + + + +
    + + + + + + + + + +
    int f_h5pt_hasview haddr_t *  file  ) 
    +
    + + + + + +
    +   + + +

    +

    +

    + + + + +
    + + + + + + + + + +
    int f_h5pt_isvalid haddr_t *  file  ) 
    +
    + + + + + +
    +   + + +

    +

    +

    + + + + +
    + + + + + + + + + + + + + + + + + + +
    haddr_t f_h5pt_openr char *  file,
    int  flen
    +
    + + + + + +
    +   + + +

    +

    +

    + + + + +
    + + + + + + + + + + + + + + + + + + +
    haddr_t f_h5pt_openw char *  file,
    int  flen
    +
    + + + + + +
    +   + + +

    +

    +

    + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    int f_h5pt_readdata_i8 haddr_t *  file,
    char *  name,
    void *  array,
    int  namelen
    +
    + + + + + +
    +   + + +

    +

    +

    + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    int f_h5pt_readdata_r8 haddr_t *  file,
    char *  name,
    void *  array,
    int  namelen
    +
    + + + + + +
    +   + + +

    +

    +

    + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    int f_h5pt_readfileattrib haddr_t *  f,
    char *  name,
    void *  data,
    int  namelen
    +
    + + + + + +
    +   + + +

    +

    +

    + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    int f_h5pt_readstepattrib haddr_t *  f,
    char *  name,
    void *  data,
    int  namelen
    +
    + + + + + +
    +   + + +

    +

    +

    + + + + +
    + + + + + + + + + +
    void f_h5pt_resetview haddr_t *  file  ) 
    +
    + + + + + +
    +   + + +

    +

    +

    + + + + +
    + + + + + + + + + + + + + + + + + + +
    void f_h5pt_setnpoints haddr_t *  file,
    uint64_t *  np
    +
    + + + + + +
    +   + + +

    +

    +

    + + + + +
    + + + + + + + + + + + + + + + + + + +
    void f_h5pt_setstep haddr_t *  file,
    int *  step
    +
    + + + + + +
    +   + + +

    +

    +

    + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void f_h5pt_setview haddr_t *  file,
    int64_t *  start,
    int64_t *  end
    +
    + + + + + +
    +   + + +

    +

    +

    + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void f_h5pt_writedata_i8 haddr_t *  file,
    char *  name,
    void *  data,
    int  flen
    +
    + + + + + +
    +   + + +

    +

    +

    + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void f_h5pt_writedata_r8 haddr_t *  file,
    char *  name,
    void *  data,
    int  flen
    +
    + + + + + +
    +   + + +

    +

    +

    + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    int f_h5pt_writefileattrib_i8 haddr_t *  f,
    char *  name,
    void *  attrib,
    int *  nelem,
    int  namelen
    +
    + + + + + +
    +   + + +

    +

    +

    + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    int f_h5pt_writefileattrib_r8 haddr_t *  f,
    char *  name,
    void *  attrib,
    int *  nelem,
    int  namelen
    +
    + + + + + +
    +   + + +

    +

    +

    + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    int f_h5pt_writefileattrib_string haddr_t *  f,
    char *  name,
    char *  attrib,
    int  namelen,
    int  attriblen
    +
    + + + + + +
    +   + + +

    +

    +

    + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    int f_h5pt_writestepattrib_i8 haddr_t *  f,
    char *  name,
    void *  attrib,
    int *  nelem,
    int  namelen
    +
    + + + + + +
    +   + + +

    +

    +

    + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    int f_h5pt_writestepattrib_r8 haddr_t *  f,
    char *  name,
    void *  attrib,
    int *  nelem,
    int  namelen
    +
    + + + + + +
    +   + + +

    +

    +

    + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    int f_h5pt_writestepattrib_string haddr_t *  f,
    char *  name,
    char *  attrib,
    int  namelen,
    int  attriblen
    +
    + + + + + +
    +   + + +

    +

    +


    Generated on Tue Jan 31 11:52:45 2006 for H5Part by  + +doxygen 1.4.4
    + + diff --git a/doc/ReferencePages/H5Part_8c.html b/doc/ReferencePages/H5Part_8c.html new file mode 100644 index 0000000..332c457 --- /dev/null +++ b/doc/ReferencePages/H5Part_8c.html @@ -0,0 +1,2205 @@ + + +H5Part: H5Part.c File Reference + + + + +

    H5Part.c File Reference

    #include <stdio.h>
    +#include <stdlib.h>
    +#include <string.h>
    +#include <hdf5.h>
    +#include "H5Part.h"
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    Classes

    struct  H5IO_getname_t

    Typedefs

    typedef H5IO_getname_t H5IO_getname_t

    Functions

    herr_t H5PartIOcounter (hid_t group_id, const char *member_name, void *operator_data)
    H5PartFileH5PartOpenFileParallel (const char *filename, unsigned flags)
    H5PartFileH5PartOpenFile (const char *filename, unsigned flags)
    int H5PartFileIsValid (H5PartFile *f)
    void H5PartCloseFile (H5PartFile *f)
    void H5PartSetNumParticles (H5PartFile *f, long long nparticles)
    int H5PartWriteDataFloat64 (H5PartFile *f, char *name, double *array)
    int H5PartWriteDataInt64 (H5PartFile *f, char *name, long long *array)
    int H5PartWriteFileAttribString (H5PartFile *f, char *name, char *attrib)
    int H5PartWriteStepAttribString (H5PartFile *f, char *name, char *attrib)
    int H5PartWriteStepAttrib (H5PartFile *f, char *name, hid_t type, void *value, int nelem)
    int H5PartWriteAttrib (H5PartFile *f, char *name, hid_t type, void *value, int nelem)
    int H5PartWriteFileAttrib (H5PartFile *f, char *name, hid_t type, void *value, int nelem)
    herr_t H5PartAttribcounter (hid_t group_id, const char *member_name, void *operator_data)
    int H5PartGetNumStepAttribs (H5PartFile *f)
    int H5PartGetNumFileAttribs (H5PartFile *f)
    hid_t H5PartNormType (hid_t type)
    void H5PartGetStepAttribInfo (H5PartFile *f, int idx, char *name, size_t maxname, hid_t *type, int *nelem)
    void H5PartGetFileAttribInfo (H5PartFile *f, int idx, char *name, size_t maxname, hid_t *type, int *nelem)
    int H5PartReadStepAttrib (H5PartFile *f, char *name, void *data)
    void H5PartReadAttrib (H5PartFile *f, char *name, void *data)
    int H5PartReadFileAttrib (H5PartFile *f, char *name, void *data)
    void H5PartSetStep (H5PartFile *f, int step)
    herr_t H5PartDScounter (hid_t group_id, const char *member_name, void *operator_data)
    herr_t H5IOgetname (hid_t group_id, const char *member_name, void *operator_data)
    int H5PartGetNumSteps (H5PartFile *f)
    int H5PartGetNumDatasets (H5PartFile *f)
    int H5PartGetDatasetName (H5PartFile *f, int _index, char *name, int maxlen)
    hid_t H5PartGetDiskShape (H5PartFile *f, hid_t dataset)
    hid_t H5PartGetMemShape (H5PartFile *f, hid_t dataset)
    herr_t H5PartGetFirstDS (hid_t group_id, const char *member_name, void *operator_data)
    long long H5PartGetNumParticles (H5PartFile *f)
    void H5PartSetView (H5PartFile *f, long long start, long long end)
    int H5PartGetView (H5PartFile *f, long long *start, long long *end)
    void H5PartSetCanonicalView (H5PartFile *f)
    int H5PartReadDataFloat64 (H5PartFile *f, char *name, double *array)
    int H5PartReadDataInt64 (H5PartFile *f, char *name, long long *array)
    int H5PartReadParticleStep (H5PartFile *f, int step, double *x, double *y, double *z, double *px, double *py, double *pz, long long *id)
    herr_t H5NameExists (hid_t group_id, const char *member_name, void *v)
    int H5PartFileHasName (H5PartFile *f, char *dir, char *name)
    int H5PartStashFile (H5PartFile *f, char *filename)
    int H5PartUnstashFile (H5PartFile *f, char *filename, char *outputpath)
    int H5PartGetNumStashFiles (H5PartFile *f)
    int H5PartFileGetStashFileName (H5PartFile *f, int nameindex, char *filename, int maxnamelen)
    +

    Typedef Documentation

    +

    + + + + +
    + + + + +
    typedef struct H5IO_getname_t H5IO_getname_t
    +
    + + + + + +
    +   + + +

    +H5IO_getname_t: Private

    +


    Function Documentation

    +

    + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    herr_t H5IOgetname hid_t  group_id,
    const char *  member_name,
    void *  operator_data
    +
    + + + + + +
    +   + + +

    +H5IOgetname: Private

    +

    + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    herr_t H5NameExists hid_t  group_id,
    const char *  member_name,
    void *  v
    +
    + + + + + +
    +   + + +

    +H5NameExists: Private

    +

    + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    herr_t H5PartAttribcounter hid_t  group_id,
    const char *  member_name,
    void *  operator_data
    +
    + + + + + +
    +   + + +

    +

    +

    + + + + +
    + + + + + + + + + +
    void H5PartCloseFile H5PartFile f  ) 
    +
    + + + + + +
    +   + + +

    +H5PartCloseFile: closes an open file.

    Parameters:
    + + +
    f filehandle of the file to close
    +
    +
    Returns:
    void
    +
    +

    + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    herr_t H5PartDScounter hid_t  group_id,
    const char *  member_name,
    void *  operator_data
    +
    + + + + + +
    +   + + +

    +H5PartDScounter: Private

    +

    + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    int H5PartFileGetStashFileName H5PartFile f,
    int  nameindex,
    char *  filename,
    int  maxnamelen
    +
    + + + + + +
    +   + + +

    +

    +

    + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    int H5PartFileHasName H5PartFile f,
    char *  dir,
    char *  name
    +
    + + + + + +
    +   + + +

    +H5PartFileHasName: Private

    +

    + + + + +
    + + + + + + + + + +
    int H5PartFileIsValid H5PartFile f  ) 
    +
    + + + + + +
    +   + + +

    +H5PartFileIsValid: checks if a file was successfully opened.

    Parameters:
    + + +
    f filehandle of the file to check validity
    +
    +
    Returns:
    1 if success 0 if failure
    +
    +

    + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    int H5PartGetDatasetName H5PartFile f,
    int  _index,
    char *  name,
    int  maxlen
    +
    + + + + + +
    +   + + +

    +H5PartGetDatasetName: This reads the name of a datasetes specified by it's index.

    Parameters:
    + + + + + +
    f A FileHandle opened by H5PartOpenFile() or H5PartOpenFileParallel().
    _index integer specifying the index of the dataset. If the number of datasets is nds, the range of index is 0 to nds-1.
    name A null-terminated string for the name of the dataset.
    maxlen An integer specifying the maximum length of the name array.
    +
    +
    Returns:
    1 on success, 0 on failure.
    +
    +

    + + + + +
    + + + + + + + + + + + + + + + + + + +
    hid_t H5PartGetDiskShape H5PartFile f,
    hid_t  dataset
    +
    + + + + + +
    +   + + +

    +H5PartGetDiskShape: Private

    +

    + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void H5PartGetFileAttribInfo H5PartFile f,
    int  idx,
    char *  name,
    size_t  maxname,
    hid_t *  type,
    int *  nelem
    +
    + + + + + +
    +   + + +

    +H5PartGetFileAttribInfo: gets the name, type and number of elements of a file attribute .

    Parameters:
    + + + + + + + +
    f A FileHandle opened by H5PartOpenFile() or H5PartOpenFileParallel().
    idx Index of the attribute
    name A null-terminated string with the name of the attribute.
    maxname The length of the attribute name.
    type One of the following ones: H5T_NATIVE_DOUBLE H5T_NATIVE_INT64 H5T_NATIVE_CHAR.
    nelem Number of elements of type "type".
    +
    +
    Returns:
    void.
    +
    +

    + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    herr_t H5PartGetFirstDS hid_t  group_id,
    const char *  member_name,
    void *  operator_data
    +
    + + + + + +
    +   + + +

    +H5PartGetFirstDS: Private

    +

    + + + + +
    + + + + + + + + + + + + + + + + + + +
    hid_t H5PartGetMemShape H5PartFile f,
    hid_t  dataset
    +
    + + + + + +
    +   + + +

    +

    +

    + + + + +
    + + + + + + + + + +
    int H5PartGetNumDatasets H5PartFile f  ) 
    +
    + + + + + +
    +   + + +

    +H5PartGetNumDatasets: This reads the number of datasetes that are stored at a particular time step.

    Parameters:
    + + +
    f A FileHandle opened by H5PartOpenFile() or H5PartOpenFileParallel().
    +
    +
    Returns:
    number of datasets.
    +
    +

    + + + + +
    + + + + + + + + + +
    int H5PartGetNumFileAttribs H5PartFile f  ) 
    +
    + + + + + +
    +   + + +

    +H5PartGetNumFileAttribs: gets the number of attributes bound to the file.

    Parameters:
    + + +
    f A FileHandle opened by H5PartOpenFile() or H5PartOpenFileParallel().
    +
    +
    Returns:
    number of attributes of the File.
    +
    +

    + + + + +
    + + + + + + + + + +
    long long H5PartGetNumParticles H5PartFile f  ) 
    +
    + + + + + +
    +   + + +

    +H5PartGetNumParticles: This gets the number of particles that are stored in the current timestep. It will arbitrarily select a timestep if you haven't already set the timestep with H5PartSetStep().

    Parameters:
    + + +
    f A FileHandle opened by H5PartOpenFile() or H5PartOpenFileParallel().
    +
    +
    Returns:
    number of particles in current timestep.
    +
    +

    + + + + +
    + + + + + + + + + +
    int H5PartGetNumStashFiles H5PartFile f  ) 
    +
    + + + + + +
    +   + + +

    +H5PartGetNumStashFiles: returns the number of stashed files.

    Parameters:
    + + +
    f A FileHandle opened by H5PartOpenFile() or H5PartOpenFileParallel().
    +
    +
    Returns:
    Number of stashed files.
    +
    +

    + + + + +
    + + + + + + + + + +
    int H5PartGetNumStepAttribs H5PartFile f  ) 
    +
    + + + + + +
    +   + + +

    +H5PartGetNumStepAttribs: gets the number of attributes bound to the current step. The step has to be set with H5PartSetStep().

    Parameters:
    + + +
    f A FileHandle opened by H5PartOpenFile() or H5PartOpenFileParallel().
    +
    +
    Returns:
    number of attributes of the current step.
    +
    +

    + + + + +
    + + + + + + + + + +
    int H5PartGetNumSteps H5PartFile f  ) 
    +
    + + + + + +
    +   + + +

    +H5PartGetNumSteps: This reads the number of datasteps that are currently stored in the datafile. (simple return of an int). It works for both reading and writing of files, but is probably only typically used when you are reading.

    Parameters:
    + + +
    f A FileHandle opened by H5PartOpenFile() or H5PartOpenFileParallel().
    +
    +
    Returns:
    number of timesteps currently stored in the file.
    +
    +

    + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void H5PartGetStepAttribInfo H5PartFile f,
    int  idx,
    char *  name,
    size_t  maxname,
    hid_t *  type,
    int *  nelem
    +
    + + + + + +
    +   + + +

    +H5PartGetStepAttribInfo: gets the name, type and number of elements of a step attribute .

    Parameters:
    + + + + + + + +
    f A FileHandle opened by H5PartOpenFile() or H5PartOpenFileParallel().
    idx Index of the attribute
    name A null-terminated string with the name of the attribute.
    maxname the length of the name of the attribute.
    type One of the following ones: H5T_NATIVE_DOUBLE H5T_NATIVE_INT64 H5T_NATIVE_CHAR.
    nelem Number of elements of type "type".
    +
    +
    Returns:
    void.
    +
    +

    + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    int H5PartGetView H5PartFile f,
    long long *  start,
    long long *  end
    +
    + + + + + +
    +   + + +

    +H5PartGetView: Allows you to query the current view. Start and End will be -1 if there is no current view established. Use H5PartHasView to see if the view is smaller than the total dataset.

    Parameters:
    + + + + +
    f A FileHandle opened by H5PartOpenFile() or H5PartOpenFileParallel().
    start start particle
    end end particle
    +
    +
    Returns:
    the number of elements in the view
    +
    +

    + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    herr_t H5PartIOcounter hid_t  group_id,
    const char *  member_name,
    void *  operator_data
    +
    + + + + + +
    +   + + +

    +H5PartIOcounter: This is an entirely internal callback function which is used in conjunction with HDF5 iterators. The HDF5 Group iterator will call this repeatedly in order to count how many timesteps of data have been stored in a particular file. This is used by H5PartGetNumSteps().

    +

    + + + + +
    + + + + + + + + + +
    hid_t H5PartNormType hid_t  type  ) 
    +
    + + + + + +
    +   + + +

    +H5PartNormType: Private

    +

    + + + + +
    + + + + + + + + + + + + + + + + + + +
    H5PartFile* H5PartOpenFile const char *  filename,
    unsigned  flags
    +
    + + + + + +
    +   + + +

    +H5PartOpenFile: Opens file with specified filename. If you open with flag H5PART_WRITE, it will truncate any file with the specified filename and start writing to it. If you open with H5PART_READ, then it will open the file readonly.

    +H5PartFile should be treated as an essentially opaque datastructure. It acts as the file handle, but internally it maintains several key state variables associated with the file.

    +

    Parameters:
    + + + +
    filename The name of the IEEEIO data file to open. The typical extension for these files is .h5
    flags The accessmode for the file. This is one of 2 different access modes: H5PART_READ, H5PART_WRITE.
    +
    +
    Returns:
    A new filehandle with an open file or NULL if error.
    +
    +

    + + + + +
    + + + + + + + + + + + + + + + + + + +
    H5PartFile* H5PartOpenFileParallel const char *  filename,
    unsigned  flags
    +
    + + + + + +
    +   + + +

    +H5PartOpenFileParallel: Opens file with specified filename. If you open with flag H5PART_WRITE, it will truncate any file with the specified filename and start writing to it. If you open with H5PART_READ, then it will open the file readonly.

    +H5PartFile should be treated as an essentially opaque datastructure. It acts as the file handle, but internally it maintains several key state variables associated with the file.

    +

    Parameters:
    + + + + +
    filename The name of the IEEEIO data file to open. The typical extension for these files is .h5
    flags The accessmode for the file. This is one of 2 different access modes: H5PART_READ, H5PART_WRITE.
    comm This argument is only available if the program has been compiled with the PARALLEL_IO
    +
    +
    Returns:
    A new filehandle with an open file or NULL if error.
    +
    +

    + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void H5PartReadAttrib H5PartFile f,
    char *  name,
    void *  data
    +
    + + + + + +
    +   + + +

    +H5PartReadAttrib: reads a step attribute NOTE: it has been superseeded by H5PartReadStepAttrib.

    Parameters:
    + + + + +
    f A FileHandle opened by H5PartOpenFile() or H5PartOpenFileParallel().
    name A null-terminated string with the name of the attribute.
    data of the attribute.
    +
    +
    Returns:
    1 on success, -1 on failure.
    +
    +

    + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    int H5PartReadDataFloat64 H5PartFile f,
    char *  name,
    double *  array
    +
    + + + + + +
    +   + + +

    +H5PartReadDataFloat64: This reads in an individual array from a particlar timestep. If you haven't selected a particular timestep, it will pick the current one.

    Parameters:
    + + + + +
    f A FileHandle opened by H5PartOpenFile() or H5PartOpenFileParallel().
    name A null-terminated string for the name of the array. When retrieving datasets from disk, you ask for them by name. There are no restrictions on naming of arrays, but it is useful to arrive at some common naming convention when sharing data with other groups.
    array A buffer to read array of particle data. The datatype for elements in the buffer is implicit in the name of the subroutine call.
    +
    +
    Returns:
    1 on success, 0 on failure.
    +
    +

    + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    int H5PartReadDataInt64 H5PartFile f,
    char *  name,
    long long *  array
    +
    + + + + + +
    +   + + +

    +H5PartReadDataInt64: This reads in an individual array from a particlar timestep. If you haven't selected a particular timestep, it will pick the current one.

    Parameters:
    + + + + +
    f A FileHandle opened by H5PartOpenFile() or H5PartOpenFileParallel().
    name A null-terminated string for the name of the array. When retrieving datasets from disk, you ask for them by name. There are no restrictions on naming of arrays, but it is useful to arrive at some common naming convention when sharing data with other groups.
    array A buffer to read array of particle data. The datatype for elements in the buffer is implicit in the name of the subroutine call.
    +
    +
    Returns:
    1 on success, 0 on failure.
    +
    +

    + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    int H5PartReadFileAttrib H5PartFile f,
    char *  name,
    void *  data
    +
    + + + + + +
    +   + + +

    +H5PartReadFileAttrib: reads a file attribute

    Parameters:
    + + + + +
    f A FileHandle opened by H5PartOpenFile() or H5PartOpenFileParallel().
    name A null-terminated string with the name of the attribute.
    data Value of the attribute.
    +
    +
    Returns:
    1 on success, -1 on failure.
    +
    +

    + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    int H5PartReadParticleStep H5PartFile f,
    int  step,
    double *  x,
    double *  y,
    double *  z,
    double *  px,
    double *  py,
    double *  pz,
    long long *  id
    +
    + + + + + +
    +   + + +

    +H5PartReadParticleStep: This is the mongo read function that pulls in all of the data for a given timestep in one shot. It also takes the timestep as an argument and will call H5PartSetStep() internally so that you don't have to make that call separately. See also: H5PartReadArray() if you want to just read in one of the many arrays.

    +

    + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    int H5PartReadStepAttrib H5PartFile f,
    char *  name,
    void *  data
    +
    + + + + + +
    +   + + +

    +H5PartReadStepAttrib: reads a step attribute

    Parameters:
    + + + + +
    f A FileHandle opened by H5PartOpenFile() or H5PartOpenFileParallel().
    name A null-terminated string with the name of the attribute.
    data of the attribute.
    +
    +
    Returns:
    1 on success, -1 on failure.
    +
    +

    + + + + +
    + + + + + + + + + +
    void H5PartSetCanonicalView H5PartFile f  ) 
    +
    + + + + + +
    +   + + +

    +H5SetCanonicalView: If it is too tedious to manually set the start and end coordinates for a view, the H5SetCanonicalView() will automatically select an appropriate domain decomposition of the data arrays for the degree of parallelism and set the "view" accordingly.

    Parameters:
    + + +
    f A FileHandle opened by H5PartOpenFile() or H5PartOpenFileParallel().
    +
    +
    Returns:
    void
    +
    +

    + + + + +
    + + + + + + + + + + + + + + + + + + +
    void H5PartSetNumParticles H5PartFile f,
    long long  nparticles
    +
    + + + + + +
    +   + + +

    +H5PartSetNumParticles: This function's sole purpose is to prevent needless creation of new HDF5 DataSpace handles if the number of particles is invariant throughout the sim. That's its only reason for existence. After you call this subroutine, all subsequent operations will assume this number of particles will be written.

    Parameters:
    + + + +
    f A FileHandle opened by H5PartOpenFile() or H5PartOpenFileParallel().
    nparticles A long long integer specifying the number of particles
    +
    +
    Returns:
    void
    +
    +

    + + + + +
    + + + + + + + + + + + + + + + + + + +
    void H5PartSetStep H5PartFile f,
    int  step
    +
    + + + + + +
    +   + + +

    +H5PartSetStep: When writing data to a file the current time step must be set (even if there is only one). In a file with N time steps, the steps are numbered from 0 to N-1.

    Parameters:
    + + + +
    f A FileHandle opened by H5PartOpenFile() or H5PartOpenFileParallel().
    step the time step to set.
    +
    +
    Returns:
    void
    +
    +

    + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void H5PartSetView H5PartFile f,
    long long  start,
    long long  end
    +
    + + + + + +
    +   + + +

    +H5SetView: For parallel I/O or for subsetting operations on the datafile, the H5SetView subroutine allows you to define a subset of the total particle dataset to read. The concept of "view" works for both serial and for parallel I/O. The "view" will remain in effect until a new view is set, or the number of particles in a dataset changes, or the view is "unset" by calling H5SetView(file,-1,-1);

    +Before you set a view, the H5PartGetNumParticles will return the total number of particles in a file (even for the parallel reads). However, after you set a view, it will return the number of particles contained in the view.

    +The range is inclusive (the start and the end index).

    +

    Parameters:
    + + + + +
    f A FileHandle opened by H5PartOpenFile() or H5PartOpenFileParallel().
    start start particle
    end end particle
    +
    +
    Returns:
    void
    +
    +

    + + + + +
    + + + + + + + + + + + + + + + + + + +
    int H5PartStashFile H5PartFile f,
    char *  filename
    +
    + + + + + +
    +   + + +

    +NOTE: it's missing the read! H5PartStashFile: stash a file in the hdf5 file. If it does not exists a UserData and a Files group will be created. /param f A FileHandle opened by H5PartOpenFile() or H5PartOpenFileParallel(). /param filename A null-terminated string for the name of the filename. /return 1 on succes, 0 on failure.

    +

    + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    int H5PartUnstashFile H5PartFile f,
    char *  filename,
    char *  outputpath
    +
    + + + + + +
    +   + + +

    +H5PartUnstashFile: unstash a file in the hdf5 file. /param f A FileHandle opened by H5PartOpenFile() or H5PartOpenFileParallel(). /param filename A null-terminated string for the name of the filename. /param The path to the directory to create the file. /return 1 on succes, 0 on failure.

    +

    + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    int H5PartWriteAttrib H5PartFile f,
    char *  name,
    hid_t  type,
    void *  value,
    int  nelem
    +
    + + + + + +
    +   + + +

    +H5PartWriteAttr: writes a step attribute. Note: this call has been superseeded by H5PartWriteStepAttr.

    +

    Parameters:
    + + + + + + +
    f A FileHandle opened by H5PartOpenFile() or H5PartOpenFileParallel().
    name A null-terminated string for the name of the attribute.
    type One of H5T_NATIVE_DOUBLE, H5T_NATIVE_INT64, H5T_NATIVE_CHAR.
    value Value of the attribute.
    nelem Number of elements of type "type".
    +
    +
    Returns:
    1 on success, 0 on failure.
    +
    +

    + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    int H5PartWriteDataFloat64 H5PartFile f,
    char *  name,
    double *  array
    +
    + + + + + +
    +   + + +

    +H5PartWriteDataFloat64: After setting the number of particles with H5PartSetNumParticles() and the current timestep using H5PartSetStep(), you can start writing datasets into the file. Each dataset has a name associated with it (chosen by the user) in order to facilitate later retrieval. The writing routines also implicitly store the datatype of the array so that the array can be reconstructed properly on other systems with incompatible type representations. The data is committed to disk before the routine returns. All data that is written after setting the timestep is associated with that timestep. While the number of particles can change for each timestep, you cannot change the number of particles in the middle of a given timestep.

    +

    Parameters:
    + + + + +
    f A FileHandle opened by H5PartOpenFile() or H5PartOpenFileParallel().
    name A null-terminated string for the name of the array. When retrieving datasets from disk, you ask for them by name. There are no restrictions on naming of arrays, but it is useful to arrive at some common naming convention when sharing data with other groups.
    array A buffer containing an array of particle data to commit to disk. The datatype for elements in the buffer is implicit in the name of the subroutine call.
    +
    +
    Returns:
    1 on success, 0 on failure.
    +
    +

    + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    int H5PartWriteDataInt64 H5PartFile f,
    char *  name,
    long long *  array
    +
    + + + + + +
    +   + + +

    +H5PartWriteDataInt64: After setting the number of particles with H5PartSetNumParticles() and the current timestep using H5PartSetStep(), you can start writing datasets into the file. Each dataset has a name associated with it (chosen by the user) in order to facilitate later retrieval. The writing routines also implicitly store the datatype of the array so that the array can be reconstructed properly on other systems with incompatible type representations. The data is committed to disk before the routine returns. All data that is written after setting the timestep is associated with that timestep. While the number of particles can change for each timestep, you cannot change the number of particles in the middle of a given timestep.

    +

    Parameters:
    + + + + +
    f A FileHandle opened by H5PartOpenFile() or H5PartOpenFileParallel().
    name A null-terminated string for the name of the array. When retrieving datasets from disk, you ask for them by name. There are no restrictions on naming of arrays, but it is useful to arrive at some common naming convention when sharing data with other groups.
    array A buffer containing an array of particle data to commit to disk. The datatype for elements in the buffer is implicit in the name of the subroutine call.
    +
    +
    Returns:
    1 on success, 0 on failure.
    +
    +

    + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    int H5PartWriteFileAttrib H5PartFile f,
    char *  name,
    hid_t  type,
    void *  value,
    int  nelem
    +
    + + + + + +
    +   + + +

    +H5PartWriteStepAttr: writes a string attribute bound to a step.

    +

    Parameters:
    + + + + + + +
    f A FileHandle opened by H5PartOpenFile() or H5PartOpenFileParallel().
    name A null-terminated string for the name of the attribute.
    type One of H5T_NATIVE_DOUBLE, H5T_NATIVE_INT64, H5T_NATIVE_CHAR.
    value Value of the attribute.
    nelem Number of elements of type "type".
    +
    +
    Returns:
    1 on success, 0 on failure.
    +
    +

    + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    int H5PartWriteFileAttribString H5PartFile f,
    char *  name,
    char *  attrib
    +
    + + + + + +
    +   + + +

    +H5PartWriteFileAttribString: writes a string attribute bound to a file.

    +

    Parameters:
    + + + + +
    f A FileHandle opened by H5PartOpenFile() or H5PartOpenFileParallel().
    name A null-terminated string for the name of the attribute.
    attrib A null-terminated string for the attribute.
    +
    +
    Returns:
    1 on success, 0 on failure.
    +
    +

    + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    int H5PartWriteStepAttrib H5PartFile f,
    char *  name,
    hid_t  type,
    void *  value,
    int  nelem
    +
    + + + + + +
    +   + + +

    +H5PartWriteStepAttrib: writes a step attribute.

    Parameters:
    + + + + + + +
    f A FileHandle opened by H5PartOpenFile() or H5PartOpenFileParallel().
    name A null-terminated string for the name of the attribute.
    type One of H5T_NATIVE_DOUBLE, H5T_NATIVE_INT64, H5T_NATIVE_CHAR.
    value Value of the attribute.
    nelem Number of elements of type "type".
    +
    +
    Returns:
    1 on success, 0 on failure.
    +
    +

    + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    int H5PartWriteStepAttribString H5PartFile f,
    char *  name,
    char *  attrib
    +
    + + + + + +
    +   + + +

    +H5PartWriteStepAttrString: writes a string attribute bound to the current step.

    +

    Parameters:
    + + + + +
    f A FileHandle opened by H5PartOpenFile() or H5PartOpenFileParallel().
    name A null-terminated string for the name of the attribute.
    attrib A null-terminated string for the attribute.
    +
    +
    Returns:
    1 on success, 0 on failure.
    +
    +


    Generated on Tue Jan 31 11:52:45 2006 for H5Part by  + +doxygen 1.4.4
    + + diff --git a/doc/ReferencePages/H5Part_8h-source.html b/doc/ReferencePages/H5Part_8h-source.html new file mode 100644 index 0000000..a57a606 --- /dev/null +++ b/doc/ReferencePages/H5Part_8h-source.html @@ -0,0 +1,146 @@ + + +H5Part: H5Part.h Source File + + + + +

    H5Part.h

    Go to the documentation of this file.
    00001 #ifndef _H5Part_H_
    +00002 #define _H5Part_H_
    +00003 
    +00004 #include <hdf5.h>
    +00005 #ifdef PARALLEL_IO
    +00006 #include <mpi.h>
    +00007 #endif
    +00008 
    +00016 typedef struct H5PartFile {
    +00017   hid_t file;
    +00018   int timestep;
    +00019 
    +00020   hid_t timegroup;
    +00021   hid_t properties;
    +00022   hsize_t nparticles;
    +00023   hid_t shape;
    +00024   unsigned mode;
    +00025   int maxstep;
    +00026   hid_t xfer_prop,create_prop,access_prop;
    +00027   hid_t diskshape,memshape; /* for parallel I/O (this is on-disk) H5S_ALL 
    +00028                     if serial I/O */
    +00029   long long viewstart,viewend; /* -1 if no view is available: A "view" looks at a subset of the data. */
    +00030   
    +00031 #ifdef PARALLEL_IO
    +00032   long long *pnparticles; /* the number of particles in each processor.
    +00033                              With respect to the "VIEW", these numbers
    +00034                              can be regarded as non-overlapping subsections
    +00035                              of the particle array stored in the file.
    +00036                              So they can be used to compute the offset of
    +00037                              the view for each processor */
    +00038   MPI_Comm comm;
    +00039   int nprocs,myproc;
    +00040 #endif
    +00041 }H5PartFile;
    +00042 
    +00043 #define H5PART_READ 0x01
    +00044 #define H5PART_WRITE 0x02
    +00045 
    +00046 /*========== File Opening/Closing ===============*/
    +00047 #ifdef PARALLEL_IO
    +00048 #include <mpi.h>
    +00049 H5PartFile *H5PartOpenFileParallel(const char *filename,
    +00050                                    unsigned flags,
    +00051                                    MPI_Comm communicator);
    +00052 #endif
    +00053 #define H5PartOpenFileSerial(x,y) H5PartOpenFile(x,y)
    +00054 
    +00055 H5PartFile *H5PartOpenFile(const char *filename, /* name of datafile */
    +00056                                  unsigned flags); /* H5PART_READ | H5PART_WRITE */
    +00057 int H5PartFileIsValid(H5PartFile *f);
    +00058 void H5PartCloseFile(H5PartFile *f);
    +00059 
    +00060 
    +00061 /*============== File Writing Functions ==================== */
    +00062 void H5PartSetNumParticles(H5PartFile *f,long long nparticles);
    +00063 int H5PartWriteDataFloat64(H5PartFile *f,char *name,double *array);
    +00064 int H5PartWriteDataInt64(H5PartFile *f,char *name,long long *array);
    +00065 
    +00066 /*================== File Reading Routines =================*/
    +00067 void H5PartSetStep(H5PartFile *f, /* file handle */
    +00068                    int step); /* current timestep to select (0 to n-1) */
    +00069 int H5PartGetNumSteps(H5PartFile *f);
    +00070 int H5PartGetNumDatasets(H5PartFile *f);
    +00071 int H5PartGetDatasetName(H5PartFile *f,int index,char *name,int maxlen);
    +00072 long long H5PartGetNumParticles(H5PartFile *f);
    +00073 void H5PartSetView(H5PartFile *f,long long start,long long end);
    +00074 #define H5PartResetView(f) H5PartSetView(f,-1,-1)
    +00075 #define H5PartHasView(f) ((f->viewstart<0||f->viewend<0)?0:1)
    +00076 int H5PartGetView(H5PartFile *f,long long *start,long long *end);
    +00077 void H5PartSetCanonicalView(H5PartFile *f);
    +00078 
    +00079 int H5PartReadDataFloat64(H5PartFile *f,
    +00080                           char *name, /* name of the array to read
    +00081                                          "x"=position in x direction (y,z)
    +00082                                          "vx"=velocity in x directio (y,z)
    +00083                                          "px"=position in x dir (y,z) */
    +00084                           double *array); /* array to read data into */
    +00085 int H5PartReadDataInt64(H5PartFile *f,
    +00086                           char *name, /* name of the array to read
    +00087                                          "x"=position in x direction (y,z)
    +00088                                          "vx"=velocity in x directio (y,z)
    +00089                                          "px"=position in x dir (y,z) */
    +00090                           long long *array); /* array to read data into */
    +00091 
    +00092 /* the following is a back-door for extensions to the data writing */
    +00093 #if 0
    +00094 int H5PartReadData(H5PartFile *f,char *name,void *array,hid_t type);
    +00095 int H5PartWriteData(H5PartFile *f,char *name,void *array,hid_t type);
    +00096 #endif
    +00097 int H5PartReadParticleStep(H5PartFile *f, /* filehandle */
    +00098                            int step, /* selects timestep to read from*/
    +00099                            double *x,double *y,double *z, /* particle positions */
    +00100                            double *px,double *py,double *pz, /* particle momenta */
    +00101                            long long *id); /* and phase */
    +00102 /**********==============Attributes Interface============***************/
    +00103 /* currently there is file attributes:  Attributes bound to the file
    +00104    and step attributes which are bound to the current timestep.  You 
    +00105    must set the timestep explicitly before writing the attributes (just
    +00106    as you must do when you write a new dataset.  Currently there are no
    +00107    attributes that are bound to a particular data array, but this could
    +00108    easily be done if required.
    +00109 */
    +00110 int H5PartWriteStepAttrib(H5PartFile *f,char *name,
    +00111     hid_t type,void *attrib,int nelem);
    +00112 int H5PartWriteFileAttrib(H5PartFile *f,char *name,
    +00113     hid_t type,void *attrib,int nelem);
    +00114 int H5PartWriteAttrib(H5PartFile *f,char *name,
    +00115                       hid_t type,void *attrib,int nelem); /* this should be deprecated */
    +00116 
    +00117 int H5PartWriteFileAttribString(H5PartFile *f,char *name,
    +00118     char *attrib);
    +00119 int H5PartWriteStepAttribString(H5PartFile *f,char *name,
    +00120     char *attrib);
    +00121 int H5PartGetNumStepAttribs(H5PartFile *f); /* for current filestep */
    +00122 int H5PartGetNumFileAttribs(H5PartFile *f);
    +00123 void H5PartGetStepAttribInfo(H5PartFile *f,int idx,
    +00124     char *name,size_t maxnamelen,
    +00125                          hid_t *type,int *nelem);
    +00126 void H5PartGetFileAttribInfo(H5PartFile *f,int idx,
    +00127     char *name,size_t maxnamelen,
    +00128     hid_t *type,int *nelem);
    +00129 int H5PartReadStepAttrib(H5PartFile *f,char *name,void *data);
    +00130 void H5PartReadAttrib(H5PartFile *f,char *name,void *data);
    +00131 int H5PartReadFileAttrib(H5PartFile *f,char *name,void *data);
    +00132 
    +00133 
    +00134 /**************** File Stashing Interfaces *************************/
    +00135 int H5PartStashFile(H5PartFile *f,char *filename);
    +00136 int H5PartUnstashFile(H5PartFile *f, char *filename, char *outputpath); /* outputpath can be null for cwd */
    +00137 int H5PartGetNumStashFiles(H5PartFile *f);
    +00138 int H5PartFileGetStashFileName(H5PartFile *f,int nameindex,char *filename,int maxnamelen);
    +00139 
    +00140 
    +00141 #endif
    +

    Generated on Tue Jan 31 11:52:45 2006 for H5Part by  + +doxygen 1.4.4
    + + diff --git a/doc/ReferencePages/H5Part_8h.html b/doc/ReferencePages/H5Part_8h.html new file mode 100644 index 0000000..65150f4 --- /dev/null +++ b/doc/ReferencePages/H5Part_8h.html @@ -0,0 +1,1876 @@ + + +H5Part: H5Part.h File Reference + + + + +

    H5Part.h File Reference

    #include <hdf5.h>
    + +

    +Go to the source code of this file. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    Classes

    struct  H5PartFile

    Defines

    #define H5PART_READ   0x01
    #define H5PART_WRITE   0x02
    #define H5PartOpenFileSerial(x, y)   H5PartOpenFile(x,y)
    #define H5PartResetView(f)   H5PartSetView(f,-1,-1)
    #define H5PartHasView(f)   ((f->viewstart<0||f->viewend<0)?0:1)

    Typedefs

    typedef H5PartFile H5PartFile

    Functions

    H5PartFileH5PartOpenFile (const char *filename, unsigned flags)
    int H5PartFileIsValid (H5PartFile *f)
    void H5PartCloseFile (H5PartFile *f)
    void H5PartSetNumParticles (H5PartFile *f, long long nparticles)
    int H5PartWriteDataFloat64 (H5PartFile *f, char *name, double *array)
    int H5PartWriteDataInt64 (H5PartFile *f, char *name, long long *array)
    void H5PartSetStep (H5PartFile *f, int step)
    int H5PartGetNumSteps (H5PartFile *f)
    int H5PartGetNumDatasets (H5PartFile *f)
    int H5PartGetDatasetName (H5PartFile *f, int index, char *name, int maxlen)
    long long H5PartGetNumParticles (H5PartFile *f)
    void H5PartSetView (H5PartFile *f, long long start, long long end)
    int H5PartGetView (H5PartFile *f, long long *start, long long *end)
    void H5PartSetCanonicalView (H5PartFile *f)
    int H5PartReadDataFloat64 (H5PartFile *f, char *name, double *array)
    int H5PartReadDataInt64 (H5PartFile *f, char *name, long long *array)
    int H5PartReadParticleStep (H5PartFile *f, int step, double *x, double *y, double *z, double *px, double *py, double *pz, long long *id)
    int H5PartWriteStepAttrib (H5PartFile *f, char *name, hid_t type, void *attrib, int nelem)
    int H5PartWriteFileAttrib (H5PartFile *f, char *name, hid_t type, void *attrib, int nelem)
    int H5PartWriteAttrib (H5PartFile *f, char *name, hid_t type, void *attrib, int nelem)
    int H5PartWriteFileAttribString (H5PartFile *f, char *name, char *attrib)
    int H5PartWriteStepAttribString (H5PartFile *f, char *name, char *attrib)
    int H5PartGetNumStepAttribs (H5PartFile *f)
    int H5PartGetNumFileAttribs (H5PartFile *f)
    void H5PartGetStepAttribInfo (H5PartFile *f, int idx, char *name, size_t maxnamelen, hid_t *type, int *nelem)
    void H5PartGetFileAttribInfo (H5PartFile *f, int idx, char *name, size_t maxnamelen, hid_t *type, int *nelem)
    int H5PartReadStepAttrib (H5PartFile *f, char *name, void *data)
    void H5PartReadAttrib (H5PartFile *f, char *name, void *data)
    int H5PartReadFileAttrib (H5PartFile *f, char *name, void *data)
    int H5PartStashFile (H5PartFile *f, char *filename)
    int H5PartUnstashFile (H5PartFile *f, char *filename, char *outputpath)
    int H5PartGetNumStashFiles (H5PartFile *f)
    int H5PartFileGetStashFileName (H5PartFile *f, int nameindex, char *filename, int maxnamelen)
    +


    Define Documentation

    +

    + + + + +
    + + + + +
    #define H5PART_READ   0x01
    +
    + + + + + +
    +   + + +

    +

    +

    + + + + +
    + + + + +
    #define H5PART_WRITE   0x02
    +
    + + + + + +
    +   + + +

    +

    +

    + + + + +
    + + + + + + + + + +
    #define H5PartHasView  )    ((f->viewstart<0||f->viewend<0)?0:1)
    +
    + + + + + +
    +   + + +

    +

    +

    + + + + +
    + + + + + + + + + + + + +
    #define H5PartOpenFileSerial x,
     )    H5PartOpenFile(x,y)
    +
    + + + + + +
    +   + + +

    +

    +

    + + + + +
    + + + + + + + + + +
    #define H5PartResetView  )    H5PartSetView(f,-1,-1)
    +
    + + + + + +
    +   + + +

    +

    +


    Typedef Documentation

    +

    + + + + +
    + + + + +
    typedef struct H5PartFile H5PartFile
    +
    + + + + + +
    +   + + +

    +/struct H5PartFile: This is an essentially opaque datastructure that acts as the filehandle for all practical purposes. It is created by H5PartOpenFile<xx>() and destroyed by H5PartCloseFile().

    +


    Function Documentation

    +

    + + + + +
    + + + + + + + + + +
    void H5PartCloseFile H5PartFile f  ) 
    +
    + + + + + +
    +   + + +

    +H5PartCloseFile: closes an open file.

    Parameters:
    + + +
    f filehandle of the file to close
    +
    +
    Returns:
    void
    +
    +

    + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    int H5PartFileGetStashFileName H5PartFile f,
    int  nameindex,
    char *  filename,
    int  maxnamelen
    +
    + + + + + +
    +   + + +

    +

    +

    + + + + +
    + + + + + + + + + +
    int H5PartFileIsValid H5PartFile f  ) 
    +
    + + + + + +
    +   + + +

    +H5PartFileIsValid: checks if a file was successfully opened.

    Parameters:
    + + +
    f filehandle of the file to check validity
    +
    +
    Returns:
    1 if success 0 if failure
    +
    +

    + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    int H5PartGetDatasetName H5PartFile f,
    int  _index,
    char *  name,
    int  maxlen
    +
    + + + + + +
    +   + + +

    +H5PartGetDatasetName: This reads the name of a datasetes specified by it's index.

    Parameters:
    + + + + + +
    f A FileHandle opened by H5PartOpenFile() or H5PartOpenFileParallel().
    _index integer specifying the index of the dataset. If the number of datasets is nds, the range of index is 0 to nds-1.
    name A null-terminated string for the name of the dataset.
    maxlen An integer specifying the maximum length of the name array.
    +
    +
    Returns:
    1 on success, 0 on failure.
    +
    +

    + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void H5PartGetFileAttribInfo H5PartFile f,
    int  idx,
    char *  name,
    size_t  maxname,
    hid_t *  type,
    int *  nelem
    +
    + + + + + +
    +   + + +

    +H5PartGetFileAttribInfo: gets the name, type and number of elements of a file attribute .

    Parameters:
    + + + + + + + +
    f A FileHandle opened by H5PartOpenFile() or H5PartOpenFileParallel().
    idx Index of the attribute
    name A null-terminated string with the name of the attribute.
    maxname The length of the attribute name.
    type One of the following ones: H5T_NATIVE_DOUBLE H5T_NATIVE_INT64 H5T_NATIVE_CHAR.
    nelem Number of elements of type "type".
    +
    +
    Returns:
    void.
    +
    +

    + + + + +
    + + + + + + + + + +
    int H5PartGetNumDatasets H5PartFile f  ) 
    +
    + + + + + +
    +   + + +

    +H5PartGetNumDatasets: This reads the number of datasetes that are stored at a particular time step.

    Parameters:
    + + +
    f A FileHandle opened by H5PartOpenFile() or H5PartOpenFileParallel().
    +
    +
    Returns:
    number of datasets.
    +
    +

    + + + + +
    + + + + + + + + + +
    int H5PartGetNumFileAttribs H5PartFile f  ) 
    +
    + + + + + +
    +   + + +

    +H5PartGetNumFileAttribs: gets the number of attributes bound to the file.

    Parameters:
    + + +
    f A FileHandle opened by H5PartOpenFile() or H5PartOpenFileParallel().
    +
    +
    Returns:
    number of attributes of the File.
    +
    +

    + + + + +
    + + + + + + + + + +
    long long H5PartGetNumParticles H5PartFile f  ) 
    +
    + + + + + +
    +   + + +

    +H5PartGetNumParticles: This gets the number of particles that are stored in the current timestep. It will arbitrarily select a timestep if you haven't already set the timestep with H5PartSetStep().

    Parameters:
    + + +
    f A FileHandle opened by H5PartOpenFile() or H5PartOpenFileParallel().
    +
    +
    Returns:
    number of particles in current timestep.
    +
    +

    + + + + +
    + + + + + + + + + +
    int H5PartGetNumStashFiles H5PartFile f  ) 
    +
    + + + + + +
    +   + + +

    +H5PartGetNumStashFiles: returns the number of stashed files.

    Parameters:
    + + +
    f A FileHandle opened by H5PartOpenFile() or H5PartOpenFileParallel().
    +
    +
    Returns:
    Number of stashed files.
    +
    +

    + + + + +
    + + + + + + + + + +
    int H5PartGetNumStepAttribs H5PartFile f  ) 
    +
    + + + + + +
    +   + + +

    +H5PartGetNumStepAttribs: gets the number of attributes bound to the current step. The step has to be set with H5PartSetStep().

    Parameters:
    + + +
    f A FileHandle opened by H5PartOpenFile() or H5PartOpenFileParallel().
    +
    +
    Returns:
    number of attributes of the current step.
    +
    +

    + + + + +
    + + + + + + + + + +
    int H5PartGetNumSteps H5PartFile f  ) 
    +
    + + + + + +
    +   + + +

    +H5PartGetNumSteps: This reads the number of datasteps that are currently stored in the datafile. (simple return of an int). It works for both reading and writing of files, but is probably only typically used when you are reading.

    Parameters:
    + + +
    f A FileHandle opened by H5PartOpenFile() or H5PartOpenFileParallel().
    +
    +
    Returns:
    number of timesteps currently stored in the file.
    +
    +

    + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void H5PartGetStepAttribInfo H5PartFile f,
    int  idx,
    char *  name,
    size_t  maxname,
    hid_t *  type,
    int *  nelem
    +
    + + + + + +
    +   + + +

    +H5PartGetStepAttribInfo: gets the name, type and number of elements of a step attribute .

    Parameters:
    + + + + + + + +
    f A FileHandle opened by H5PartOpenFile() or H5PartOpenFileParallel().
    idx Index of the attribute
    name A null-terminated string with the name of the attribute.
    maxname the length of the name of the attribute.
    type One of the following ones: H5T_NATIVE_DOUBLE H5T_NATIVE_INT64 H5T_NATIVE_CHAR.
    nelem Number of elements of type "type".
    +
    +
    Returns:
    void.
    +
    +

    + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    int H5PartGetView H5PartFile f,
    long long *  start,
    long long *  end
    +
    + + + + + +
    +   + + +

    +H5PartGetView: Allows you to query the current view. Start and End will be -1 if there is no current view established. Use H5PartHasView to see if the view is smaller than the total dataset.

    Parameters:
    + + + + +
    f A FileHandle opened by H5PartOpenFile() or H5PartOpenFileParallel().
    start start particle
    end end particle
    +
    +
    Returns:
    the number of elements in the view
    +
    +

    + + + + +
    + + + + + + + + + + + + + + + + + + +
    H5PartFile* H5PartOpenFile const char *  filename,
    unsigned  flags
    +
    + + + + + +
    +   + + +

    +H5PartOpenFile: Opens file with specified filename. If you open with flag H5PART_WRITE, it will truncate any file with the specified filename and start writing to it. If you open with H5PART_READ, then it will open the file readonly.

    +H5PartFile should be treated as an essentially opaque datastructure. It acts as the file handle, but internally it maintains several key state variables associated with the file.

    +

    Parameters:
    + + + +
    filename The name of the IEEEIO data file to open. The typical extension for these files is .h5
    flags The accessmode for the file. This is one of 2 different access modes: H5PART_READ, H5PART_WRITE.
    +
    +
    Returns:
    A new filehandle with an open file or NULL if error.
    +
    +

    + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void H5PartReadAttrib H5PartFile f,
    char *  name,
    void *  data
    +
    + + + + + +
    +   + + +

    +H5PartReadAttrib: reads a step attribute NOTE: it has been superseeded by H5PartReadStepAttrib.

    Parameters:
    + + + + +
    f A FileHandle opened by H5PartOpenFile() or H5PartOpenFileParallel().
    name A null-terminated string with the name of the attribute.
    data of the attribute.
    +
    +
    Returns:
    1 on success, -1 on failure.
    +
    +

    + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    int H5PartReadDataFloat64 H5PartFile f,
    char *  name,
    double *  array
    +
    + + + + + +
    +   + + +

    +H5PartReadDataFloat64: This reads in an individual array from a particlar timestep. If you haven't selected a particular timestep, it will pick the current one.

    Parameters:
    + + + + +
    f A FileHandle opened by H5PartOpenFile() or H5PartOpenFileParallel().
    name A null-terminated string for the name of the array. When retrieving datasets from disk, you ask for them by name. There are no restrictions on naming of arrays, but it is useful to arrive at some common naming convention when sharing data with other groups.
    array A buffer to read array of particle data. The datatype for elements in the buffer is implicit in the name of the subroutine call.
    +
    +
    Returns:
    1 on success, 0 on failure.
    +
    +

    + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    int H5PartReadDataInt64 H5PartFile f,
    char *  name,
    long long *  array
    +
    + + + + + +
    +   + + +

    +H5PartReadDataInt64: This reads in an individual array from a particlar timestep. If you haven't selected a particular timestep, it will pick the current one.

    Parameters:
    + + + + +
    f A FileHandle opened by H5PartOpenFile() or H5PartOpenFileParallel().
    name A null-terminated string for the name of the array. When retrieving datasets from disk, you ask for them by name. There are no restrictions on naming of arrays, but it is useful to arrive at some common naming convention when sharing data with other groups.
    array A buffer to read array of particle data. The datatype for elements in the buffer is implicit in the name of the subroutine call.
    +
    +
    Returns:
    1 on success, 0 on failure.
    +
    +

    + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    int H5PartReadFileAttrib H5PartFile f,
    char *  name,
    void *  data
    +
    + + + + + +
    +   + + +

    +H5PartReadFileAttrib: reads a file attribute

    Parameters:
    + + + + +
    f A FileHandle opened by H5PartOpenFile() or H5PartOpenFileParallel().
    name A null-terminated string with the name of the attribute.
    data Value of the attribute.
    +
    +
    Returns:
    1 on success, -1 on failure.
    +
    +

    + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    int H5PartReadParticleStep H5PartFile f,
    int  step,
    double *  x,
    double *  y,
    double *  z,
    double *  px,
    double *  py,
    double *  pz,
    long long *  id
    +
    + + + + + +
    +   + + +

    +H5PartReadParticleStep: This is the mongo read function that pulls in all of the data for a given timestep in one shot. It also takes the timestep as an argument and will call H5PartSetStep() internally so that you don't have to make that call separately. See also: H5PartReadArray() if you want to just read in one of the many arrays.

    +

    + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    int H5PartReadStepAttrib H5PartFile f,
    char *  name,
    void *  data
    +
    + + + + + +
    +   + + +

    +H5PartReadStepAttrib: reads a step attribute

    Parameters:
    + + + + +
    f A FileHandle opened by H5PartOpenFile() or H5PartOpenFileParallel().
    name A null-terminated string with the name of the attribute.
    data of the attribute.
    +
    +
    Returns:
    1 on success, -1 on failure.
    +
    +

    + + + + +
    + + + + + + + + + +
    void H5PartSetCanonicalView H5PartFile f  ) 
    +
    + + + + + +
    +   + + +

    +H5SetCanonicalView: If it is too tedious to manually set the start and end coordinates for a view, the H5SetCanonicalView() will automatically select an appropriate domain decomposition of the data arrays for the degree of parallelism and set the "view" accordingly.

    Parameters:
    + + +
    f A FileHandle opened by H5PartOpenFile() or H5PartOpenFileParallel().
    +
    +
    Returns:
    void
    +
    +

    + + + + +
    + + + + + + + + + + + + + + + + + + +
    void H5PartSetNumParticles H5PartFile f,
    long long  nparticles
    +
    + + + + + +
    +   + + +

    +H5PartSetNumParticles: This function's sole purpose is to prevent needless creation of new HDF5 DataSpace handles if the number of particles is invariant throughout the sim. That's its only reason for existence. After you call this subroutine, all subsequent operations will assume this number of particles will be written.

    Parameters:
    + + + +
    f A FileHandle opened by H5PartOpenFile() or H5PartOpenFileParallel().
    nparticles A long long integer specifying the number of particles
    +
    +
    Returns:
    void
    +
    +

    + + + + +
    + + + + + + + + + + + + + + + + + + +
    void H5PartSetStep H5PartFile f,
    int  step
    +
    + + + + + +
    +   + + +

    +H5PartSetStep: When writing data to a file the current time step must be set (even if there is only one). In a file with N time steps, the steps are numbered from 0 to N-1.

    Parameters:
    + + + +
    f A FileHandle opened by H5PartOpenFile() or H5PartOpenFileParallel().
    step the time step to set.
    +
    +
    Returns:
    void
    +
    +

    + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void H5PartSetView H5PartFile f,
    long long  start,
    long long  end
    +
    + + + + + +
    +   + + +

    +H5SetView: For parallel I/O or for subsetting operations on the datafile, the H5SetView subroutine allows you to define a subset of the total particle dataset to read. The concept of "view" works for both serial and for parallel I/O. The "view" will remain in effect until a new view is set, or the number of particles in a dataset changes, or the view is "unset" by calling H5SetView(file,-1,-1);

    +Before you set a view, the H5PartGetNumParticles will return the total number of particles in a file (even for the parallel reads). However, after you set a view, it will return the number of particles contained in the view.

    +The range is inclusive (the start and the end index).

    +

    Parameters:
    + + + + +
    f A FileHandle opened by H5PartOpenFile() or H5PartOpenFileParallel().
    start start particle
    end end particle
    +
    +
    Returns:
    void
    +
    +

    + + + + +
    + + + + + + + + + + + + + + + + + + +
    int H5PartStashFile H5PartFile f,
    char *  filename
    +
    + + + + + +
    +   + + +

    +NOTE: it's missing the read! H5PartStashFile: stash a file in the hdf5 file. If it does not exists a UserData and a Files group will be created. /param f A FileHandle opened by H5PartOpenFile() or H5PartOpenFileParallel(). /param filename A null-terminated string for the name of the filename. /return 1 on succes, 0 on failure.

    +

    + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    int H5PartUnstashFile H5PartFile f,
    char *  filename,
    char *  outputpath
    +
    + + + + + +
    +   + + +

    +H5PartUnstashFile: unstash a file in the hdf5 file. /param f A FileHandle opened by H5PartOpenFile() or H5PartOpenFileParallel(). /param filename A null-terminated string for the name of the filename. /param The path to the directory to create the file. /return 1 on succes, 0 on failure.

    +

    + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    int H5PartWriteAttrib H5PartFile f,
    char *  name,
    hid_t  type,
    void *  value,
    int  nelem
    +
    + + + + + +
    +   + + +

    +H5PartWriteAttr: writes a step attribute. Note: this call has been superseeded by H5PartWriteStepAttr.

    +

    Parameters:
    + + + + + + +
    f A FileHandle opened by H5PartOpenFile() or H5PartOpenFileParallel().
    name A null-terminated string for the name of the attribute.
    type One of H5T_NATIVE_DOUBLE, H5T_NATIVE_INT64, H5T_NATIVE_CHAR.
    value Value of the attribute.
    nelem Number of elements of type "type".
    +
    +
    Returns:
    1 on success, 0 on failure.
    +
    +

    + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    int H5PartWriteDataFloat64 H5PartFile f,
    char *  name,
    double *  array
    +
    + + + + + +
    +   + + +

    +H5PartWriteDataFloat64: After setting the number of particles with H5PartSetNumParticles() and the current timestep using H5PartSetStep(), you can start writing datasets into the file. Each dataset has a name associated with it (chosen by the user) in order to facilitate later retrieval. The writing routines also implicitly store the datatype of the array so that the array can be reconstructed properly on other systems with incompatible type representations. The data is committed to disk before the routine returns. All data that is written after setting the timestep is associated with that timestep. While the number of particles can change for each timestep, you cannot change the number of particles in the middle of a given timestep.

    +

    Parameters:
    + + + + +
    f A FileHandle opened by H5PartOpenFile() or H5PartOpenFileParallel().
    name A null-terminated string for the name of the array. When retrieving datasets from disk, you ask for them by name. There are no restrictions on naming of arrays, but it is useful to arrive at some common naming convention when sharing data with other groups.
    array A buffer containing an array of particle data to commit to disk. The datatype for elements in the buffer is implicit in the name of the subroutine call.
    +
    +
    Returns:
    1 on success, 0 on failure.
    +
    +

    + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    int H5PartWriteDataInt64 H5PartFile f,
    char *  name,
    long long *  array
    +
    + + + + + +
    +   + + +

    +H5PartWriteDataInt64: After setting the number of particles with H5PartSetNumParticles() and the current timestep using H5PartSetStep(), you can start writing datasets into the file. Each dataset has a name associated with it (chosen by the user) in order to facilitate later retrieval. The writing routines also implicitly store the datatype of the array so that the array can be reconstructed properly on other systems with incompatible type representations. The data is committed to disk before the routine returns. All data that is written after setting the timestep is associated with that timestep. While the number of particles can change for each timestep, you cannot change the number of particles in the middle of a given timestep.

    +

    Parameters:
    + + + + +
    f A FileHandle opened by H5PartOpenFile() or H5PartOpenFileParallel().
    name A null-terminated string for the name of the array. When retrieving datasets from disk, you ask for them by name. There are no restrictions on naming of arrays, but it is useful to arrive at some common naming convention when sharing data with other groups.
    array A buffer containing an array of particle data to commit to disk. The datatype for elements in the buffer is implicit in the name of the subroutine call.
    +
    +
    Returns:
    1 on success, 0 on failure.
    +
    +

    + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    int H5PartWriteFileAttrib H5PartFile f,
    char *  name,
    hid_t  type,
    void *  value,
    int  nelem
    +
    + + + + + +
    +   + + +

    +H5PartWriteStepAttr: writes a string attribute bound to a step.

    +

    Parameters:
    + + + + + + +
    f A FileHandle opened by H5PartOpenFile() or H5PartOpenFileParallel().
    name A null-terminated string for the name of the attribute.
    type One of H5T_NATIVE_DOUBLE, H5T_NATIVE_INT64, H5T_NATIVE_CHAR.
    value Value of the attribute.
    nelem Number of elements of type "type".
    +
    +
    Returns:
    1 on success, 0 on failure.
    +
    +

    + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    int H5PartWriteFileAttribString H5PartFile f,
    char *  name,
    char *  attrib
    +
    + + + + + +
    +   + + +

    +H5PartWriteFileAttribString: writes a string attribute bound to a file.

    +

    Parameters:
    + + + + +
    f A FileHandle opened by H5PartOpenFile() or H5PartOpenFileParallel().
    name A null-terminated string for the name of the attribute.
    attrib A null-terminated string for the attribute.
    +
    +
    Returns:
    1 on success, 0 on failure.
    +
    +

    + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    int H5PartWriteStepAttrib H5PartFile f,
    char *  name,
    hid_t  type,
    void *  value,
    int  nelem
    +
    + + + + + +
    +   + + +

    +H5PartWriteStepAttrib: writes a step attribute.

    Parameters:
    + + + + + + +
    f A FileHandle opened by H5PartOpenFile() or H5PartOpenFileParallel().
    name A null-terminated string for the name of the attribute.
    type One of H5T_NATIVE_DOUBLE, H5T_NATIVE_INT64, H5T_NATIVE_CHAR.
    value Value of the attribute.
    nelem Number of elements of type "type".
    +
    +
    Returns:
    1 on success, 0 on failure.
    +
    +

    + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    int H5PartWriteStepAttribString H5PartFile f,
    char *  name,
    char *  attrib
    +
    + + + + + +
    +   + + +

    +H5PartWriteStepAttrString: writes a string attribute bound to the current step.

    +

    Parameters:
    + + + + +
    f A FileHandle opened by H5PartOpenFile() or H5PartOpenFileParallel().
    name A null-terminated string for the name of the attribute.
    attrib A null-terminated string for the attribute.
    +
    +
    Returns:
    1 on success, 0 on failure.
    +
    +


    Generated on Tue Jan 31 11:52:45 2006 for H5Part by  + +doxygen 1.4.4
    + + diff --git a/doc/ReferencePages/annotated.html b/doc/ReferencePages/annotated.html new file mode 100644 index 0000000..6d23c69 --- /dev/null +++ b/doc/ReferencePages/annotated.html @@ -0,0 +1,16 @@ + + +H5Part: Class List + + + + +

    H5Part Class List

    Here are the classes, structs, unions and interfaces with brief descriptions: + + +
    H5IO_getname_t
    H5PartFile
    +
    Generated on Tue Jan 31 11:52:45 2006 for H5Part by  + +doxygen 1.4.4
    + + diff --git a/doc/ReferencePages/doxygen.css b/doc/ReferencePages/doxygen.css new file mode 100644 index 0000000..decae9e --- /dev/null +++ b/doc/ReferencePages/doxygen.css @@ -0,0 +1,309 @@ +BODY,H1,H2,H3,H4,H5,H6,P,CENTER,TD,TH,UL,DL,DIV { + font-family: Geneva, Arial, Helvetica, sans-serif; +} +BODY,TD { + font-size: 90%; +} +H1 { + text-align: center; + font-size: 160%; +} +H2 { + font-size: 120%; +} +H3 { + font-size: 100%; +} +CAPTION { font-weight: bold } +DIV.qindex { + width: 100%; + background-color: #eeeeff; + border: 1px solid #b0b0b0; + text-align: center; + margin: 2px; + padding: 2px; + line-height: 140%; +} +DIV.nav { + width: 100%; + background-color: #eeeeff; + border: 1px solid #b0b0b0; + text-align: center; + margin: 2px; + padding: 2px; + line-height: 140%; +} +DIV.navtab { + background-color: #eeeeff; + border: 1px solid #b0b0b0; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} +TD.navtab { + font-size: 70%; +} +A.qindex { + text-decoration: none; + font-weight: bold; + color: #1A419D; +} +A.qindex:visited { + text-decoration: none; + font-weight: bold; + color: #1A419D +} +A.qindex:hover { + text-decoration: none; + background-color: #ddddff; +} +A.qindexHL { + text-decoration: none; + font-weight: bold; + background-color: #6666cc; + color: #ffffff; + border: 1px double #9295C2; +} +A.qindexHL:hover { + text-decoration: none; + background-color: #6666cc; + color: #ffffff; +} +A.qindexHL:visited { text-decoration: none; background-color: #6666cc; color: #ffffff } +A.el { text-decoration: none; font-weight: bold } +A.elRef { font-weight: bold } +A.code:link { text-decoration: none; font-weight: normal; color: #0000FF} +A.code:visited { text-decoration: none; font-weight: normal; color: #0000FF} +A.codeRef:link { font-weight: normal; color: #0000FF} +A.codeRef:visited { font-weight: normal; color: #0000FF} +A:hover { text-decoration: none; background-color: #f2f2ff } +DL.el { margin-left: -1cm } +.fragment { + font-family: Fixed, monospace; + font-size: 95%; +} +PRE.fragment { + border: 1px solid #CCCCCC; + background-color: #f5f5f5; + margin-top: 4px; + margin-bottom: 4px; + margin-left: 2px; + margin-right: 8px; + padding-left: 6px; + padding-right: 6px; + padding-top: 4px; + padding-bottom: 4px; +} +DIV.ah { background-color: black; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px } +TD.md { background-color: #F4F4FB; font-weight: bold; } +TD.mdPrefix { + background-color: #F4F4FB; + color: #606060; + font-size: 80%; +} +TD.mdname1 { background-color: #F4F4FB; font-weight: bold; color: #602020; } +TD.mdname { background-color: #F4F4FB; font-weight: bold; color: #602020; width: 600px; } +DIV.groupHeader { + margin-left: 16px; + margin-top: 12px; + margin-bottom: 6px; + font-weight: bold; +} +DIV.groupText { margin-left: 16px; font-style: italic; font-size: 90% } +BODY { + background: white; + color: black; + margin-right: 20px; + margin-left: 20px; +} +TD.indexkey { + background-color: #eeeeff; + font-weight: bold; + padding-right : 10px; + padding-top : 2px; + padding-left : 10px; + padding-bottom : 2px; + margin-left : 0px; + margin-right : 0px; + margin-top : 2px; + margin-bottom : 2px; + border: 1px solid #CCCCCC; +} +TD.indexvalue { + background-color: #eeeeff; + font-style: italic; + padding-right : 10px; + padding-top : 2px; + padding-left : 10px; + padding-bottom : 2px; + margin-left : 0px; + margin-right : 0px; + margin-top : 2px; + margin-bottom : 2px; + border: 1px solid #CCCCCC; +} +TR.memlist { + background-color: #f0f0f0; +} +P.formulaDsp { text-align: center; } +IMG.formulaDsp { } +IMG.formulaInl { vertical-align: middle; } +SPAN.keyword { color: #008000 } +SPAN.keywordtype { color: #604020 } +SPAN.keywordflow { color: #e08000 } +SPAN.comment { color: #800000 } +SPAN.preprocessor { color: #806020 } +SPAN.stringliteral { color: #002080 } +SPAN.charliteral { color: #008080 } +.mdTable { + border: 1px solid #868686; + background-color: #F4F4FB; +} +.mdRow { + padding: 8px 10px; +} +.mdescLeft { + padding: 0px 8px 4px 8px; + font-size: 80%; + font-style: italic; + background-color: #FAFAFA; + border-top: 1px none #E0E0E0; + border-right: 1px none #E0E0E0; + border-bottom: 1px none #E0E0E0; + border-left: 1px none #E0E0E0; + margin: 0px; +} +.mdescRight { + padding: 0px 8px 4px 8px; + font-size: 80%; + font-style: italic; + background-color: #FAFAFA; + border-top: 1px none #E0E0E0; + border-right: 1px none #E0E0E0; + border-bottom: 1px none #E0E0E0; + border-left: 1px none #E0E0E0; + margin: 0px; +} +.memItemLeft { + padding: 1px 0px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: solid; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memItemRight { + padding: 1px 8px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: solid; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memTemplItemLeft { + padding: 1px 0px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: none; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memTemplItemRight { + padding: 1px 8px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: none; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memTemplParams { + padding: 1px 0px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: solid; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + color: #606060; + background-color: #FAFAFA; + font-size: 80%; +} +.search { color: #003399; + font-weight: bold; +} +FORM.search { + margin-bottom: 0px; + margin-top: 0px; +} +INPUT.search { font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #eeeeff; +} +TD.tiny { font-size: 75%; +} +a { + color: #252E78; +} +a:visited { + color: #3D2185; +} +.dirtab { padding: 4px; + border-collapse: collapse; + border: 1px solid #b0b0b0; +} +TH.dirtab { background: #eeeeff; + font-weight: bold; +} +HR { height: 1px; + border: none; + border-top: 1px solid black; +} diff --git a/doc/ReferencePages/doxygen.png b/doc/ReferencePages/doxygen.png new file mode 100644 index 0000000..f0a274b Binary files /dev/null and b/doc/ReferencePages/doxygen.png differ diff --git a/doc/ReferencePages/files.html b/doc/ReferencePages/files.html new file mode 100644 index 0000000..a8a94da --- /dev/null +++ b/doc/ReferencePages/files.html @@ -0,0 +1,17 @@ + + +H5Part: File Index + + + + +

    H5Part File List

    Here is a list of all files with brief descriptions: + + + +
    H5Part.c
    H5Part.h [code]
    H5PartF.c
    +
    Generated on Tue Jan 31 11:52:45 2006 for H5Part by  + +doxygen 1.4.4
    + + diff --git a/doc/ReferencePages/functions.html b/doc/ReferencePages/functions.html new file mode 100644 index 0000000..fa5b120 --- /dev/null +++ b/doc/ReferencePages/functions.html @@ -0,0 +1,35 @@ + + +H5Part: Class Members + + + + + +Here is a list of all class members with links to the classes they belong to: +

    +

    +
    Generated on Tue Jan 31 11:52:45 2006 for H5Part by  + +doxygen 1.4.4
    + + diff --git a/doc/ReferencePages/functions_vars.html b/doc/ReferencePages/functions_vars.html new file mode 100644 index 0000000..6b77cab --- /dev/null +++ b/doc/ReferencePages/functions_vars.html @@ -0,0 +1,35 @@ + + +H5Part: Class Members - Variables + + + + + + +

    +

    +
    Generated on Tue Jan 31 11:52:45 2006 for H5Part by  + +doxygen 1.4.4
    + + diff --git a/doc/ReferencePages/globals.html b/doc/ReferencePages/globals.html new file mode 100644 index 0000000..044a663 --- /dev/null +++ b/doc/ReferencePages/globals.html @@ -0,0 +1,107 @@ + + +H5Part: Class Members + + + + + +
    f | h
    + +

    +Here is a list of all file members with links to the files they belong to: +

    +

    - f -

    +

    - h -

    +
    Generated on Tue Jan 31 11:52:45 2006 for H5Part by  + +doxygen 1.4.4
    + + diff --git a/doc/ReferencePages/globals_defs.html b/doc/ReferencePages/globals_defs.html new file mode 100644 index 0000000..24b249a --- /dev/null +++ b/doc/ReferencePages/globals_defs.html @@ -0,0 +1,59 @@ + + +H5Part: Class Members + + + + + +
    f | h
    + +

    + +

    +

    - f -

    +

    - h -

    +
    Generated on Tue Jan 31 11:52:45 2006 for H5Part by  + +doxygen 1.4.4
    + + diff --git a/doc/ReferencePages/globals_func.html b/doc/ReferencePages/globals_func.html new file mode 100644 index 0000000..5f11e8d --- /dev/null +++ b/doc/ReferencePages/globals_func.html @@ -0,0 +1,97 @@ + + +H5Part: Class Members + + + + + +
    f | h
    + +

    + +

    +

    - f -

    +

    - h -

    +
    Generated on Tue Jan 31 11:52:45 2006 for H5Part by  + +doxygen 1.4.4
    + + diff --git a/doc/ReferencePages/globals_type.html b/doc/ReferencePages/globals_type.html new file mode 100644 index 0000000..d122a7e --- /dev/null +++ b/doc/ReferencePages/globals_type.html @@ -0,0 +1,19 @@ + + +H5Part: Class Members + + + + + + +

    +

    +
    Generated on Tue Jan 31 11:52:45 2006 for H5Part by  + +doxygen 1.4.4
    + + diff --git a/doc/ReferencePages/index.html b/doc/ReferencePages/index.html new file mode 100644 index 0000000..1c739a1 --- /dev/null +++ b/doc/ReferencePages/index.html @@ -0,0 +1,14 @@ + + +H5Part: Main Page + + + + +

    H5Part Documentation

    +

    +


    Generated on Tue Jan 31 11:52:45 2006 for H5Part by  + +doxygen 1.4.4
    + + diff --git a/doc/ReferencePages/structH5IO__getname__t-members.html b/doc/ReferencePages/structH5IO__getname__t-members.html new file mode 100644 index 0000000..e6035d1 --- /dev/null +++ b/doc/ReferencePages/structH5IO__getname__t-members.html @@ -0,0 +1,16 @@ + + +H5Part: Member List + + + + +

    H5IO_getname_t Member List

    This is the complete list of members for H5IO_getname_t, including all inherited members.

    + + + +
    countH5IO_getname_t
    indexH5IO_getname_t
    nameH5IO_getname_t


    Generated on Tue Jan 31 11:52:45 2006 for H5Part by  + +doxygen 1.4.4
    + + diff --git a/doc/ReferencePages/structH5IO__getname__t.html b/doc/ReferencePages/structH5IO__getname__t.html new file mode 100644 index 0000000..a99c8d4 --- /dev/null +++ b/doc/ReferencePages/structH5IO__getname__t.html @@ -0,0 +1,97 @@ + + +H5Part: H5IO_getname_t Struct Reference + + + + +

    H5IO_getname_t Struct Reference

    List of all members. + + + + + + + + +

    Public Attributes

    int index
    int count
    char * name
    +

    Detailed Description

    +H5IO_getname_t: Private +

    +


    Member Data Documentation

    +

    + + + + +
    + + + + +
    int H5IO_getname_t::count
    +
    + + + + + +
    +   + + +

    +

    +

    + + + + +
    + + + + +
    int H5IO_getname_t::index
    +
    + + + + + +
    +   + + +

    +

    +

    + + + + +
    + + + + +
    char* H5IO_getname_t::name
    +
    + + + + + +
    +   + + +

    +

    +


    The documentation for this struct was generated from the following file: +
    Generated on Tue Jan 31 11:52:45 2006 for H5Part by  + +doxygen 1.4.4
    + + diff --git a/doc/ReferencePages/structH5PartFile-members.html b/doc/ReferencePages/structH5PartFile-members.html new file mode 100644 index 0000000..9c7ff17 --- /dev/null +++ b/doc/ReferencePages/structH5PartFile-members.html @@ -0,0 +1,28 @@ + + +H5Part: Member List + + + + +

    H5PartFile Member List

    This is the complete list of members for H5PartFile, including all inherited members.

    + + + + + + + + + + + + + + + +
    access_propH5PartFile
    create_propH5PartFile
    diskshapeH5PartFile
    fileH5PartFile
    maxstepH5PartFile
    memshapeH5PartFile
    modeH5PartFile
    nparticlesH5PartFile
    propertiesH5PartFile
    shapeH5PartFile
    timegroupH5PartFile
    timestepH5PartFile
    viewendH5PartFile
    viewstartH5PartFile
    xfer_propH5PartFile


    Generated on Tue Jan 31 11:52:45 2006 for H5Part by  + +doxygen 1.4.4
    + + diff --git a/doc/ReferencePages/structH5PartFile.html b/doc/ReferencePages/structH5PartFile.html new file mode 100644 index 0000000..1b84ed1 --- /dev/null +++ b/doc/ReferencePages/structH5PartFile.html @@ -0,0 +1,399 @@ + + +H5Part: H5PartFile Struct Reference + + + + +

    H5PartFile Struct Reference

    #include <H5Part.h> +

    +List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    Public Attributes

    hid_t file
    int timestep
    hid_t timegroup
    hid_t properties
    hsize_t nparticles
    hid_t shape
    unsigned mode
    int maxstep
    hid_t xfer_prop
    hid_t create_prop
    hid_t access_prop
    hid_t diskshape
    hid_t memshape
    long long viewstart
    long long viewend
    +


    Detailed Description

    +/struct H5PartFile: This is an essentially opaque datastructure that acts as the filehandle for all practical purposes. It is created by H5PartOpenFile<xx>() and destroyed by H5PartCloseFile(). +

    +


    Member Data Documentation

    +

    + + + + +
    + + + + +
    hid_t H5PartFile::access_prop
    +
    + + + + + +
    +   + + +

    +

    +

    + + + + +
    + + + + +
    hid_t H5PartFile::create_prop
    +
    + + + + + +
    +   + + +

    +

    +

    + + + + +
    + + + + +
    hid_t H5PartFile::diskshape
    +
    + + + + + +
    +   + + +

    +

    +

    + + + + +
    + + + + +
    hid_t H5PartFile::file
    +
    + + + + + +
    +   + + +

    +

    +

    + + + + +
    + + + + +
    int H5PartFile::maxstep
    +
    + + + + + +
    +   + + +

    +

    +

    + + + + +
    + + + + +
    hid_t H5PartFile::memshape
    +
    + + + + + +
    +   + + +

    +

    +

    + + + + +
    + + + + +
    unsigned H5PartFile::mode
    +
    + + + + + +
    +   + + +

    +

    +

    + + + + +
    + + + + +
    hsize_t H5PartFile::nparticles
    +
    + + + + + +
    +   + + +

    +

    +

    + + + + +
    + + + + +
    hid_t H5PartFile::properties
    +
    + + + + + +
    +   + + +

    +

    +

    + + + + +
    + + + + +
    hid_t H5PartFile::shape
    +
    + + + + + +
    +   + + +

    +

    +

    + + + + +
    + + + + +
    hid_t H5PartFile::timegroup
    +
    + + + + + +
    +   + + +

    +

    +

    + + + + +
    + + + + +
    int H5PartFile::timestep
    +
    + + + + + +
    +   + + +

    +

    +

    + + + + +
    + + + + +
    long long H5PartFile::viewend
    +
    + + + + + +
    +   + + +

    +

    +

    + + + + +
    + + + + +
    long long H5PartFile::viewstart
    +
    + + + + + +
    +   + + +

    +

    +

    + + + + +
    + + + + +
    hid_t H5PartFile::xfer_prop
    +
    + + + + + +
    +   + + +

    +

    +


    The documentation for this struct was generated from the following file: +
    Generated on Tue Jan 31 11:52:45 2006 for H5Part by  + +doxygen 1.4.4
    + + diff --git a/doc/UsingC.html b/doc/UsingC.html new file mode 100644 index 0000000..8380696 --- /dev/null +++ b/doc/UsingC.html @@ -0,0 +1,606 @@ + + + +H5Part, the C/C++ API + + + + + + +
    + +

    The C/C++ Application Programming Interface (API)

    + +
    +Reference Manual (Doxygen) +
    +
    +

    Opening Datafiles

    +

    +Just like the familiar FILE* type for C stdio operations, all +H5Part file operations require a file handle. The type of this handle is +(H5PartFile*). +
    +H5PartOpenFile() is +used to open a serial file and +HDFPartOpenFileParallel() is used to open a file for +Parallel I/O (in an MPI program). +After you open the file handle you can use the same set of +subroutines for operations on the file regardless of whether the +file is a parallel or serial I/O file. +The libraries manage all of this internally.

    +

    +C Prototypes
    +

    +Serial File
    +H5PartFile *H5PartOpenFile(const char *filename, unsigned +accessmode);
    +Parallel File
    +H5PartFile *H5PartOpenFileParallel(char *filename,int +accessmode,MPI_Comm communicator);
    +

    filename:
    The name of the IEEEIO data file to +open. The typical extension for these files is .h5
    +
    accessmode:
    The accessmode for the file. This is +one of 2 different access modes
    +H5PART_READ : Opens a file in read-only mode.
    +H5PART_WRITE : Opens a file in write-only mode. +If the +file does not exist, it will be created. If it does +exist, it will be +truncated. +
    communicator:
    +
    This argument is only available if the program has been +compiled with the PARALLEL_IO C-preprocessor flag +defined. It is used to pass in the communicator that will be +used for all collective I/O operations that target the same +file on disk.
    +
    Returns:
    A new filehandle with an open file or NULL if error.
    + +

    +
    Example Use
    +
    +#include < H5Part.h >
    +. . . code . . .
    +    /* Open an HDF5 file for writing */
    +    H5PartFile *writer = H5PartOpenFile("datafileout.h5",H5PART_WRITE);
    +    /* Open an HDF5 file for Parallel I/O */
    +    H5PartFile *writer = H5PartOpenFileParallel("datafileout.h5",H5PART_WRITE,MPI_COMM_WORLD);
    +    /* open HDF5 file for reading */ 
    +    H5PartFile *reader = H5PartOpenFile("datafilein.h5",H5PART_READ); 
    +    /* open HDF5 file for parallel reads */ 
    +    H5PartFile *reader = H5PartOpenFileParallel("datafilein.h5",H5PART_READ,MPI_COMM_WORLD);
    +. . . more code . . .
    +

    + + +
    + + +

    Closing Datafiles

    +

    +To close the file, you simply use H5PartCloseFile() for both +parallel and serial files. You must call H5PartCloseFile() on any +file descriptor created by H5PartFileOpen() regardless of +whether the file turns out to be valid or not. +

    +C Prototypes
    +

    +void H5PartCloseFile(H5PartFile *fileID); +

    +
    fileID:
    A FileHandle opened by +H5PartOpenFile() or H5PartOpenFileParallel().
    +
    Returns:
    void.
    +
    +

    +
    Example Use
    +
    +#include < H5Part.h >
    +H5PartFile *file;
    +... code ...
    +file=H5PartOpenFileParallel("parttest.h5",H5PART_WRITE,comm);
    +... more code ...
    +H5PartCloseFile(file);
    +
    +
    +
    + + +

    Validating Datafiles

    +

    +You can test if the file was opened successfully using the +H5PartFileIsValid() function. It returns 1 if valid, 0 if invalid.

    +

    +C Prototype
    +

    +int H5PartFileIsValid(H5PartFile *fileID); +

    +
    fileID:
    A FileHandle opened by +H5PartOpenFile() or H5PartOpenFileParallel().
    +
    Returns:
    1 if valid, 0 if invalid.
    +
    +

    +
    Example Use
    +

    +Here is an example of validating a newly opened file. Even if +the file is invalid, you must use H5PartCloseFile() to reclaim +the file handle. +

    +
    +#include < H5Part.h >
    +. . . code . . .
    +    H5PartFile *fileID = H5PartOpenFile("datafileout.h5",H5PART_WRITE);
    +    if(!H5PartFileIsValid(fileID)){ 
    +       puts("The file you specified does not exist or is not in a
    +readable format");
    +       H5PartClose(fileID); /* must reclaim fileID even if file is invalid */
    +       . . . do other cleanup . . .
    +    }
    +. . . more code . . .
    +

    + +
    + + +

    Setting the Timestep

    +
    +

    +When writing data to a file the current time step must be set (even if there is only one). In a file with N time steps, the steps are numbered from 0 to N-1. +

    +C Prototype
    +

    +void H5PartSetStep((H5PartFile *fileID,int step); +

    +
    fileID:
    A FileHandle opened by +H5PartOpenFile() or H5PartOpenFileParallel().
    +
    step:
    An integer time step. +
    +
    Returns:
    void.
    +
    +
    Example Use
    +

    +
    +#include < H5Part.h >
    +H5PartFile *fileID;
    +int timeStep;
    +....
    +H5PartSetStep(fileID,timeStep);
    +....
    +
    + +
    + + + + +

    Setting the Number of Particles

    +

    +H5PartSetNumParticles: This function's sole purpose is to +prevent needless creation of new HDF5 DataSpace handles if +the number of particles is invariant throughout the sim. +That's its only reason for existence. After you call this +subroutine, all subsequent operations will assume this +number of particles will be written. +

    +C Prototype
    +

    +void H5PartSetNumParticles(H5PartFile *fileID,long long nparticles); + +

    +
    fileID:
    A FileHandle opened by +H5PartOpenFile() or H5PartOpenFileParallel().
    +
    nparticles:
    A long long integer specifying the number of particles. +
    +
    Returns:
    void.
    +
    +

    +
    Example Use
    +
    +#include < H5Part.h >
    +H5PartFile *fileID;
    +long long nparticles;
    +....
    +H5PartSetStep(fileID,nparticles);
    +....
    +
    + +
    + + +

    Writing Datasets

    +
    +

    +After setting the number of particles with +H5PartSetNumParticles() +and the current timestep using +H5PartSetStep(), you can start +writing datasets into the file. Each dataset has a name +associated with it (chosen by the user) in order to facilitate +later retrieval. The writing routines also implicitly store +the datatype of the array so that the array can be +reconstructed properly on other systems with incompatible type +representations. The data is committed to disk before the +routine returns. All data that is written after setting the +timestep is associated with that timestep. While the number of +particles can change for each timestep, you cannot change the +number of particles in the middle of a given timestep. +

    +C Prototypes
    +

    +int H5PartWriteDataFloat64(H5PartFile *fileID,char + *name,double *array);
    +int H5PartWriteDataInt64(H5PartFile *fileID,char + *name,double *array); +

    +
    fileID:
    A FileHandle opened by +H5PartOpenFile() or +H5PartOpenFileParallel().
    +
    name:
    A null-terminated string for the +name of the array. When retrieving datasets from disk, +you ask for them by name. There are no restrictions on +naming of arrays, but it is useful to arrive at some common +naming convention when sharing data with other groups.
    +
    array:
    A buffer containing an array of +particle data to commit to disk. The datatype for +elements in the buffer is implicit in the name of the +subroutine call.
    +
    Returns:
    1 on success, 0 on failure.
    +
    +

    +
    Example Use
    +
    +#include < H5Part.h >
    +H5PartFile *fileID;
    +double *x,*y,*z;
    +int timeStep;
    +long long nparticles;
    +
    +...
    +
    +H5PartSetStep(fileID,timeStep); /* must set the current timestep in file */
    +H5PartSetNumParticles(fileID,nparticles); /* then set number of particles to store */
    +
    +/* now write different tuples of data into this timestep of the file */
    +H5PartWriteDataFloat64(fileID,"x",x);
    +H5PartWriteDataFloat64(fileID,"y",y);
    +H5PartWriteDataFloat64(file,"z",z);
    +..
    +
    + +
    + +

    Reading the Number of Time Steps

    +
    +

    +This reads the number of datasteps that are + currently stored in the datafile. + It works for both reading and writing of files, but is probably + only typically used when you are reading. + +

    +C Prototype
    +

    +int H5PartGetNumSteps (H5PartFile *fileID);
    +

    +
    fileID:
    A FileHandle opened by H5PartOpenFile() or +H5PartOpenFileParallel().
    +
    Returns:
    The number of timesteps currently stored in the file. +
    +

    +
    + + +

    Reading the Number of Particles

    +
    +

    +This reads the number of particles that are +currently stored in the current time step. +It will arbitrarily select a timestep if you haven't +already set the timestep with H5PartSetStep(). + +

    +C Prototype
    +

    +long long H5PartGetNumParticles (H5PartFile *fileID);
    +

    +
    fileID:
    A FileHandle opened by H5PartOpenFile() or +H5PartOpenFileParallel().
    +
    Returns:
    The number of particles in current timestep. +
    +

    +
    Example Use
    +
    +#include < H5Part.h >
    +H5PartFile *fileID;
    +int timeStep;
    +long long nparticles;
    +
    +H5PartSetStep(fileID,0);
    +nparticles=H5PartGetNumParticles(fileID);
    +...
    +
    + +
    + + + + +

    Reading Datasets

    +
    +

    +After setting the time step and getting the number of particles to allocate the data arrays, you can start to read the data. +

    +C Prototypes
    +

    +int H5PartReadDataFloat64(H5PartFile *fileID,char *name,double *array);
    +int H5PartReadDataInt64(H5PartFile *fileID,char *name,long long *array);
    + +

    +
    fileID:
    A FileHandle opened by +H5PartOpenFile() or +H5PartOpenFileParallel().
    +
    name:
    A null-terminated string for the +name of the array. When retrieving datasets from disk, +you ask for them by name. There are no restrictions on +naming of arrays, but it is useful to arrive at some common +naming convention when sharing data with other groups.
    +
    array:
    A buffer to which the particle data will be read.i +The datatype for +elements in the buffer is implicit in the name of the +subroutine call.
    +
    Returns:
    1 on success, 0 on failure.
    +
    +

    +
    Example Use
    +
    +#include < H5Part.h >
    +H5PartFile *fileID;
    +double *x,*y,*z;
    +int timeStep;
    +long long nparticles;
    +
    +H5PartSetStep(fileID,0);
    +nparticles=H5PartGetNumParticles(fileID);
    +... 
    +
    +H5PartReadDataFloat64(file,"x",x);
    +H5PartReadDataFloat64(file,"y",y);
    +H5PartReadDataFloat64(file,"z",z);
    +...
    +
    +
    +

    Reading the Number and Names of Datasets

    +

    +H5Part provides funtions to find out how many datasets are stored at a particular timestep +and what their names are if you don't know what they are a-priori. +

    +C Prototypes
    +

    +int H5PartGetNumDatasets(H5PartFile *fileID);
    +

    +
    fileID:
    A FileHandle opened by +H5PartOpenFile() or +H5PartOpenFileParallel().
    +
    Returns:
    The number of datasets.
    +
    +

    +

    +int H5PartGetDatasetName(H5PartFile *fileID,int index,char *name,int maxlen);
    +

    +
    fileID:
    A FileHandle opened by +H5PartOpenFile() or +H5PartOpenFileParallel().
    +
    index:
    integer specifying the index of the dataset. If the number of datasets is +nds, the range of index is 0 to nds-1.
    +
    name:
    A null-terminated string for the name of the dataset.
    +
    maxlen:
    An integer specifying the maximum length of the name array.
    +
    Returns:
    1 on success, 0 on failure.
    +
    +

    +
    Example Use
    +
    +#include < H5Part.h >
    +H5PartFile *fileID;
    +char name[64];
    +int index, nds;
    +
    +...
    +nds=H5PartGetNumDatasets(fileID);
    +  for(index=0;index< nds;index++){
    +    H5PartGetDatasetName(fileID,index,name,64);
    +    printf("\tDataset[%u] name=[%s]\n", index,name);
    +  }
    +...
    +
    + +
    + + +

    Attributes Interface

    +

    +In the current H5Part implemtation there are two types of attributes: file attributes which are bound to the file + and step attributes which are bound to the current timestep. You + must set the timestep explicitly before writing the attributes (just + as you must do when you write a new dataset. Currently there are no + attributes that are bound to a particular data array, but this could + easily be done if required. +

    +

    H5PartGetNumStepAttribs and H5PartGetNumFileAttribs return the number of attributes bound to a step and to a file respectively. H5PartGetStepAttribInfo and H5PartGetFileAttribInfo return the name, type and number of elements of type "type" bound to a step and a file respectively. +

    +C Prototypes:
    +int H5PartGetNumStepAttribs(H5PartFile *fileID); +
    +
    +
    fileID:
    A FileHandle opened by +H5PartOpenFile() or +H5PartOpenFileParallel().
    +
    Returns
    The number of step attributes for the current step.
    +
    +int H5PartGetNumFileAttribs(H5PartFile *fileID); +
    +
    +
    fileID:
    A FileHandle opened by +H5PartOpenFile() or +H5PartOpenFileParallel().
    +
    Returns
    The number of file attributes.
    +
    +void H5PartGetStepAttribInfo(H5PartFile *fileID,int idx, char *name,size_t maxnamelen,hid_t *type,int *nelem); +
    +
    +
    fileID:
    A FileHandle opened by +H5PartOpenFile() or +H5PartOpenFileParallel().
    +
    idx:
    Index of the attribute.
    +
    name:
    A null-terminated string with the name of the attribute.
    +
    maxnamelen
    the length of the name of the attribute.
    +
    type:
    One of the following: H5T_NATIVE_DOUBLE H5T_NATIVE_INT64 H5T_NATIVE_CHAR.
    +
    nelem:
    Number of elements of type "type".
    +
    Returns
    void.
    +
    + +void H5PartGetFileAttribInfo(H5PartFile *fileID,int idx, char *name,size_t maxnamelen, hid_t *type,int *nelem); +
    + +
    +
    fileID:
    A FileHandle opened by +H5PartOpenFile() or +H5PartOpenFileParallel().
    +
    idx:
    Index of the attribute.
    +
    name:
    A null-terminated string with the name of the attribute.
    +
    maxnamelen
    the length of the name of the attribute.
    +
    type:
    One of the following: H5T_NATIVE_DOUBLE H5T_NATIVE_INT64 H5T_NATIVE_CHAR.
    +
    nelem:
    Number of elements of type "type".
    +
    Returns
    void.
    +
    + + + +

    Writing Attributes

    +
    +

    +An attribute can be bound to the file or after setting the time step to this time step. +

    + +C Prototypes: Generic Attributes
    +

    +int H5PartWriteFileAttrib(H5PartFile *fileID,char *name, hid_t type,void *value,int nelem);
    +int H5PartWriteStepAttrib(H5PartFile *fileID,char *name, hid_t type,void *value,int nelem);
    +

    +
    fileID:
    A FileHandle opened by +H5PartOpenFile() or +H5PartOpenFileParallel().
    +
    name:
    A null-terminated string for the +name of the array. When retrieving datasets from disk, +you ask for them by name. There are no restrictions on +naming of arrays, but it is useful to arrive at some common +naming convention when sharing data with other groups.
    +
    type: One of H5T_NATIVE_DOUBLE, H5T_NATIVE_INT64, H5T_NATIVE_CHAR. +
    value: value of the attribute. +
    nelem: number of elements of type "type". +
    Returns:
    1 on success, 0 on failure.
    +
    +

    +
    Example Use
    +
    +#include < H5Part.h >
    +H5PartFile *fileID;
    +double actPos;
    +
    +...
    +H5PartWriteStepAttrib(file_m,"Spos",H5T_NATIVE_DOUBLE,&actPos,1);
    +...
    +
    + + +C Prototypes: String Attributes
    +

    +int H5PartWriteStepAttribString(H5PartFile *fileID,char *name, char *attrib);
    +int H5PartWriteFileAttribString(H5PartFile *fileID,char *name, char *attrib);
    +

    +
    fileID:
    A FileHandle opened by +H5PartOpenFile() or +H5PartOpenFileParallel().
    +
    name:
    A null-terminated string for the +name of the array. When retrieving datasets from disk, +you ask for them by name. There are no restrictions on +naming of arrays, but it is useful to arrive at some common +naming convention when sharing data with other groups.
    +
    attrib: the attribute character string. +
    Returns:
    1 on success, 0 on failure.
    +
    +

    +
    Example Use
    +
    +#include < H5Part.h >
    +H5PartFile *fileID;
    +char *newattrib;
    +char *newname;
    +
    +...
    +H5PartWriteFileAttribString(fileID, newname,newattrib);
    +...
    +
    +
    + + +

    Reading Attributes

    +
    +

    +

    +As with the writing of attributes, there are two basic reading interfaces one that reads file bound attributes and one that reads +step bound attributes. If the step is not set the current one will be used. +

    +

    +C Prototypes
    +

    +void H5PartReadStepAttrib(H5PartFile *fileID,char *name,void *value);
    +void H5PartReadAttrib(H5PartFile *fileID,char *name,void *value);
    +int H5PartReadFileAttrib(H5PartFile *fileID,char *name,void *value);
    +

    +
    fileID:
    A FileHandle opened by +H5PartOpenFile() or +H5PartOpenFileParallel().
    +
    name:
    A null-terminated string for the +name of the array. When retrieving datasets from disk, +you ask for them by name. There are no restrictions on +naming of arrays, but it is useful to arrive at some common +naming convention when sharing data with other groups.
    +
    value: value of the attribute. +
    Returns:
    1 on success, 0 on failure.
    +
    +

    +
    +NOTE: H5PartReadAttrib has been superseeded by H5PartSetStep. +
    +
    Example Use
    +
    +#include < H5Part.h >
    +H5PartFile *fileID;
    +int step;
    +char name[MAXNAME];
    +
    +...
    +
    +H5PartSetStep(fileID, step);
    +if (H5PartReadStepAttrib(file, "filename", &name[0]) == 1){
    +	printf("Read step from file: %s\n", name);
    +}
    +
    +...
    +
    + +
    + + diff --git a/doc/UsingF.html b/doc/UsingF.html new file mode 100755 index 0000000..40d0b94 --- /dev/null +++ b/doc/UsingF.html @@ -0,0 +1,504 @@ + + + +H5part, the Fortran API + + + + + + +
    + + +

    The FORTRAN Application Programming Interface (API)

    +

    +These references contain the information on how to access the H5Part API using FORTRAN bindings. All pointers are cast to haddr_t (a unint64_t) within the C/C++ code. In fortran, these pointers (handles) are carried as INTEGER*8 +

    + +
    +

    Opening Datafiles

    +

    +Like the familiar OPEN in FORTRAN files can be opened to read and write. Different functions are used for the serial and parallel case. +

    +FORTRAN Prototypes
    +

    +Serial File
    +INTEGER*8 h5pt_openr
    +FUNCTION h5pt_openw(file)
    +in CHARACTER file(*) : the filename to open for writing

    +returns INTEGER*8 : and open filehandle for serial reads
    +
    +INTEGER*8 h5pt_openw
    +FUNCTION h5pt_openw(file)
    +in CHARACTER file(*) : the filename to open for writing
    +returns INTEGER*8 : and open filehandle for serial writes

    +
    +Parallel File
    +INTEGER*8 h5pt_openr_par
    +FUNCTION h5pt_openr_par(file,mpi_communicator)
    +in CHARACTER file(*) : the filename to open for writing
    +in INTEGER mpi_communicator : the MPI_Communicator used by the program
    + returns INTEGER*8 : and open filehandle for parallel reads

    +
    +INTEGER*8 h5pt_openw_par
    +FUNCTION h5pt_openw_par(file,mpi_communicator)
    + in CHARACTER file(*) : the filename to open for writing
    + in INTEGER mpi_communicator : the MPI_Communicator used by the program
    + returns INTEGER*8 : and open filehandle for parallel reads

    +

    +

    +Example Use
    +

    +include 'H5Part.inc'
    +INTEGER*8 file
    +...
    +file = h5pt_openw("testfilef.h5")
    +...
    +
    +

    +
    +

    Closing Datafiles

    +

    +To close the file, you simply use h5pt_close() for both parallel and serial files. You must call h5pt_close() on any file descriptor created by h5pt_open*() regardless of whether the file turns out to be valid or not.

    +FORTRAN Prototype
    +EXTERNAL h5pt_close
    +SUBROUTINE h5pt_close(filehandle)
    + in INTEGER*8 filehandle : close this open filehandle

    +Example Use
    +
    +include 'H5Part.inc'
    +INTEGER*8 file
    +...
    +call h5pt_close(file)
    +...
    +
    +

    +
    +

    Validating Datafiles

    +

    +You can test if the file was opened successfully using the +h5p_isvalid() function. It returns 1 if valid, 0 if invalid. +

    +FORTRAN Prototype
    +INTEGER h5pt_isvalid
    +FUNCTION h5pt_isvalid(filehandle)
    + in INTEGER*8 filehandle: an open filehandle
    + returns INTEGER : 1 if the file is valid, 0 if it is not

    +Example Use
    +
    +include 'H5Part.inc'
    +INTEGER*8 file
    +INTEGER status 
    +...
    +status = h5pt_isvalid(file)
    +...
    +
    +

    +
    + +

    Setting the Timestep

    +
    +

    +When writing data to a file the current time step must be set (even if there is only one). In a file with N time steps, the steps are numbered from 0 to N-1. +

    +FORTRAN Prototype
    +EXTERNAL h5pt_setstep
    +SUBROUTINE h5pt_setstep(filehandle,step)
    + in INTEGER*8 filehandle : an open filehandle
    + in INTEGER step : Set the current timestep in the file to this +

    +Example Use
    +
    +include 'H5Part.inc'
    +INTEGER*8 file
    +INTEGER I
    +INTEGER nstep
    +...
    +do I=1,nstep
    +	call h5pt_setstep(file,I)
    +... more code ...
    +enddo
    +
    +

    +
    + + + +

    Setting the Number of Particles

    +

    +This function's sole purpose is to +prevent needless creation of new HDF5 DataSpace handles if +the number of particles is invariant throughout the sim. +That's its only reason for existence. After you call this +subroutine, all subsequent operations will assume this +number of particles will be written. +

    +FORTRAN Prototype
    +EXTERNAL h5pt_setnpoints
    +SUBROUTINE h5pt_setnpoints(filehandle,npoints)
    + in INTEGER*8 filehandle : an open filehandle
    + in INTEGER*8 npoints : The number of particles on *this* processor

    +Example Use
    +
    +include 'H5Part.inc'
    +INTEGER*8 file
    +INTEGER*8 npoints
    +
    +...
    +call h5pt_setnpoints(file,npoints)
    +...
    +
    + +
    + +

    Writing Datasets

    +
    +

    +After setting the number of particles with +h5pt_setnpoints() +and the current timestep using +h5pt_setstep(), you can start +writing datasets into the file. Each dataset has a name +associated with it (chosen by the user) in order to facilitate +later retrieval. The writing routines also implicitly store +the datatype of the array so that the array can be +reconstructed properly on other systems with incompatible type +representations. The data is committed to disk before the +routine returns. All data that is written after setting the +timestep is associated with that timestep. While the number of +particles can change for each timestep, you cannot change the +number of particles in the middle of a given timestep. +

    +FORTRAN Prototypes
    +

    +The two data types supported for the moment are REAL*8 and INTEGER*8 (float64 and int64). +

    +EXTERNAL h5pt_writedata_r8
    +SUBROUTINE h5pt_writedata_r8(filehandle,name,data)
    + in INTEGER*8 filehandle : an open filehandle
    + in CHARACTER name(*) : The name of the data we are writing eg. "X" or "Y" or "PX" etc...
    + in REAL*8 data(*) : The dataarray to write

    +
    +EXTERNAL h5pt_writedata_i8
    +SUBROUTINE h5pt_writedata_i8(filehandle,name,data)
    + in INTEGER*8 filehandle : an open filehandle
    + in CHARACTER name(*) : The name of the data we are writing eg. "X" or "Y" or "PX" etc...
    + in INTEGER*8 data(*) : The dataarray to write

    +Example Use
    +
    +include 'H5Part.inc'
    +INTEGER*8 file
    +INTEGER nstep
    +INTEGER I
    +REAL*8,ALLOCATABLE:: X(:)
    +
    +...
    +do I=1,nstep
    +	call h5pt_setstep(file,I)
    +	call h5pt_writedata_r8(file,"x",X)
    +enddo
    +...
    +
    +
    + +

    Reading the Number of Time Steps

    +
    +

    +This reads the number of datasteps that are + currently stored in the datafile. + It works for both reading and writing of files, but is probably + only typically used when you are reading. + +

    +FORTRAN Prototypes
    +INTEGER h5pt_getnsteps
    +FUNCTION h5pt_getnsteps(filehandle)
    + in INTEGER*8 filehandle : an open filehandle
    + returns INTEGER : number of timesteps stored in the file

    +Example Use
    +
    +include 'H5Part.inc'
    +INTEGER*8 file
    +INTEGER nstep
    +
    +file = h5pt_openr("testfilef.h5")
    +nstep = h5pt_getnsteps(file)
    +
    +
    + + +

    Reading the Number of Particles

    +
    +

    +This reads the number of particles that are currently stored in the current time step. It will arbitrarily select a timestep if you haven't already set the timestep with H5PartSetStep(). + +

    +FORTRAN Prototypes
    +INTEGER h5pt_getnpointss
    +FUNCTION h5pt_getnpoints(filehandle)
    + in INTEGER*8 filehandle : an open filehandle
    + returns INTEGER : number of particles in the current time step

    +Example Use
    +
    +include 'H5Part.inc'
    +INTEGER*8 file
    +INTEGER*8 npoints
    +INTEGET step;
    +
    +file = h5pt_openr("testfilef.h5")
    +call h5pt_setstep(file,0)
    +npoints = h5pt_getnpoints(file)
    +...
    +
    +
    + + + + + +

    Reading Datasets

    +
    +

    +After setting the time step and getting the number of particles to allocate the data arrays, you can start to read the data. +

    +FORTRAN Prototypes
    +INTEGER h5pt_readdata_r8
    +FUNCTION h5pt_readdata_r8(filehandle,name,data)
    + in INTEGER*8 filehandle : an open filehandle
    + in CHARACTER name(*) : The name of the data we are writing, eg. "X" or "Y" or "PX" etc...
    + out REAL*8 data(*) : The data array to read. The number of points to read is either the number within + the view setby h5pt_setview() or the default (the total number of particles in the file).
    + + + +Example Use
    +
    +include 'H5Part.inc'
    +INTEGER*8 file
    +INTEGER err
    +INTEGER*8,ALLOCATABLE:: ID(:)
    +
    +...
    +call h5pt_setstep(file,step)
    +err=h5pt_readdata_i8(file,"id",ID)
    +...
    +
    +
    +

    Reading the Number and Names of Datasets

    +

    +H5Part provides funtions to find out how many datasets are stored at a particular timestep +and what their names are if you don't know what they are a-priori. +

    +FORTRAN Prototypes
    +INTEGER h5pt_getndatasets
    +FUNCTION h5pt_getndatasets(filehandle)
    + in INTEGER*8 filehandle : an open filehandle
    + returns INTEGER*8 : number of datasets stored per timestep

    +Example Use
    +
    +include 'H5Part.inc'
    +INTEGER*8 file
    +INTEGER ndata
    +
    +...
    +call h5pt_setstep(file,1)
    +ndata = h5pt_getndatasets(file)
    +...
    +
    +
    +FORTRAN Prototypes
    +INTEGER h5pt_getdatasetname
    +FUNCTION h5pt_getdatasetname(filehandle,index,name)
    + in INTEGER*8 filehandle : an open filehandle
    + in INTEGER index : Index for a given dataset name
    + out CHARACTER name(*) returns the name of the dataset at that index
    + returns INTEGER, 1 on success 0 on failure.

    +Example Use
    +
    +include 'H5Part.inc'
    +INTEGER*8 file
    +INTEGER err
    +CHARACTER,ALLOCATABLE:: name(:)
    +
    +...
    +err=h5pt_getdatasetname(file, 1, name)
    +...
    +
    +
    + + +

    Attributes Interface

    +

    +In the current H5Part implemtation there are two types of attributes: file attributes which are bound to the file + and step attributes which are bound to the current timestep. You + must set the timestep explicitly before writing the attributes (just + as you must do when you write a new dataset. Currently there are no + attributes that are bound to a particular data array, but this could + easily be done if required. +

    +FORTRAN Prototypes
    +INTEGER h5pt_getnstepattribs
    +FUNCTION h5pt_getnstepattribs(filehandle)
    + in INTEGER*8 filehandle : an open filehandle
    + returns INTEGER : number of attributes bound to this particular step
    +
    +
    +INTEGER h5pt_getnfileattribs
    +FUNCTION h5pt_getnfileattribs(filehandle)
    + in INTEGER*8 filehandle : an open filehandle
    + returns INTEGER : number of attributes bound to the file
    +
    +
    +INTEGER h5pt_getstepattribinfo
    +FUNCTION h5pt_getstepattribinfo(filehandle,idx,attribname,nelem)
    + in INTEGER*8 filehandle : an open filehandle
    + in INTEGER idx : index of the attribute being queried
    + out CHARACTER name(*) : The name of the attribute
    + out INTEGER nelem : Number of elements in the attrib array
    + returns INTEGER, 1 on success 0 on failure.
    +
    +
    +INTEGER h5pt_getfileattribinfo
    +FUNCTION h5pt_getfileattribinfo(filehandle,idx,attribname,nelem)
    + in INTEGER*8 filehandle : an open filehandle
    + in INTEGER idx : index of the attribute being queried
    + out CHARACTER name(*) : The name of the attribute
    + out INTEGER nelem : Number of elements in the attrib array
    + returns INTEGER, 1 on success 0 on failure. +
    +
    + + + + + +
    + +

    Writing Attributes

    +
    +

    +An attribute can be bound to the file or after setting the time step to this time step. +

    +FORTRAN Prototypes
    +INTEGER h5pt_writefileattrib_r8
    + +FUNCTION h5pt_writefileattrib_r8(filehandle,name,attrib,nelem)
    + in INTEGER*8 filehandle : an open filehandle
    + in CHARACTER name(*) : The name of the attribute
    + in REAL*8 attrib(*) : The array of data to write into the attribute
    + in INTEGER nelem : Number of elements in the attrib array
    + returns INTEGER, 1 on success 0 on failure
    +
    +
    +INTEGER h5pt_writefileattrib_i8
    +FUNCTION h5pt_writefileattrib_i8(filehandle,name,attrib,nelem)
    + in INTEGER*8 filehandle : The filehandle
    + in CHARACTER name(*) : The name of the attribute
    + in INTEGER*8 attrib(*) : The array of data to write into the attribute
    + in INTEGER nelem : Number of elements in the attrib array
    + returns INTEGER, 1 on success 0 on failure
    +
    +
    +INTEGER h5pt_writefileattrib_string
    +FUNCTION h5pt_writefileattrib_string(filehandle,name,string)
    + in INTEGER*8 filehandle : an open filehandle
    + in CHARACTER name(*) : The name of the attribute
    + in CHARACTER*8 attrib(*) : The array of data to write into the attribute
    + returns INTEGER, 1 on success 0 on failure
    +
    +
    +INTEGER h5pt_writestepattrib_r8
    +FUNCTION h5pt_writestepattrib_r8(filehandle,name,attrib,nelem)
    + in INTEGER*8 filehandle : an open filehandle
    + in CHARACTER name(*) : The name of the attribute
    + in REAL*8 attrib(*) : The array of data to write into the attribute
    + in INTEGER nelem : Number of elements in the attrib array + returns INTEGER, 1 on success 0 on failure
    +
    +
    +INTEGER h5pt_writestepattrib_i8
    +FUNCTION h5pt_writestepattrib_i8(filehandle,name,attrib,nelem)
    + in INTEGER*8 filehandle : an open filehandle
    + in CHARACTER name(*) : The name of the attribute
    + in INTEGER*8 attrib(*) : The array of data to write into the attribute
    + in INTEGER nelem : Number of elements in the attrib array
    + returns INTEGER, 1 on success 0 on failure
    +
    +
    +INTEGER h5pt_writestepattrib_string
    +FUNCTION h5pt_writestepattrib_string(filehandle,name,string)
    + in INTEGER*8 filehandle : an open filehandle
    + in CHARACTER name(*) : The name of the attribute
    + in CHARACTER*8 attrib(*) : The array of data to write into the attribute
    + returns INTEGER, 1 on success 0 on failure
    +
    + +Example Use
    +
    +include 'H5Part.inc'
    +INTEGER*8 file
    +REAL*8 REALTIME
    +INTEGER err
    +
    +...
    +err=h5pt_writefileattrib_string(file,"Annotation","Testing 1 2 3")
    +err=h5pt_writestepattrib_r8(file,"RealTime",REALTIME,1)
    +...
    +
    +
    + +
    + +

    Reading Attributes

    +
    +

    +As with the writing of attributes, there are two basic reading interfaces one that reads file bound attributes and one that reads +step bound attributes. If the step is not set the current one will be used. +

    +FORTRAN Prototypes
    + +INTEGER h5pt_readstepattrib
    +FUNCTION h5pt_readstepattrib(filehandle,name,data)
    + in INTEGER*8 filehandle : an open filehandle
    + in CHARACTER attributename(*) : name of the attribute to read
    + out data(*) : the attribute data will be read into this array
    + returns INTEGER, 1 on success 0 on failure
    +
    +
    +INTEGER h5pt_readfileattrib
    +FUNCTION h5pt_readfileattrib(filehandle,name,data)
    + in INTEGER*8 filehandle an open filehandle
    + in CHARACTER attributename(*) : name of the attribute to read
    + out data(*) : the attribute data will be read into this array
    + returns INTEGER, 1 on success 0 on failure
    +
    + +Example Use
    +
    +include 'H5Part.inc'
    +INTEGER*8 file
    +REAL*8 REALTIME
    +
    +...
    +call h5pt_setstep(file,0)
    +err=h5pt_readstepattrib(file,"RealTime",data)
    +...
    +
    + + +
    + + diff --git a/doc/collision_6.png b/doc/collision_6.png new file mode 100755 index 0000000..84b2636 Binary files /dev/null and b/doc/collision_6.png differ diff --git a/doc/collision_6.s.png b/doc/collision_6.s.png new file mode 100755 index 0000000..62dd39b Binary files /dev/null and b/doc/collision_6.s.png differ diff --git a/doc/h5part.html b/doc/h5part.html new file mode 100644 index 0000000..aff0704 --- /dev/null +++ b/doc/h5part.html @@ -0,0 +1,121 @@ + + + +H5Part: a Portable High Performance Parallel Data Interface to HDF5 + + + + + +
    +

    H5Part: a Portable High Performance Parallel Data Interface to HDF5

    +

    THESE PAGES ARE UNDER CONSTRUCTION, July 2006

    +

    Motivation

    +

    + + + + + + +
    + +
    +Beam-beam collision simulation. +
    +

    +

    +Particle based simulations of accelerator beam-lines, especially in +six dimensional phase space, generate vast amounts of data. Even +though a subset of statistical information regarding phase space +or analysis needs to be preserved, reading and writing such +enormous restart files on massively parallel supercomputing +systems remains challenging.

    +

    + +

    +H5Part is a very simple data storage schema and provides an +API that simplifies the reading/writing of the data to the HDF5 +file format. An important foundation for a stable visualization and data +analysis environment is a stable and portable file storage format and +its associated APIs. The presence of a "common file storage format," +including associated APIs, will help foster a fundamental level of +interoperability across the project's software infrastructure. It will +also help ensure that key data analysis capabilities are present +during the earliest phases of the software development effort. +

    +

    +H5Part is built on top of the HDF5 (Hierarchical Data Format). +HDF5 offers a self-describing machine-independent +binary file format that supports scalable parallel I/O +performance for MPI codes on a variety of supercomputing +systems, and works equally well on laptop computers. The API is +available for C, C++, and Fortran codes. The H5Part file format and APIs +enable disparate research groups with different simulation +implementations to transparently share datasets and data +analysis tools. For instance, the common file format will enable +groups that depend on completely different simulation +implementations to share data analysis tools. +

    +

    H5Part file organization and API

    +

    +The proposed file storage format uses HDF5 for the lowlevel +file storage and a simple API to provide a high-level +interface to that file format. A programmer can either use +the H5Part API to access the data files or write directly to +the file format using some simple conventions for organizing +and naming the objects stored in the file. +

    +

    +In order to store Particle Data in the HDF5 file format, +we have formalized the hierarchical arrangement of the +datasets and naming conventions for the groups and associated +datasets. The sample H5Part API formally encodes +these conventions in order to provide a simple and uniform +way to access these files from C, C++, and Fortran codes. +The API makes it easier to write very portable data adaptors +for visualization tools in order to expand the number of +tools available to access the data. Even so, anyone can use +the HDF5 h5ls utility to examine the organization of the +H5Part files and even write their own HDF5-based interface +for reading and writing the file format. The standards +offered by the sample API are completely independent of +the standard for organizing data within the file.The file +format supports the storage of multiple timesteps +of datasets that contain multiple fields. +

    + + +

    Downloading and Installing H5Part

    + +

    Bindings

    + + +

    H5Part Visualization Tools

    + +
    + diff --git a/doc/hdf5.pdf b/doc/hdf5.pdf new file mode 100644 index 0000000..29318d1 Binary files /dev/null and b/doc/hdf5.pdf differ diff --git a/doc/layout.png b/doc/layout.png new file mode 100644 index 0000000..69d133a Binary files /dev/null and b/doc/layout.png differ diff --git a/install-sh b/install-sh new file mode 100755 index 0000000..1a83534 --- /dev/null +++ b/install-sh @@ -0,0 +1,323 @@ +#!/bin/sh +# install - install a program, script, or datafile + +scriptversion=2005-02-02.21 + +# This originates from X11R5 (mit/util/scripts/install.sh), which was +# later released in X11R6 (xc/config/util/install.sh) with the +# following copyright and license. +# +# Copyright (C) 1994 X Consortium +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to +# deal in the Software without restriction, including without limitation the +# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +# sell copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- +# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +# +# Except as contained in this notice, the name of the X Consortium shall not +# be used in advertising or otherwise to promote the sale, use or other deal- +# ings in this Software without prior written authorization from the X Consor- +# tium. +# +# +# FSF changes to this file are in the public domain. +# +# Calling this script install-sh is preferred over install.sh, to prevent +# `make' implicit rules from creating a file called install from it +# when there is no Makefile. +# +# This script is compatible with the BSD install script, but was written +# from scratch. It can only install one file at a time, a restriction +# shared with many OS's install programs. + +# set DOITPROG to echo to test this script + +# Don't use :- since 4.3BSD and earlier shells don't like it. +doit="${DOITPROG-}" + +# put in absolute paths if you don't have them in your path; or use env. vars. + +mvprog="${MVPROG-mv}" +cpprog="${CPPROG-cp}" +chmodprog="${CHMODPROG-chmod}" +chownprog="${CHOWNPROG-chown}" +chgrpprog="${CHGRPPROG-chgrp}" +stripprog="${STRIPPROG-strip}" +rmprog="${RMPROG-rm}" +mkdirprog="${MKDIRPROG-mkdir}" + +chmodcmd="$chmodprog 0755" +chowncmd= +chgrpcmd= +stripcmd= +rmcmd="$rmprog -f" +mvcmd="$mvprog" +src= +dst= +dir_arg= +dstarg= +no_target_directory= + +usage="Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE + or: $0 [OPTION]... SRCFILES... DIRECTORY + or: $0 [OPTION]... -t DIRECTORY SRCFILES... + or: $0 [OPTION]... -d DIRECTORIES... + +In the 1st form, copy SRCFILE to DSTFILE. +In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. +In the 4th, create DIRECTORIES. + +Options: +-c (ignored) +-d create directories instead of installing files. +-g GROUP $chgrpprog installed files to GROUP. +-m MODE $chmodprog installed files to MODE. +-o USER $chownprog installed files to USER. +-s $stripprog installed files. +-t DIRECTORY install into DIRECTORY. +-T report an error if DSTFILE is a directory. +--help display this help and exit. +--version display version info and exit. + +Environment variables override the default commands: + CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG +" + +while test -n "$1"; do + case $1 in + -c) shift + continue;; + + -d) dir_arg=true + shift + continue;; + + -g) chgrpcmd="$chgrpprog $2" + shift + shift + continue;; + + --help) echo "$usage"; exit $?;; + + -m) chmodcmd="$chmodprog $2" + shift + shift + continue;; + + -o) chowncmd="$chownprog $2" + shift + shift + continue;; + + -s) stripcmd=$stripprog + shift + continue;; + + -t) dstarg=$2 + shift + shift + continue;; + + -T) no_target_directory=true + shift + continue;; + + --version) echo "$0 $scriptversion"; exit $?;; + + *) # When -d is used, all remaining arguments are directories to create. + # When -t is used, the destination is already specified. + test -n "$dir_arg$dstarg" && break + # Otherwise, the last argument is the destination. Remove it from $@. + for arg + do + if test -n "$dstarg"; then + # $@ is not empty: it contains at least $arg. + set fnord "$@" "$dstarg" + shift # fnord + fi + shift # arg + dstarg=$arg + done + break;; + esac +done + +if test -z "$1"; then + if test -z "$dir_arg"; then + echo "$0: no input file specified." >&2 + exit 1 + fi + # It's OK to call `install-sh -d' without argument. + # This can happen when creating conditional directories. + exit 0 +fi + +for src +do + # Protect names starting with `-'. + case $src in + -*) src=./$src ;; + esac + + if test -n "$dir_arg"; then + dst=$src + src= + + if test -d "$dst"; then + mkdircmd=: + chmodcmd= + else + mkdircmd=$mkdirprog + fi + else + # Waiting for this to be detected by the "$cpprog $src $dsttmp" command + # might cause directories to be created, which would be especially bad + # if $src (and thus $dsttmp) contains '*'. + if test ! -f "$src" && test ! -d "$src"; then + echo "$0: $src does not exist." >&2 + exit 1 + fi + + if test -z "$dstarg"; then + echo "$0: no destination specified." >&2 + exit 1 + fi + + dst=$dstarg + # 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. + if test -d "$dst"; then + if test -n "$no_target_directory"; then + echo "$0: $dstarg: Is a directory" >&2 + exit 1 + fi + dst=$dst/`basename "$src"` + fi + fi + + # This sed command emulates the dirname command. + dstdir=`echo "$dst" | sed -e 's,/*$,,;s,[^/]*$,,;s,/*$,,;s,^$,.,'` + + # Make sure that the destination directory exists. + + # Skip lots of stat calls in the usual case. + if test ! -d "$dstdir"; then + defaultIFS=' + ' + IFS="${IFS-$defaultIFS}" + + oIFS=$IFS + # Some sh's can't handle IFS=/ for some reason. + IFS='%' + set x `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'` + shift + IFS=$oIFS + + pathcomp= + + while test $# -ne 0 ; do + pathcomp=$pathcomp$1 + shift + if test ! -d "$pathcomp"; then + $mkdirprog "$pathcomp" + # mkdir can fail with a `File exist' error in case several + # install-sh are creating the directory concurrently. This + # is OK. + test -d "$pathcomp" || exit + fi + pathcomp=$pathcomp/ + done + fi + + if test -n "$dir_arg"; then + $doit $mkdircmd "$dst" \ + && { test -z "$chowncmd" || $doit $chowncmd "$dst"; } \ + && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } \ + && { test -z "$stripcmd" || $doit $stripcmd "$dst"; } \ + && { test -z "$chmodcmd" || $doit $chmodcmd "$dst"; } + + else + dstfile=`basename "$dst"` + + # Make a couple of temp file names in the proper directory. + dsttmp=$dstdir/_inst.$$_ + rmtmp=$dstdir/_rm.$$_ + + # Trap to clean up those temp files at exit. + trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 + trap '(exit $?); exit' 1 2 13 15 + + # Copy the file name to the temp name. + $doit $cpprog "$src" "$dsttmp" && + + # and set any options; do chmod last to preserve setuid bits. + # + # If any of these fail, we abort the whole thing. If we want to + # ignore errors from any of these, just make sure not to ignore + # errors from the above "$doit $cpprog $src $dsttmp" command. + # + { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \ + && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \ + && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \ + && { test -z "$chmodcmd" || $doit $chmodcmd "$dsttmp"; } && + + # Now rename the file to the real destination. + { $doit $mvcmd -f "$dsttmp" "$dstdir/$dstfile" 2>/dev/null \ + || { + # The rename failed, perhaps because mv can't rename something else + # to itself, or perhaps because mv is so ancient that it does not + # support -f. + + # Now remove or move aside any old file at destination location. + # We try this two ways since rm can't unlink itself on some + # systems and the destination file might be busy for other + # reasons. In this case, the final cleanup might fail but the new + # file should still install successfully. + { + if test -f "$dstdir/$dstfile"; then + $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null \ + || $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null \ + || { + echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2 + (exit 1); exit 1 + } + else + : + fi + } && + + # Now rename the file to the real destination. + $doit $mvcmd "$dsttmp" "$dstdir/$dstfile" + } + } + fi || { (exit 1); exit 1; } +done + +# The final little trick to "correctly" pass the exit status to the exit trap. +{ + (exit 0); exit 0 +} + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-end: "$" +# End: diff --git a/license.txt b/license.txt new file mode 100644 index 0000000..d89303f --- /dev/null +++ b/license.txt @@ -0,0 +1,17 @@ +*** License agreement *** + +H5Part Copyright (c) 2006, The Regents of the University of California, through Lawrence Berkeley National Laboratory (subject to receipt of any required approvals from the U.S. Dept. of Energy) and the Paul Scherrer Institut (Switzerland). All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + +(1) Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + +(2) Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + +(3) Neither the name of the University of California, Lawrence Berkeley National Laboratory, U.S. Dept. of Energy, Paul Scherrer Institut (Switzerland) nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 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. + +You are under no obligation whatsoever to provide any bug fixes, patches, or upgrades to the features, functionality or performance of the source code ("Enhancements") to anyone; however, if you choose to make your Enhancements available either publicly, or directly to Lawrence Berkeley National Laboratory, without imposing a separate written license agreement for such Enhancements, then you hereby grant the following license: a non-exclusive, royalty-free perpetual license to install, use, modify, prepare derivative works, incorporate into other computer software, distribute, and sublicense such enhancements or derivative works thereof, in binary and source code form. + +***** diff --git a/missing b/missing new file mode 100755 index 0000000..09edd88 --- /dev/null +++ b/missing @@ -0,0 +1,357 @@ +#! /bin/sh +# Common stub for a few missing GNU programs while installing. + +scriptversion=2005-02-08.22 + +# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005 +# Free Software Foundation, Inc. +# Originally by Fran,cois Pinard , 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 +# 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, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# 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. + +if test $# -eq 0; then + echo 1>&2 "Try \`$0 --help' for more information" + exit 1 +fi + +run=: + +# 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 + +msg="missing on your system" + +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 + ;; + + -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. + +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' + 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] + +Send bug reports to ." + exit $? + ;; + + -v|--v|--ve|--ver|--vers|--versi|--versio|--version) + echo "missing $scriptversion (GNU Automake)" + exit $? + ;; + + -*) + echo 1>&2 "$0: Unknown \`$1' option" + echo 1>&2 "Try \`$0 --help' for more information" + exit 1 + ;; + +esac + +# 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). +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 "$1" 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 's/.*--output[ =]*\([^ ]*\).*/\1/p'` + test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'` + 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 [ $# -ne 1 ]; then + eval LASTARG="\${$#}" + case "$LASTARG" in + *.y) + SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" y.tab.c + fi + SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" y.tab.h + fi + ;; + esac + fi + if [ ! -f y.tab.h ]; then + echo >y.tab.h + fi + if [ ! -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 [ $# -ne 1 ]; then + eval LASTARG="\${$#}" + case "$LASTARG" in + *.l) + SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" lex.yy.c + fi + ;; + esac + fi + if [ ! -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 's/.*-o \([^ ]*\).*/\1/p'` + if test -z "$file"; then + file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'` + fi + if [ -f "$file" ]; then + touch $file + else + test -z "$file" || exec >$file + echo ".ab help2man is required to generate this page" + exit 1 + 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 's/.*-o \([^ ]*\).*/\1/p'` + 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 + 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 + +exit 0 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-end: "$" +# End: diff --git a/rules.make b/rules.make new file mode 100755 index 0000000..1ce27fc --- /dev/null +++ b/rules.make @@ -0,0 +1,52 @@ +# Makefile Rules (used by both GNUMakefile and Makefile) +# now "all" rule is defined in the main makefile +# all: H5PartTest H5PartTest.o H5Part.o + +vtkhdf.o: vtkhdf.cc + $(CXX) $(CFLAGS) -c vtkhdf.cc + +H5PartTest: H5PartTest.o H5Part.o + $(CXX) -o H5PartTest H5Part.o H5PartTest.o $(LDFLAGS) + +Bench: Bench.c H5Part.o + $(CC) $(CFLAGS) -o Bench Bench.c H5Part.o $(LDFLAGS) + +H5PartTest.o: H5PartTest.cc H5Part.hh + $(CXX) $(CFLAGS) -DREGRESSIONTEST -c H5PartTest.cc + +H5PartTestParallel.o: H5PartTestParallel.cc H5Part.hh + $(CXX) $(CFLAGS) -c H5PartTestParallel.cc + +H5PartTestParallel: H5PartTestParallel.o H5Part.o + $(CXX) -o H5PartTestParallel H5Part.o H5PartTestParallel.o $(LDFLAGS) + +H5PartAndreasTest.o: H5PartAndreasTest.cc H5Part.hh + $(CXX) $(CFLAGS) -c H5PartAndreasTest.cc + +H5PartAndreasTest: H5PartAndreasTest.o H5Part.o + $(CXX) -o H5PartAndreasTest H5Part.o H5PartAndreasTest.o $(LDFLAGS) + +H5Part.o: H5Part.c H5Part.h + $(CC) $(CFLAGS) -c H5Part.c + +H5PartF.o: H5PartF.c Underscore.h H5Part.h + $(CC) $(CFLAGS) -w -c H5PartF.c + +H5testF.o: H5testF.f H5Part.inc + $(F90) $(CFLAGS) -c H5testF.f + +H5testF: H5testF.o H5Part.o H5PartF.o + $(F90) $(CFLAGS) -o H5testF H5testF.o H5PartF.o H5Part.o $(LDFLAGS) -lC + +vtkxml.o: vtkxml.cc + $(CXX) $(CFLAGS) -c vtkxml.cc + +Underscore.h: TestUnderscore.f TestUnderscoreC.c + rm -f TestUnderscore.o TestUnderscoreC.o TestUnderscore + $(CC) -c TestUnderscoreC.c + $(F90) -c TestUnderscore.f + $(F90) -o TestUnderscore TestUnderscore.o TestUnderscoreC.o -lC + ./TestUnderscore >& Underscore.h + +clean: + rm -rf *~ *.o H5PartTest diff --git a/src/H5Block.h b/src/H5Block.h new file mode 100644 index 0000000..4023bf7 --- /dev/null +++ b/src/H5Block.h @@ -0,0 +1,185 @@ +#ifndef H5BLOCK_H +#define H5BLOCK_H + +/*! + + Interface for block structured field data + + This is used to store and retrieve scalar or vector valued field data. + With \f$ \Omega\ \f$ .... + + Basic items are blocks (\f$ \Omaga_i \f$ ), cartesian subdomains of \f$ \Omega \f$ . If a \f$ \Omega_i \f$ + is refined we view this \f$ \Omaga_i \f$ as a patch. + + \note My note + + + This is to discuss the HDF5 architecture: + + \timestep#k + \particles + \topo + \block + \patch1 + \block + + Idea: because we have more than one block per timestep + in case of AMR, the activity of a block could help. + + +*/ + + +//! Checks if the block of the actual time step is refined i.e. if we have a patch +/*! + \param H5PartFile *f : file handle + \param char *name : name of the data set +*/ +bool H5BlockIsPatch(H5PartFile *f, char *name); + + +//! return the maximum level refinement of refinement at the current time step +/*! + \param H5PartFile *f : file handle + \param char *name : name of the data set +*/ +int H5BlockGetMaxRefinementLevel(H5PartFile *f, char *name); + + + +//! Define the field layout (FL) given the dense index space at the actual time step +/*! + \param H5PartFile *f : file handle + \param char *name : name of the data set + \param unsigned int Istart : start of index I + \param unsigned int Jstart : start of index J + \param unsigned int Kstart : start of index K + \param unsigned int Istart : end of index I + \param unsigned int Jstart : end of index J + \param unsigned int Kstart : end of index K + \note this defines \f$ \Omega \f$ and the view for HDF5 + + \note we have to make a 1D and 2D version + \note Q: what about a dimension independent version probably hard for the FOR-People? + +*/ +void H5BlockDefine3DFieldLayout(H5PartFile *f, + char *name, unsigned int Istart, unsigned int Iend, + unsigned int Jstart, unsigned int Jend, + unsigned int Kstart, unsigned int Kend); + + +//! Write the mesh spacing for the active (current) block +/*! + \param H5PartFile *f : file handle + \param char *name : name of teh data set + \param double dx: mesh spacing in x + \param double dy: mesh spacing in y + \param double dz: mesh spacing in z + +*/ +void H5BlockSetMeshSpacing(H5PartFile *f, char *name, double dx, double dy, double dz,); + +//! Write a 3D real valued vector field using the defined FL for this block +/*! + \param H5PartFile *f : file handle + \param char *name : name of teh data set + \param double *xval : array of x component data + \param double *yval : array of y component data + \param double *zval : array of z component data + + \note we have to make a 1D and 2D version + \note Q: what about a dimension independent version? + +*/ +void H5BlockWrite3DVField(H5PartFile *f, + char *name, + double *xval, + double *yval, + double *zval); + +// =========================================================================================== +/* +The following reflects the fact that we have fields which are decomposed into modes. + +Augment the field name with the mode number and use this name to store the field. +For the mode freqency use the same procedure. + +*/ + + + //! Read the number of stored modes at actual timestep + /*! + \param H5PartFile *f : file handle + \param char *name : name of teh data set + + */ + int H5BlockGetNumberOfModes(H5PartFile *f, char *name); + + //! Set the number of stored modes at actual timestep + /*! + \param H5PartFile *f : file handle + \param char *name : name of teh data set + \param int modes: the number of modes + */ + void H5BlockSetNumberOfModes(H5PartFile *f, char *name, int modes); + + + //! Write a 3D real valued vector field using the defined FL for this block + /*! + \param H5PartFile *f : file handle + \param char *name : name of teh data set + \param int modeNumber : the mode number of the field + \param double omega : the eingenmode of the field + \param double *xval : array of x component data + \param double *yval : array of y component data + \param double *zval : array of z component data + + \note we have to make a 1D and 2D version + \note Q: what about a dimension independent version? + + */ + void H5BlockWrite3DVField(H5PartFile *f, + char *name, int modeNumber, double omega, + double *xval, + double *yval, + double *zval); + + + //! Write the quality factor for a given mode + /*! + \param H5PartFile *f : file handle + \param char *name : name of the data set + \param int modeNumber : the mode number of the field + \param double Q: the quality factor + */ + void H5BlockSetQFactor(H5PartFile *f, char *name, int mode, double Q); + + //! Write the S-parameters for a given mode + /*! + \param H5PartFile *f : file handle + \param char *name : name of the data set + \param int modeNumber : the mode number of the field + \param double **S: the quality factor + */ + void H5BlockSetSParams(H5PartFile *f, char *name, int mode, double **s); + + //! Read the quality factor for a given mode + /*! + \param H5PartFile *f : file handle + \param char *name : name of the data set + \param int modeNumber : the mode number of the field + \param double *Q: the quality factor + */ + void H5BlockGetQFactor(H5PartFile *f, char *name, int mode, double *Q); + + //! Read the S-parameters for a given mode + /*! + \param H5PartFile *f : file handle + \param char *name : name of the data set + \param int modeNumber : the mode number of the field + \param double **S: the quality factor + */ + void H5BlockGetSParams(H5PartFile *f, char *name, int mode, double **s); + +#endif // H5BLOCK_H diff --git a/src/H5Part++.cc b/src/H5Part++.cc new file mode 100755 index 0000000..821ff11 --- /dev/null +++ b/src/H5Part++.cc @@ -0,0 +1,234 @@ +#include +#include +#include +#include +#include "H5Part++.hh" + +#include +#include +#include +#include +using namespace std; + +#ifdef READTEST + +/* + A simple regression test that shows how you use this API + to write and read multi-timestep files of particle data. +*/ +#ifdef PARALLEL_IO + + +#else + +int main(int argc,char **argv){ + const int sz=5; + double x[sz],y[sz],z[sz]; + long long id[sz]; + char name[64]; + H5PartFile *file; + int i,t,nt,nds,myproc; + int nfattribs,nsattribs; + + const string fn = string(argv[1]); + + cout << "Open " << fn << endl; + + + file= H5PartOpenFile(fn.c_str(),H5PART_READ); + nt=H5PartGetNumSteps(file); /* get number of steps in file */ + H5PartSetStep(file,0); + nds=H5PartGetNumDatasets(file); /* get number of datasets in timestep 0 */ + + + + puts("\n\n==============================="); + for(i=0;ifile); + H5PartSetStep(file,t); /* must set the current timestep in file */ + H5PartSetNumParticles(file,sz); /* then set number of particles to store */ + /* now write different tuples of data into this timestep of the file */ + H5PartWriteDataFloat64(file,"x",x); + H5PartWriteDataFloat64(file,"y",y); + H5PartWriteDataFloat64(file,"z",z); + H5PartWriteDataInt64(file,"id",id); + } + printf("AllDone p[%u]\n",myproc); + H5PartCloseFile(file); + MPI_Barrier(comm); + printf("p[%u:%u] : OK, close file and reopen for reading \n",myproc,nprocs); + if(myproc==0){ /* now only proc 0 reads the file serially */ + file= H5PartOpenFileSerial("parttest.h5",H5PART_READ); + nt=H5PartGetNumSteps(file); /* get number of steps in file */ + H5PartSetStep(file,0); + nds=H5PartGetNumDatasets(file); /* get number of datasets in timestep 0 */ + + puts("\n\n==============================="); + for(i=0;i0){ + char attrname[32]; + H5PartGetStepAttribInfo(file,0,attrname,32,0,0); + printf("First Attrib name is [%s]\n",attrname); + } + H5PartReadParticleStep(file,t,/* do a mongo read of all data this step */ + x,y,z,id); + printf("\tid\t\tx\t\ty\t\tz\n"); + puts("\t----------------------------------------------------"); + for(i=0;i +#endif +} + +/* Add any C++ specific extensions/implementations/wrappers here */ + +/* here is a sample class wrapping of H5Part for C++ usage */ + +class H5ParticleFile { + H5PartFile *file; + long long np; +public: + H5ParticleFile(const char *filename,const int flags):np(0){ + this->file=H5PartOpenFile(filename,flags); + } + + // H5ParticleFile(const std::string fn,const int flags):np(0){ + // this->file=H5PartOpenFile(fn.cstr(),flags); + //} + +#ifdef PARALLEL_IO + H5ParticleFile(const char *filename,const int flags,const MPI_Comm comm):np(0){ + this->file=H5PartOpenFileParallel(filename,flags,comm); + } + // H5ParticleFile(const string fn,const int flags,const MPI_Comm comm):np(0){ + // this->file=H5PartOpenFile(fn.cstr(),flags,comm); + //} +#endif + inline int isValid() { return H5PartFileIsValid(this->file);} + + ~H5ParticleFile(){H5PartCloseFile(this->file);} + + inline void setNumParticles(long long nparticles){ + np=nparticles; + H5PartSetNumParticles(file,nparticles); + } + // get the current step (-1 means step is invalid) + inline int step(){ return file->timestep; } + // set the current step + inline int step(int s){ H5PartSetStep(this->file,s); return file->timestep; } + inline int nSteps(){ return H5PartGetNumSteps(this->file);} + inline int nFields(){ return H5PartGetNumDatasets(file);} + inline int fieldName(int index,char *name,int maxlen){H5PartGetDatasetName(file,index,name,maxlen);} + inline long long nParticles(){return H5PartGetNumParticles(file);} + inline int write(char *name,double *array){ + return H5PartWriteDataFloat64(this->file,name,array); + } + inline int write(char *name,long long *array){ + return H5PartWriteDataInt64(this->file,name,array); + } + inline int read(char *name,double *array){ + return H5PartReadDataFloat64(this->file,name,array); + } + inline int read(char *name,long long *array){ + return H5PartReadDataInt64(this->file,name,array); + } + inline int readStep(int step, + double *x,double *y,double *z, + double *px,double *py,double *pz, + long long *id){ + return H5PartReadParticleStep(file,step, + x,y,z, + px,py,pz, + id); + } + + // Attribute stuff + // Info on attributes + inline int nStepAttribs(){ return H5PartGetNumStepAttribs(file);} + inline void getStepAttribInfo(int idx,char *name,size_t maxsize, + hid_t &type,int &nelem){ + H5PartGetStepAttribInfo(file,idx,name,maxsize,&type,&nelem); + } + inline int nFileAttribs(){ return H5PartGetNumFileAttribs(file);} + inline void getFileAttribInfo(int idx,char *name,size_t maxsize, + hid_t &type,int &nelem){ + H5PartGetFileAttribInfo(file,idx,name,maxsize,&type,&nelem); + } + // step attribs + // int writeStepAttrib(char *key,string *valuestring){ + // return H5PartWriteStepAttribString(file,key,valuestring.c_str()); + //} + inline int writeStepAttrib(char *key,char *valuestring){ + return H5PartWriteStepAttribString(file,key,valuestring); + } + inline int writeStepAttrib(char *key,double *value,int nelem=1){ + return H5PartWriteStepAttrib(file,key,H5T_NATIVE_DOUBLE,value,nelem); + } + inline int writeStepAttrib(char *key,float *value,int nelem=1){ + return H5PartWriteStepAttrib(file,key,H5T_NATIVE_FLOAT,value,nelem);} + inline int writeStepAttrib(char *key,int *value,int nelem=1){ + return H5PartWriteStepAttrib(file,key,H5T_NATIVE_INT,value,nelem);} + inline int writeStepAttrib(char *key,long long *value,int nelem=1){ + return H5PartWriteStepAttrib(file,key,H5T_NATIVE_INT64,value,nelem);} + inline void readStepAttrib(char *key,void *value){ + H5PartReadStepAttrib(file,key,value); + } + // FileAttribs + // Attribute stuff + // int writeFileAttrib(char *key,string *valuestring){ + // return H5PartWriteFileAttribString(file,key,valuestring.c_str()); + //} + inline int writeFileAttrib(char *key,char *valuestring){ + return H5PartWriteFileAttribString(file,key,valuestring); + } + inline int writeFileAttrib(char *key,double *value,int nelem=1){ + return H5PartWriteFileAttrib(file,key,H5T_NATIVE_DOUBLE,value,nelem); + } + inline int writeFileAttrib(char *key,float *value,int nelem=1){ + return H5PartWriteFileAttrib(file,key,H5T_NATIVE_FLOAT,value,nelem);} + inline int writeFileAttrib(char *key,int *value,int nelem=1){ + return H5PartWriteFileAttrib(file,key,H5T_NATIVE_INT,value,nelem);} + inline int writeFileAttrib(char *key,long long *value,int nelem=1){ + return H5PartWriteFileAttrib(file,key,H5T_NATIVE_INT64,value,nelem);} + // read file attribs + inline int readFileAttrib(char *key,void *valuestring){ + H5PartReadFileAttrib(file,key,valuestring); + } +}; + +/* + An even wackier idea + file.datasets[0:ndatasets-1] + file.attributes[0:nfileattribs-1] + file.datasets.attributes[0:ndatasetattribs-1] + file.datasets.size() + + operators + .size() + .name() + [idx] + ["name" or "keyname"] + +*/ +#if 0 + +class H5Dataset { + const hid_t dataset; + char *n; // return as const + int d[5]; // simple start + int nd; +public: + H5Dataset(const hid_t ds_handle):dataset(ds_handle){} + const char *name() {return n;} + int nDims(){ return nd; } + const int *dims(){return d;} +}; + +class H5Attribute{ + char *n; + int sz; +public: + const char *name(){return n;} + int size(){return sz;} +} + + +class H5Group { + hid_t gid; + int sz; +protected: + virtual int computesize(){} + void setGroup(gid_t g){ + if(gid>0) H5close(gid); + gid=g; + // must compute size if available + if(gid>0) computesize(); + else sz=0; + } +public: + // const hid_t gid; + H5Group(hid_t g):gid(g){} + H5Group():gid(-1){} + ~H5Group(){if(gid>0) H5Gclose(gid);} + int size(){return sz;} +}; + +class H5AttribGroup : public H5Group{ + int size; + virtual void computesize(){ + // compute the number of items in this group + } +public: + const H5Attribute &operator[](char *name); + const H5Attribute &operator[](int idx); +}; + +class H5DataGroup : public H5Group { + int size; +public: + const H5Dataset &operator[](int idx); + const H5Dataset &operator[](char *name); + // no name here?? +}; + +class H5FancyParticles { + char *n; + hid_t file; +public: + hid_t mygroup; + const H5AttribGroup attributes; + const H5DataGroup datasets; + H5FancyParticles(char *filename,int readwriteflag); + ~H5FancyParticles(); + // int size();// return the number of datasets in file + // const char *name(); // return the name of the file? + // const H5Dataset &operator[](int idx); // index dataset by integer + // const H5Dataset &operator[](char *n); // index dataset by name +}; + +#endif + +#endif diff --git a/src/H5Part.c b/src/H5Part.c new file mode 100644 index 0000000..8eafcc5 --- /dev/null +++ b/src/H5Part.c @@ -0,0 +1,1558 @@ +/** + H5Part C API +*/ +#include +#include +#include +#include +#include +#include "H5Part.h" + +#ifdef IPL_XT3 +# define SEEK_END 2 +#endif + +static unsigned h5part_debug=0; + +/********* Private Function Declarations *************/ +/** + H5PartIOcounter: Private +*/ +herr_t H5PartIOcounter(hid_t group_id, + const char *member_name, + void *operator_data); + +/********** Definitions of Functions/Subroutines ******/ + +/*========== File Opening/Closing ===============*/ +/** + H5PartOpenFileParallel: Opens file with specified filename. + If you open with flag H5PART_WRITE, it will truncate any + file with the specified filename and start writing to it. + If you open with H5PART_READ, then it will open the file + readonly. + + H5PartFile should be treated as an essentially opaque + datastructure. It acts as the file handle, but internally + it maintains several key state variables associated with + the file. + + \param filename The name of the IEEEIO data file to open. + The typical extension for these files is .h5 + \param flags The accessmode for the file. This is + one of 2 different access modes: H5PART_READ, H5PART_WRITE. + \param comm This argument is only available if the program has been + compiled with the PARALLEL_IO + \return A new filehandle with an open file or NULL if error. + */ +/* + I could probably do an APPEND mode as well, but + just haven't done so yet. APPEND would need to check the + file to determine its current state and modify the + H5PartFile datastructure accordingly. + #ifdef PARALLEL_IO + , MPI_Comm comm + #endif +*/ +H5PartFile *H5PartOpenFileParallel(const char *filename, + unsigned flags + #ifdef PARALLEL_IO + , MPI_Comm comm + #endif +){ + H5PartFile *f=(H5PartFile*)malloc(sizeof(H5PartFile)); +#ifdef PARALLEL_IO + MPI_Info info = MPI_INFO_NULL; /* for the SP2... perhaps different for linux */ +#endif + f->xfer_prop = f->create_prop = f->access_prop=H5P_DEFAULT; +#ifdef PARALLEL_IO + MPI_Comm_size(comm,&f->nprocs); + MPI_Comm_rank(comm,&f->myproc); + f->pnparticles=(long long*)malloc(sizeof(long long)*f->nprocs); + /* access_prop: properties like chunking or parallel I/O */ + f->access_prop = H5Pcreate(H5P_FILE_ACCESS); + if(H5Pset_fapl_mpio(f->access_prop,comm,info)<0){ + fprintf(stderr,"Total failure trying to setup mpi-io for access\n"); + exit(0); + } + /* create_prop: tunable parameters like blocksize and btree sizes */ + /* f->create_prop = H5Pcreate(H5P_FILE_CREATE); */ + f->create_prop = H5P_DEFAULT; + /* currently create_prop is empty */ + /* xfer_prop: also used for parallel I/O, during actual writes + rather than the access_prop which is for file creation. */ + f->xfer_prop = H5Pcreate(H5P_DATASET_XFER); + H5Pset_dxpl_mpio(f->xfer_prop,H5FD_MPIO_COLLECTIVE); + f->comm = comm; +#endif + if(flags==H5PART_READ){ + f->file=H5Fopen(filename,H5F_ACC_RDONLY,f->access_prop); + f->timestep=0; + /* just do this serially + f->file = H5Fopen(filename,H5F_ACC_RDONLY,H5P_DEFAULT); */ + } + else if (flags==H5PART_WRITE){ + f->file=H5Fcreate(filename,H5F_ACC_TRUNC,f->create_prop,f->access_prop); + f->timestep=0; + if(f->file<=0) { + free(f); + fprintf(stderr,"H5Open: File open failed for file [%s]\n",filename); + exit(0); + return 0; + } + + } + else if(flags==H5PART_APPEND){ + int fd; + fd = open(filename, O_RDONLY, 0); + if (fd == -1){ + f->file=H5Fcreate(filename,H5F_ACC_TRUNC,f->create_prop,f->access_prop); + f->timestep=0; + } else if (fd != -1) { + close(fd); + f->file=H5Fopen(filename,H5F_ACC_RDWR,f->access_prop); + if(f->file<=0) { + free(f); + fprintf(stderr,"H5Open: File open failed for file [%s]\n",filename); + exit(0); + return 0; + } + int nSteps = H5PartGetNumSteps(f); + f->timestep= nSteps; + } + } + else { + f->file=-1; + fprintf(stderr,"H5Open: Invalid file access type %d\n",flags); + } + if(f->file<=0) { + free(f); + fprintf(stderr,"H5Open: File open failed for file [%s]\n", + filename); + exit(0); + return 0; + } +#ifdef PARALLEL_IO + else { + if(h5part_debug) fprintf(stderr,"Proc[%d] Opened file %s val=%d\n", + f->myproc,filename,f->file); + } +#endif + f->mode=flags; + f->maxstep=0; + f->timegroup=0; + f->shape=0; + f->diskshape=H5S_ALL; + f->memshape=H5S_ALL; + f->viewstart=-1; + f->viewend=-1; + return f; +} +/** + H5PartOpenFile: Opens file with specified filename. + If you open with flag H5PART_WRITE, it will truncate any + file with the specified filename and start writing to it. + If you open with H5PART_READ, then it will open the file + readonly. + + H5PartFile should be treated as an essentially opaque + datastructure. It acts as the file handle, but internally + it maintains several key state variables associated with + the file. + + \param filename The name of the IEEEIO data file to open. + The typical extension for these files is .h5 + \param flags The accessmode for the file. This is + one of 2 different access modes: H5PART_READ, H5PART_WRITE. + \return A new filehandle with an open file or NULL if error. + */ + +/* + I could probably do an APPEND mode as well, but + just haven't done so yet. APPEND would need to check the + file to determine its current state and modify the + H5PartFile datastructure accordingly. +*/ + +H5PartFile *H5PartOpenFile(const char *filename,unsigned flags){ + H5PartFile *f=(H5PartFile*)malloc(sizeof(H5PartFile)); + /* printf("filename is [%s] flags=%0X\n",filename,flags); */ + + f->xfer_prop = f->create_prop = f->access_prop=H5P_DEFAULT; +#ifdef PARALLEL_IO + f->pnparticles=0; + f->comm = MPI_COMM_WORLD; + f->nprocs=1; + f->myproc=0; +#endif + if(flags==H5PART_READ){ + /* f->file=H5Fopen(filename,H5F_ACC_RDONLY,f->access_prop); */ + /* just do this serially */ + f->file = H5Fopen(filename,H5F_ACC_RDONLY,H5P_DEFAULT); + if(f->file==-1){ + fprintf(stderr,"H5Open: File %s not found\n",filename); + } + f->timestep=0; + } + else if (flags==H5PART_WRITE){ + f->file=H5Fcreate(filename,H5F_ACC_TRUNC,f->create_prop,f->access_prop); + f->timestep=0; + if(f->file<=0) { + free(f); + fprintf(stderr,"H5Open: File open failed for file [%s]\n",filename); + exit(0); + return 0; + } + } + else if(flags==H5PART_APPEND){ + int fd; + fd = open(filename, O_RDONLY, 0); + if (fd == -1){ + f->file=H5Fcreate(filename,H5F_ACC_TRUNC,f->create_prop,f->access_prop); + f->timestep=0; + } else if (fd != -1) { + close(fd); + f->file=H5Fopen(filename,H5F_ACC_RDWR,f->access_prop); + if(f->file<=0) { + free(f); + fprintf(stderr,"H5Open: File open failed for file [%s]\n",filename); + exit(0); + return 0; + } + int nSteps = H5PartGetNumSteps(f); + f->timestep= nSteps; + } + + } + else { + f->file=-1; + fprintf(stderr,"H5Open: Invalid file access type %d\n",flags); + } + if(f->file<0) { + free(f); + fprintf(stderr,"H5Open: File open failed for file [%s]\n", + filename); + return 0; + } + f->mode=flags; + f->maxstep=0; + f->timegroup=0; + f->shape=0; + f->diskshape=H5S_ALL; + f->memshape=H5S_ALL; + f->viewstart=-1; + f->viewend=-1; + return f; +} + +/** + + H5PartFileIsValid: checks if a file was successfully opened. + \param f filehandle of the file to check validity + \return 1 if success 0 if failure + + */ +int H5PartFileIsValid(H5PartFile *f){ + if(!f) + { + /* if f is NULL... (There was a case...) */ + return 0; + } + else if(f->file > 0) return 1; + else return 0; +} +/** + H5PartCloseFile: closes an open file. + \param f filehandle of the file to close + \return void +*/ +void H5PartCloseFile(H5PartFile *f){ + if(f->shape>0) H5Sclose(f->shape); f->shape=0; + if(f->timegroup>0) H5Gclose(f->timegroup); f->timegroup=0; + if(f->diskshape!=H5S_ALL) H5Sclose(f->diskshape); +#ifdef PARALLEL_IO + if(f->pnparticles) free(f->pnparticles); +#endif + if(f->xfer_prop!=H5P_DEFAULT) { + H5Pclose(f->xfer_prop); f->xfer_prop=H5P_DEFAULT; + } + if(f->access_prop!=H5P_DEFAULT) { + H5Pclose(f->access_prop); f->access_prop=H5P_DEFAULT; + } + if(f->create_prop!=H5P_DEFAULT) { + H5Pclose(f->create_prop); f->create_prop=H5P_DEFAULT; + } + if(f->file) H5Fclose(f->file); f->file=0; + free(f); +} + + +/*============== File Writing Functions ==================== */ +/** + H5PartSetNumParticles: This function's sole purpose is to prevent + needless creation of new HDF5 DataSpace handles if the number of + particles is invariant throughout the sim. That's its only reason + for existence. After you call this subroutine, all subsequent + operations will assume this number of particles will be written. + \param f A FileHandle opened by H5PartOpenFile() or H5PartOpenFileParallel(). + \param nparticles A long long integer specifying the number of particles + \return void + */ +void H5PartSetNumParticles(H5PartFile *f,long long nparticles){ +#ifdef HDF5V160 + hssize_t start[1]; +#else + hsize_t start[1]; +#endif + hsize_t stride[1],count[1],total; + register int i,r; + /* printf("Set Number of Particles to %lld\n",nparticles); */ +#ifndef PARALLEL_IO + /* if we are not using parallel-IO, there is enough information + to know that we can short circuit this routine. However, + for parallel IO, this is going to cause problems because + we don't know if things have changed globally */ + if(f->nparticles==nparticles) return; /* no change */ +#endif + if(f->diskshape!=H5S_ALL) H5Sclose(f->diskshape); + if(f->memshape!=H5S_ALL) H5Sclose(f->memshape); + f->memshape=f->diskshape = H5S_ALL; + if(f->shape) H5Sclose(f->shape); + f->nparticles=(hsize_t)nparticles; +#ifndef PARALLEL_IO + f->shape=H5Screate_simple(1, /* 1 dimensional shape */ + &(f->nparticles), /* with nparticles elements */ + NULL); /* ignore this :-) */ +#else /* PARALLEL_IO */ + /* The Gameplan here is to declare the overall size of the on-disk + data structure the same way we do for the serial case. But + then we must have additional "DataSpace" structures to define + our in-memory layout of our domain-decomposed portion of the particle + list as well as a "selection" of a subset of the on-disk + data layout that will be written in parallel to mutually exclusive + regions by all of the processors during a parallel I/O operation. + These are f->shape, f->memshape and f->diskshape respectively. */ + /* acquire the number of particles to be written from each MPI process */ + MPI_Allgather(&nparticles,1,MPI_LONG_LONG,f->pnparticles,1,MPI_LONG_LONG,f->comm); + + if(f->myproc==0 && h5part_debug){ + puts("AllGather: Particle offsets:\n"); + for(i=0;inprocs;i++) + printf("\tnp=%d\n",(int) f->pnparticles[i]); /* compute total nparticles */ + } + /* should I create a selection here? */ + stride[0]=1; + start[0]=0; + for(i=0;imyproc;i++) start[0]+=f->pnparticles[i]; /* compute start offsets */ + total=0; + for(i=0;inprocs;i++) total+=f->pnparticles[i]; /* compute total nparticles */ + f->shape = H5Screate_simple(1,&total,&total); /* declare overall datasize */ + f->diskshape = H5Screate_simple(1,&total,&total); /* declare overall data size but then will select a subset */ + { + hsize_t dmax=H5S_UNLIMITED; + f->memshape = H5Screate_simple(1,&(f->nparticles),&dmax); /* declare local memory datasize */ + } + + if(f->shape<0 || f->memshape<0 || f->diskshape<0){ + fprintf(stderr,"Abort: shape construction failed\n"); + if(f->shape<0) fprintf(stderr,"\tf->shape\n"); + if(f->diskshape<0) fprintf(stderr,"\tf->diskshape\n"); + if(f->memshape<0) fprintf(stderr,"\tf->memshape\n"); + exit(0); +} + count[0]=nparticles; /* based on local nparticles (for the selection */ + /* and then set the subset of the data you will write to */ + r=H5Sselect_hyperslab(f->diskshape,H5S_SELECT_SET,start,stride,count,NULL); + if(r<0){ + fprintf(stderr,"Abort: Selection Failed!\n"); + exit(0); + } + if(f->timegroup<0){ + H5PartSetStep(f,0); + } +#endif +} + +/** + H5PartWriteDataFloat64: + After setting the number of particles with H5PartSetNumParticles() and the current timestep using H5PartSetStep(), you can start writing datasets into the file. Each dataset has a name associated with it (chosen by the user) in order to facilitate later retrieval. The writing routines also implicitly store the datatype of the array so that the array can be reconstructed properly on other systems with incompatible type representations. The data is committed to disk before the routine returns. All data that is written after setting the timestep is associated with that timestep. While the number of particles can change for each timestep, you cannot change the number of particles in the middle of a given timestep. + + \param f A FileHandle opened by H5PartOpenFile() or H5PartOpenFileParallel(). + \param name A null-terminated string for the name of the array. When retrieving datasets from disk, you ask for them by name. There are no restrictions on naming of arrays, but it is useful to arrive at some common naming convention when sharing data with other groups. + \param array A buffer containing an array of particle data to commit to disk. The datatype for elements in the buffer is implicit in the name of the subroutine call. + \return 1 on success, 0 on failure. + */ +int H5PartWriteDataFloat64(H5PartFile *f,char *name,double *array){ + register int r; + hid_t dataset; + if(f->mode==H5PART_READ){ + fprintf(stderr,"H5PartWriteDataFloat64: Error! Attempting to write to read-only file\n"); + return 0; + } + /* fprintf(stderr,"Create a dataset[%s] mounted on the timegroup %d\n", + name,f->timestep); */ + if(f->timegroup<=0) {fprintf(stderr,"Eeeerrrrroooorrrr!!!!\n");} + dataset = H5Dcreate(f->timegroup,name,H5T_NATIVE_DOUBLE,f->shape,H5P_DEFAULT); + if(dataset<0) + fprintf(stderr,"Dataset open failed for name=[%s] step=%d!\n", + name,f->timestep); + r=H5Dwrite(dataset,H5T_NATIVE_DOUBLE,f->memshape,f->diskshape,H5P_DEFAULT,array); + H5Dclose(dataset); + return r; +} +/** + H5PartWriteDataInt64: + After setting the number of particles with H5PartSetNumParticles() and the current timestep using H5PartSetStep(), you can start writing datasets into the file. Each dataset has a name associated with it (chosen by the user) in order to facilitate later retrieval. The writing routines also implicitly store the datatype of the array so that the array can be reconstructed properly on other systems with incompatible type representations. The data is committed to disk before the routine returns. All data that is written after setting the timestep is associated with that timestep. While the number of particles can change for each timestep, you cannot change the number of particles in the middle of a given timestep. + + \param f A FileHandle opened by H5PartOpenFile() or H5PartOpenFileParallel(). + \param name A null-terminated string for the name of the array. When retrieving datasets from disk, you ask for them by name. There are no restrictions on naming of arrays, but it is useful to arrive at some common naming convention when sharing data with other groups. + \param array A buffer containing an array of particle data to commit to disk. The datatype for elements in the buffer is implicit in the name of the subroutine call. + \return 1 on success, 0 on failure. + */ + +int H5PartWriteDataInt64(H5PartFile *f,char *name,long long *array){ + register int r; + hid_t dataset; + /*fprintf(stderr,"Create a dataset[%s] mounted on the timegroup %d\n", + name,f->timestep); */ + if(f->mode==H5PART_READ){ + fprintf(stderr,"H5PartWriteDataFloat64: Error! Attempting to write to read-only file\n"); + return 0; + } + if(f->timegroup<=0) {fprintf(stderr,"Eeeerrrrroooorrrr!!!!\n");} + dataset = H5Dcreate(f->timegroup,name,H5T_NATIVE_INT64,f->shape,H5P_DEFAULT); + if(dataset<0){ + fprintf(stderr,"Dataset open failed for name=[%s] step=%d!\n", + name,f->timestep); + exit(0); + } + r=H5Dwrite(dataset,H5T_NATIVE_INT64,f->memshape,f->diskshape,H5P_DEFAULT,array); + if(r<0) { + fprintf(stderr,"Attempt to write dataset failed!\n"); + exit(0); + } + H5Dclose(dataset); + return r; +} + +/** + H5PartWriteFileAttribString: writes a string attribute bound to a file. + + \param f A FileHandle opened by H5PartOpenFile() or H5PartOpenFileParallel(). + \param name A null-terminated string for the name of the attribute. + \param attrib A null-terminated string for the attribute. + \return 1 on success, 0 on failure. +*/ + +int H5PartWriteFileAttribString(H5PartFile *f,char *name, + char *attrib){ + if(f->mode==H5PART_READ){ + fprintf(stderr,"H5PartWriteDataFloat64: Error! Attempting to write to read-only file\n"); + return 0; + } + return H5PartWriteFileAttrib(f,name,H5T_NATIVE_CHAR,attrib,strlen(attrib)+1); +} +/** + H5PartWriteStepAttrString: writes a string attribute bound to the current step. + + \param f A FileHandle opened by H5PartOpenFile() or H5PartOpenFileParallel(). + \param name A null-terminated string for the name of the attribute. + \param attrib A null-terminated string for the attribute. + \return 1 on success, 0 on failure. +*/ + +int H5PartWriteStepAttribString(H5PartFile *f,char *name, + char *attrib){ + if(f->mode==H5PART_READ){ + fprintf(stderr,"H5PartWriteDataFloat64: Error! Attempting to write to read-only file\n"); + return 0; + } + return H5PartWriteStepAttrib(f,name,H5T_NATIVE_CHAR,attrib,strlen(attrib)+1); +} + +/** + H5PartWriteStepAttrib: writes a step attribute. + \param f A FileHandle opened by H5PartOpenFile() or H5PartOpenFileParallel(). + \param name A null-terminated string for the name of the attribute. + \param type One of H5T_NATIVE_DOUBLE, H5T_NATIVE_INT64, H5T_NATIVE_CHAR. + \param value Value of the attribute. + \param nelem Number of elements of type "type". + \return 1 on success, 0 on failure. +*/ + + +int H5PartWriteStepAttrib(H5PartFile *f,char *name, + hid_t type,void *value,int nelem){ + register int r; + hid_t attrib; + hid_t space; + hsize_t len; + if(f->mode==H5PART_READ){ + fprintf(stderr,"H5PartWriteDataFloat64: Error! Attempting to write to read-only file\n"); + return 0; + } + /*fprintf(stderr,"Create a attribute[%s] mounted on the timegroup %d\n", + name,f->timestep); */ + if(f->timegroup<=0) {fprintf(stderr,"Eeeerrrrroooorrrr!!!!\n");} + len = nelem; + space = H5Screate_simple(1,&len,NULL); + attrib = H5Acreate(f->timegroup,name,type,space,H5P_DEFAULT); + r=H5Awrite(attrib,type,value); + H5Aclose(attrib); + H5Sclose(space); + return r; +} + +/** + H5PartWriteAttr: writes a step attribute. + Note: this call has been superseeded by H5PartWriteStepAttr. + + \param f A FileHandle opened by H5PartOpenFile() or H5PartOpenFileParallel(). + \param name A null-terminated string for the name of the attribute. + \param type One of H5T_NATIVE_DOUBLE, H5T_NATIVE_INT64, H5T_NATIVE_CHAR. + \param value Value of the attribute. + \param nelem Number of elements of type "type". + \return 1 on success, 0 on failure. +*/ + +int H5PartWriteAttrib(H5PartFile *f,char *name, + hid_t type,void *value,int nelem){ + if(f->mode==H5PART_READ){ + fprintf(stderr,"H5PartWriteDataFloat64: Error! Attempting to write to read-only file\n"); + return 0; + } + return H5PartWriteStepAttrib(f,name,type,value,nelem); +} + +/** + H5PartWriteStepAttr: writes a string attribute bound to a step. + + \param f A FileHandle opened by H5PartOpenFile() or H5PartOpenFileParallel(). + \param name A null-terminated string for the name of the attribute. + \param type One of H5T_NATIVE_DOUBLE, H5T_NATIVE_INT64, H5T_NATIVE_CHAR. + \param value Value of the attribute. + \param nelem Number of elements of type "type". + \return 1 on success, 0 on failure. +*/ + +int H5PartWriteFileAttrib(H5PartFile *f,char *name, + hid_t type,void *value,int nelem){ + register int r; + hid_t attrib,rootgroup; + hid_t space; + hsize_t len; + if(f->mode==H5PART_READ){ + fprintf(stderr,"H5PartWriteDataFloat64: Error! Attempting to write to read-only file\n"); + return 0; + } + if(h5part_debug) fprintf(stderr,"Create a File attribute[%s] step=%d\n", + name,f->timestep); + if(f->file<=0) { + fprintf(stderr,"Eeeerrrrroooorrrr!!!! File is not open!\n"); + return 0; + } + len = nelem; + space = H5Screate_simple(1,&len,NULL); + if(space<=0) { + fprintf(stderr,"Eeeerrrrroooorrrr!!!! Could not create space with len: %d!\n",(int)len); + return 0; + } + rootgroup = H5Gopen(f->file,"/"); + attrib = H5Acreate(rootgroup,name,type,space,H5P_DEFAULT); + H5Gclose(rootgroup); + if(attrib<=0) { + fprintf(stderr,"Eeeerrrrroooorrrr!!!! Attribute Creation Failed!\n"); + return 0; + } + r=H5Awrite(attrib,type,value); + H5Aclose(attrib); + H5Sclose(space); + return r; +} +herr_t H5PartAttribcounter(hid_t group_id, + const char *member_name, + void *operator_data){ + int *count = (int*)operator_data; + (*count)++; + return 0; +} +/** + H5PartGetNumStepAttribs: gets the number of attributes bound to the current step. + The step has to be set with H5PartSetStep(). + \param f A FileHandle opened by H5PartOpenFile() or H5PartOpenFileParallel(). + \return number of attributes of the current step. +*/ +int H5PartGetNumStepAttribs(H5PartFile *f){ /* for current filestep */ + return H5Aget_num_attrs(f->timegroup); +} +/** + H5PartGetNumFileAttribs: gets the number of attributes bound to the file. + \param f A FileHandle opened by H5PartOpenFile() or H5PartOpenFileParallel(). + \return number of attributes of the File. +*/ +int H5PartGetNumFileAttribs(H5PartFile *f){ + /* must walk the attributes */ + /* iterate to get numsteps */ + int nattribs; + hid_t rootgroup=H5Gopen(f->file,"/");; + nattribs=H5Aget_num_attrs(rootgroup); /* open / for the file? + or is there a problem with + file attributes? */ + H5Gclose(rootgroup); + return nattribs; +} +/** + H5PartNormType: Private +*/ +hid_t H5PartNormType(hid_t type){ + H5T_class_t tclass = H5Tget_class(type); + int size = H5Tget_size(type); + switch(tclass){ + case H5T_INTEGER: + if(size==8) return H5T_NATIVE_INT64; + else if(size==1) return H5T_NATIVE_CHAR; + else fprintf(stderr,"Unknown type %d. Cannot infer normalized type\n",(int)type); + break; + case H5T_FLOAT: + return H5T_NATIVE_DOUBLE; + break; + } + return -1; +} + +/** + H5PartGetStepAttribInfo: gets the name, type and number of elements of a step attribute . + \param f A FileHandle opened by H5PartOpenFile() or H5PartOpenFileParallel(). + \param idx Index of the attribute + \param name A null-terminated string with the name of the attribute. + \param maxname the length of the name of the attribute. + \param type One of the following: H5T_NATIVE_DOUBLE H5T_NATIVE_INT64 H5T_NATIVE_CHAR. + \param nelem Number of elements of type "type". + \return void. +*/ +void H5PartGetStepAttribInfo(H5PartFile *f,int idx, + char *name,size_t maxname,hid_t *type,int *nelem){ + hid_t attrib=H5Aopen_idx(f->timegroup,idx); + hid_t mytype=H5Aget_type(attrib); + hid_t space = H5Aget_space(attrib); + if(nelem) + *nelem=H5Sget_simple_extent_npoints(space); + if(name) + H5Aget_name(attrib,maxname,name); + if(type) + *type=H5PartNormType(mytype); /* normalize the type to be machine-native + this means one of + H5T_NATIVE_DOUBLE + H5T_NATIVE_INT64 + H5T_NATIVE_CHAR */ + H5Sclose(space); + H5Tclose(mytype); + H5Aclose(attrib); +} + +/** + H5PartGetFileAttribInfo: gets the name, type and number of elements of a file attribute . + \param f A FileHandle opened by H5PartOpenFile() or H5PartOpenFileParallel(). + \param idx Index of the attribute + \param name A null-terminated string with the name of the attribute. + \param maxname The length of the attribute name. + \param type One of the following: H5T_NATIVE_DOUBLE H5T_NATIVE_INT64 H5T_NATIVE_CHAR. + \param nelem Number of elements of type "type". + \return void. +*/ + +void H5PartGetFileAttribInfo(H5PartFile *f,int idx, + char *name,size_t maxname,hid_t *type,int *nelem){ + hid_t rootgroup = H5Gopen(f->file,"/"); + hid_t attrib=H5Aopen_idx(rootgroup,idx); + hid_t mytype=H5Aget_type(attrib); + hid_t space = H5Aget_space(attrib); + if(nelem) + *nelem=H5Sget_simple_extent_npoints(space); + if(name) + H5Aget_name(attrib,maxname,name); + if(type) + *type=H5PartNormType(mytype); /* normalize the type to be machine-native + this means one of + H5T_NATIVE_DOUBLE + H5T_NATIVE_INT64 + H5T_NATIVE_CHAR */ + H5Sclose(space); + H5Tclose(mytype); + H5Aclose(attrib); +} + +/** + H5PartReadStepAttrib: reads a step attribute + \param f A FileHandle opened by H5PartOpenFile() or H5PartOpenFileParallel(). + \param name A null-terminated string with the name of the attribute. + \param data of the attribute. + \return 1 on success, -1 on failure. +*/ + +int H5PartReadStepAttrib(H5PartFile *f,char *name,void *data){ + /* use the open attribute by name mode of operation */ + hid_t attrib=H5Aopen_name(f->timegroup,name); + hid_t mytype; + hid_t space; + hsize_t nelem; + hid_t type; + + if(attrib<=0) return -1; + mytype=H5Aget_type(attrib); + space = H5Aget_space(attrib); + nelem=H5Sget_simple_extent_npoints(space); + type=H5PartNormType(mytype); /* normalize the type to be machine-native + this means one of + H5T_NATIVE_DOUBLE + H5T_NATIVE_INT64 + H5T_NATIVE_CHAR */ + H5Aread(attrib,type,data); + H5Sclose(space); + H5Tclose(mytype); + H5Aclose(attrib); + return 1; +} + +/** + H5PartReadAttrib: reads a step attribute + NOTE: it has been superseeded by H5PartReadStepAttrib. + \param f A FileHandle opened by H5PartOpenFile() or H5PartOpenFileParallel(). + \param name A null-terminated string with the name of the attribute. + \param data of the attribute. + \return 1 on success, -1 on failure. +*/ +void H5PartReadAttrib(H5PartFile *f,char *name,void *data){ + /* use the open attribute by name mode of operation */ + H5PartReadStepAttrib(f,name,data); +} + +/** + H5PartReadFileAttrib: reads a file attribute + \param f A FileHandle opened by H5PartOpenFile() or H5PartOpenFileParallel(). + \param name A null-terminated string with the name of the attribute. + \param data Value of the attribute. + \return 1 on success, -1 on failure. +*/ + + +int H5PartReadFileAttrib(H5PartFile *f, char *name,void *data){ + hid_t rootgroup = H5Gopen(f->file,"/"); + hid_t attrib=H5Aopen_name(rootgroup,name); + hid_t mytype; + hid_t space; + hsize_t nelem; + hid_t type; + if(attrib<0) return -1; + mytype=H5Aget_type(attrib); + space = H5Aget_space(attrib); + nelem=H5Sget_simple_extent_npoints(space); + type=H5PartNormType(mytype); /* normalize the type to be machine-native + this means one of + H5T_NATIVE_DOUBLE + H5T_NATIVE_INT64 + H5T_NATIVE_CHAR */ + H5Aread(attrib,type,data); + H5Sclose(space); + H5Tclose(mytype); + H5Aclose(attrib); + return 1; +} + + +/*================== File Reading Routines =================*/ +/* + H5PartSetStep: This routine is *only* useful when you are reading + data. Using it while you are writing will generate nonsense results! + (This file format is only half-baked... robustness is not std equipment!) + So you use this to random-access the file for a particular timestep. + Failure to explicitly set the timestep on each read will leave you + stuck on the same timestep for *all* of your reads. That is to say + the writes auto-advance the file pointer, but the reads do not + (they require explicit advancing by selecting a particular timestep). +*/ +/** + H5PartSetStep: + When writing data to a file the current time step must be set (even if there is only one). In a file with N time steps, the steps are numbered from 0 to N-1. + \param f A FileHandle opened by H5PartOpenFile() or H5PartOpenFileParallel(). + \param step the time step to set. + \returns void +*/ + +void H5PartSetStep(H5PartFile *f,int step){ + char name[128]; + int nsteps; +#ifdef PARALLEL_IO + if(h5part_debug) printf("Proc[%d] SetStep to %d for file %d\n",f->myproc,step,(int) f->file); +#else + if(h5part_debug) fprintf(stderr,"SetStep to %d for file\n",step); +#endif + nsteps = H5PartGetNumSteps(f); + if (f->mode == H5PART_APPEND && step < nsteps) { + fprintf(stderr,"SetStep to %d for file failed, there are %d steps already\n",step, nsteps); + return; + } + f->timestep=step; /* because we start at 0 */ + if(f->timegroup>0) { + H5Gclose(f->timegroup); + } + f->timegroup=-1; + sprintf(name,"Particles#%d",f->timestep); + /*if(h5part_debug) fprintf(stderr,"P[%d] Open timegroup [%s] for file %d\n", + f->myproc,name,f->file);*/ + if(f->mode==H5PART_READ) { /* kludge to prevent error messages */ +/* if(h5part_debug) fprintf(stderr,"P[%d] open group\n"); */ + f->timegroup=H5Gopen(f->file,name); + } + if(f->timegroup<=0){ + /* timegroup doesn't exist, so we need to create one */ + /* if(h5part_debug) fprintf(stderr,"P[%d] create group\n"); */ + if(f->mode == H5PART_READ){ + fprintf(stderr,"Error in H5PartSetStep() Step #%d does not exist!\n",step); + } + f->timegroup = H5Gcreate(f->file,name,0); + if(f->timegroup<0) { +#ifdef PARALLEL_IO + fprintf(stderr,"p[%d] timegroup creation failed!\n", + f->myproc); +#endif + return; + } + } + /* + #ifdef PARALLEL_IO + H5PartWriteStepAttrib(f,"pnparticles",H5T_NATIVE_INT64,f->pnparticles,f->nprocs); + #endif + */ +} + +/** + H5PartIOcounter: This is an entirely internal callback function + which is used in conjunction with HDF5 iterators. The HDF5 Group + iterator will call this repeatedly in order to count how many + timesteps of data have been stored in a particular file. + This is used by H5PartGetNumSteps(). +*/ +herr_t H5PartIOcounter(hid_t group_id, + const char *member_name, + void *operator_data){ + int *count = (int*)operator_data; + H5G_stat_t objinfo; + /* only count the particle groups... ignore all others */ + if(!strncmp(member_name,"Particles",9)) (*count)++; + return 0; +} + +/** + H5PartDScounter: Private +*/ +herr_t H5PartDScounter(hid_t group_id, + const char *member_name, + void *operator_data){ + int *count = (int*)operator_data; + H5G_stat_t objinfo; + /* only count the datasets... ignore all others */ + if(H5Gget_objinfo(group_id, + member_name, + 1 /* follow links */, + &objinfo)<0) { + return 0; /* error (probably bad symlink) */ + } + if(objinfo.type==H5G_DATASET) (*count)++; + return 0; +} + +/** + H5IO_getname_t: Private +*/ +typedef struct H5IO_getname_t { + int indx,count; + char *name; +}H5IO_getname_t; + +/** + H5IOgetname: Private +*/ +herr_t H5IOgetname(hid_t group_id, + const char *member_name, + void *operator_data){ + H5IO_getname_t *getn = (H5IO_getname_t*)operator_data; + /* check type first (only respond if it is a dataset) */ + H5G_stat_t objinfo; + /* request info about the type of objects in root group */ + if(H5Gget_objinfo(group_id, + member_name, + 1 /* follow links */, + &objinfo)<0) return 0; /* error (probably bad symlink) */ + /* only count objects that are datasets (not subgroups) */ + if(objinfo.type!=H5G_DATASET) + return 0; /* do not increment count if it isn't a dataset. */ + if(getn->indx==getn->count){ + strcpy(getn->name,member_name); + return 1; /* success */ + } + getn->count++; + return 0; +} + +/** +H5PartGetNumSteps: This reads the number of datasteps that are + currently stored in the datafile. (simple return of an int). + It works for both reading and writing of files, but is probably + only typically used when you are reading. + \param f A FileHandle opened by H5PartOpenFile() or H5PartOpenFileParallel(). + \returns number of timesteps currently stored in the file. +*/ +int H5PartGetNumSteps(H5PartFile *f){ + /* iterate to get numsteps */ + int count=0; + int idx=0; + while(H5Giterate(f->file, /* hid_t loc_id, */ + "/", /*const char *name, */ + &idx, /* int *idx, */ + H5PartIOcounter, + &count)<0){} + return count; +} +/** + H5PartGetNumDatasets: This reads the number of datasetes that are + stored at a particular time step. + \param f A FileHandle opened by H5PartOpenFile() or H5PartOpenFileParallel(). + \returns number of datasets. +*/ + +int H5PartGetNumDatasets(H5PartFile *f){ + int count=0; + int idx=0; + char name[128]; + /* we need to have scanned file to get min timestep + before we call this */ + sprintf(name,"Particles#%d",f->timestep); + while(H5Giterate(f->file, /* hid_t loc_id */ + name, + &idx, + H5PartDScounter, + &count)<0){} + return count; +} +/** + H5PartGetDatasetName: This reads the name of a datasetes specified by it's index. + \param f A FileHandle opened by H5PartOpenFile() or H5PartOpenFileParallel(). + \param _index integer specifying the index of the dataset. If the number of datasets is nds, the range of index is 0 to nds-1. + \param name A null-terminated string for the name of the dataset. + \param maxlen An integer specifying the maximum length of the name array. + \returns 1 on success, 0 on failure. +*/ +int H5PartGetDatasetName(H5PartFile *f, + int _index, /* index of the dataset (0 to N-1) */ + char *name, /* buffer to store name of dataset */ + int maxlen){ /* max size of the "name" buffer */ + H5IO_getname_t getn; + int idx=_index; + char gname[128]; + sprintf(gname,"Particles#%d",f->timestep); + getn.indx=_index; getn.name=name; getn.count=_index; + while(H5Giterate(f->file, /* hid_t loc_id, */ + gname, /*const char *name, */ + &idx, /* int *idx, */ + H5IOgetname, + &getn)<0){} + return 1; +} + +/** + Author: Antino Kim + H5PartGetDatasetInfo: gets the name, type and number of elements of a Dataset. + \param f A FileHandle opened by H5PartOpenFile() or H5PartOpenFileParallel(). + \param idx Index of the dataset + \param name A null-terminated string with the name of the dataset. + \param maxname the length of the name of the dataset. + \param type One of the following: H5T_NATIVE_DOUBLE H5T_NATIVE_INT64. + \param nelem Number of elements of type "type". + \return void. +*/ +void H5PartGetDatasetInfo(H5PartFile *f, int _index, char *name, size_t maxlen, hid_t *type, long long *nelem) +{ + H5IO_getname_t getn; + int idx=_index; + char gname[128]; + hid_t dataset_id; + hid_t mytype; + + sprintf(gname,"Particles#%d",f->timestep); + getn.indx=_index; getn.name=name; getn.count=_index; + while(H5Giterate(f->file, /* hid_t loc_id, */ + gname, /*const char *name, */ + &idx, /* int *idx, */ + H5IOgetname, + &getn)<0){} + + *nelem = H5PartGetNumParticles(f); /* number of particles (not number of timesteps nor number of sets) */ + + if(!f->timegroup) H5PartSetStep(f,f->timestep); /* choose current step */ + + dataset_id=H5Dopen(f->timegroup,name); + mytype = H5Dget_type(dataset_id); + + if(type) + *type=H5PartNormType(mytype); /* H5T_NATIVE_INT64 H5T_NATIVE_DOUBLE */ + + H5Tclose(mytype); + H5Dclose(dataset_id); /* release the dataset handle */ +} + +/** + H5PartGetDiskShape: Private +*/ +hid_t H5PartGetDiskShape(H5PartFile *f,hid_t dataset){ + hid_t space = H5Dget_space(dataset); + if(h5part_debug) fprintf(stderr,"H5PartGetDiskShape\n"); + if(H5PartHasView(f)){ + int r; + hsize_t total, stride, count; +#ifdef HDF5V160 + hssize_t range[2]; +#else + hsize_t range[2]; +#endif + if(h5part_debug) fprintf(stderr,"\tSelection is available\n"); + /* so, is this selection inclusive or exclusive? */ + range[0]=f->viewstart; + range[1]=f->viewend; + count = range[1]-range[0]; /* to be inclusive */ + stride=1; + /* now we select a subset */ + if(f->diskshape>0) + r=H5Sselect_hyperslab(f->diskshape,H5S_SELECT_SET, + range /* only using first element */, + &stride,&count,NULL); + /* now we select a subset */ + r=H5Sselect_hyperslab(space,H5S_SELECT_SET, + range,&stride,&count,NULL); + if(h5part_debug) fprintf(stderr,"\tSelection: range=%d:%d, npoints=%d s=%d\n", + (int)range[0],(int)range[1], + (int)H5Sget_simple_extent_npoints(space), + (int)H5Sget_select_npoints(space)); + if(r<0){ + fprintf(stderr,"Abort: Selection Failed!\n"); + return space; + } + } + else { + if(h5part_debug) fprintf(stderr,"\tNo Selection\n"); + } + return space; +} + +hid_t H5PartGetMemShape(H5PartFile *f,hid_t dataset){ + if(h5part_debug) fprintf(stderr,"H5PartGetMemShape\n"); + if(H5PartHasView(f)) { + hsize_t dmax=H5S_UNLIMITED; + hsize_t len = f->viewend - f->viewstart; + return H5Screate_simple(1,&len,&dmax); + } + else { + return H5S_ALL; + } +} + +/** + H5PartGetFirstDS: Private +*/ +herr_t H5PartGetFirstDS(hid_t group_id, + const char *member_name, + void *operator_data){ + hid_t *dataset = (hid_t*)operator_data; + H5G_stat_t objinfo; + /* only count the particle groups... ignore all others */ + if(H5Gget_objinfo(group_id, + member_name, + 1 /* follow links */, + &objinfo)<0) { + return 0; /* error (probably bad symlink) */ + } + if(objinfo.type==H5G_DATASET){ + (*dataset)=H5Dopen(group_id,member_name); + return 1; /* all done: return success */ + } + return 0; /* causes iterator to continue to next item */ +} + +/** + H5PartGetNumParticles: This gets the number of particles + that are stored in the current timestep. It will arbitrarily + select a timestep if you haven't already set the timestep + with H5PartSetStep(). + \param f A FileHandle opened by H5PartOpenFile() or H5PartOpenFileParallel(). + \returns number of particles in current timestep. + */ +long long H5PartGetNumParticles(H5PartFile *f){ + hid_t space,dataset; + hsize_t nparticles; + int idx=0; + char name[128]; + /* we need to have scanned file to get min timestep + before we call this */ + if(f->timegroup<0) { + if(f->timestep<0) + H5PartSetStep(f,0); + else + H5PartSetStep(f,f->timestep); /* choose a step */ + } + if(f->timegroup<=0){ + fprintf(stderr,"Damnit!!! tried to select a timestep %d\n", f->timestep); + exit(0); + } + /* lets open up a dataset in this group... we know "x" is there */ + /* dataset=H5Dopen(f->timegroup,"x"); choice of X is a kludge of sorts */ + sprintf(name,"Particles#%d",f->timestep); + while(H5Giterate(f->file, /* hid_t loc_id */ + name, + &idx, + H5PartGetFirstDS, + &dataset)<0){} + /* space = H5Dget_space(dataset); */ + /* need to use H5PartGetDiskShape for any changes to f->diskshape */ + space = H5PartGetDiskShape(f,dataset); /* kludge (or utility depending on point of view) */ + if(H5PartHasView(f)){ + if(h5part_debug) fprintf(stderr,"\tGetNumParticles::get_selection\n"); + nparticles=H5Sget_select_npoints(space); + } + else { + if(h5part_debug) fprintf(stderr,"\tGetNumParticles::get_simple_extent from space\n"); + nparticles= H5Sget_simple_extent_npoints(space); + } + if(space!=H5S_ALL) H5Sclose(space); /* release data shape handle */ + H5Dclose(dataset); /* release the dataset handle */ + return (long long)nparticles; +} + + +/** + H5SetView: For parallel I/O or for subsetting operations on + the datafile, the H5SetView subroutine allows you to define + a subset of the total particle dataset to read. The concept + of "view" works for both serial and for parallel I/O. The + "view" will remain in effect until a new view is set, or the + number of particles in a dataset changes, or the view is + "unset" by calling H5SetView(file,-1,-1); + + Before you set a view, the H5PartGetNumParticles will + return the total number of particles in a file (even for + the parallel reads). However, after you set a view, it + will return the number of particles contained in the view. + + The range is inclusive (the start and the end index). + + \param f A FileHandle opened by H5PartOpenFile() or H5PartOpenFileParallel(). + \param start start particle + \param end end particle + \returns void +*/ +void H5PartSetView(H5PartFile *f,long long start,long long end){ + hsize_t total, stride, count; +#ifdef HDF5V160 + hssize_t range[2]; +#else + hsize_t range[2]; +#endif + int r; + if(h5part_debug) fprintf(stderr,"SetView(%d,%d)\n", + (int)start,(int)end); + if(f->mode==H5PART_WRITE || f->mode==H5PART_APPEND){ + fprintf(stderr,"H5PartSetView(): SetView does not make sense for write-only files. It is meant to be used for read-only files. (maybe later this will change)\n"); + return; + } + /* if there is already a view selected, lets destroy it */ + f->viewstart=-1; + f->viewend=-1; + if(f->shape!=0){ + H5Sclose(f->shape); + f->shape=0; + } + if(f->diskshape!=0 && f->diskshape!=H5S_ALL){ + H5Sclose(f->diskshape); + f->diskshape=H5S_ALL; + } + f->diskshape = H5S_ALL; + if(f->memshape!=0 && f->memshape!=H5S_ALL){ + H5Sclose(f->memshape); + f->memshape=H5S_ALL; + } + if(start==-1 && end==-1) { + if(h5part_debug) fprintf(stderr,"\tEarly Termination: Unsetting View\n"); + return; /* all done */ + } + /* for now, we interpret start=-1 to mean 0 and + end==-1 to mean end of file */ + total=H5PartGetNumParticles(f); + if(h5part_debug) fprintf(stderr,"\tTotal nparticles=%d\n",(int)total); + if(start==-1) start=0; + if(end==-1) end=total; /* can we trust nparticles (no)? + fortunately, view has been reset + so H5PartGetNumParticles will tell + us the total number of particles. */ + + /* so, is this selection inclusive or exclusive? + it appears to be inclusive for both ends of the range. + */ + if(endviewstart=range[0]; /* inclusive start */ + f->viewend=range[1]; /* inclusive end */ + f->nparticles=range[1]-range[0]; + if(h5part_debug) fprintf(stderr,"\tRange is now %d:%d\n",(int)range[0],(int)range[1]); + /* OK, now we must create a selection from this */ + + /* how to check shape... is default H5S_ALL? */ + f->shape = H5Screate_simple(1,&total,&total); /* declare overall datasize */ + /* f->diskshape = H5S_ALL; */ + f->diskshape= H5Screate_simple(1,&total,&total); /* declare overall data size but then will select a subset */ + { + hsize_t dmax=H5S_UNLIMITED; + f->memshape = H5Screate_simple(1,&(f->nparticles),&dmax); /* declare local memory datasize */ + } + + if(f->shape<0 || f->memshape<0 || f->diskshape<0){ + fprintf(stderr,"Abort: shape construction failed\n"); + if(f->shape<0) fprintf(stderr,"\tf->shape\n"); + if(f->diskshape<0) fprintf(stderr,"\tf->diskshape\n"); + if(f->memshape<0) fprintf(stderr,"\tf->memshape\n"); + exit(0); + } + if(h5part_debug) fprintf(stderr,"\tcount=%d\n",(int)total); + stride=1; + /* now we select a subset */ + r=H5Sselect_hyperslab(f->diskshape,H5S_SELECT_SET,range,&stride,&total,NULL); + if(r<0){ + fprintf(stderr,"Abort: Selection Failed!\n"); + exit(0); + } + /* OK, now we have selected a reasonable hyperslab (all done) */ +} + +/** + H5PartGetView: Allows you to query the current view. Start and End + will be -1 if there is no current view established. + Use H5PartHasView to see if the view is smaller than the + total dataset. + \param f A FileHandle opened by H5PartOpenFile() or H5PartOpenFileParallel(). + \param start start particle + \param end end particle + \returns the number of elements in the view + */ +int H5PartGetView(H5PartFile *f,long long *start,long long *end){ + long long range[2]; + range[0]=(f->viewstart>=0)?f->viewstart:0; + range[1]=(f->viewend>=0)?f->viewend:H5PartGetNumParticles(f); + if(start) { + *start=range[0]; + } + if(end) { + *end=range[1]; + } + /* we could return the number of elements in the View as a convenience */ + return range[1]-range[0]; +} + +/** + H5SetCanonicalView: If it is too tedious to manually set the + start and end coordinates for a view, the H5SetCanonicalView() + will automatically select an appropriate domain decomposition of + the data arrays for the degree of parallelism and set the "view" + accordingly. + \param f A FileHandle opened by H5PartOpenFile() or H5PartOpenFileParallel(). + \returns void +*/ +void H5PartSetCanonicalView(H5PartFile *f){ + /* if a read_only file, search for on-disk canonical view */ + /* if this view does not exist, then if MPI, subdivide by numprocs */ + /* else, "unset" any existing View */ + if(f->mode != H5PART_READ){ + fprintf(stderr,"H5PartSetCanonicalView(): Views do not make sense for write-only files. It is meant to be used for read-only files. (maybe later this will change)\n"); + return; + } + H5PartSetView(f,-1,-1); /* unset the view */ +#ifdef PARALLEL_IO + if(f->timegroup<0){ + H5PartSetStep(f,0); /* set to first step in file */ + } + /* + now lets query the attributes for this group to see if there is + a 'pnparticles' group that contains the offsets for the processors. + */ + + if(H5PartReadStepAttrib(f,"pnparticles",f->pnparticles)<0){ /* try to read pnparticles right off of the disk */ + /* automatically subdivide the view into NP mostly equal pieces */ + int i; + long long total=0, n = H5PartGetNumParticles(f); + n/=f->nprocs; + f->pnparticles[0]=n; + total=n; + for(i=1;inprocs;i++){ + f->pnparticles[i]=n; + total+=n; + } + } + { + int i; + long long total = 0, n = H5PartGetNumParticles(f); + /* now we set the view for this processor */ + for(i=0;imyproc;i++){ + total+=f->pnparticles[i]; + } + H5PartSetView(f,total,total+f->pnparticles[f->myproc]-1); + } +#endif + /* the canonical view is to see everything if this is serial + so there is nothing left to do */ +} + +/** + H5PartReadDataFloat64: This reads in an individual array from a + particlar timestep. + If you haven't selected a particular timestep, it will pick + the current one. + \param f A FileHandle opened by H5PartOpenFile() or H5PartOpenFileParallel(). + \param name A null-terminated string for the name of the array. When retrieving datasets from disk, you ask for them by name. There are no restrictions on naming of arrays, but it is useful to arrive at some common naming convention when sharing data with other groups. + \param array A buffer to read array of particle data. The datatype for elements in the buffer is implicit in the name of the subroutine call. + \returns 1 on success, 0 on failure. +*/ +int H5PartReadDataFloat64(H5PartFile *f,char *name,double *array){ + hid_t space,memspace,dataset,datatype; + if(!f->timegroup) H5PartSetStep(f,f->timestep); /* choose current step */ + dataset=H5Dopen(f->timegroup,name); + space = H5PartGetDiskShape(f,dataset); /* gets space with selection if view is set */ + memspace = H5PartGetMemShape(f,dataset); + /* datatype=H5Dget_type(dataset); */ + H5Dread(dataset, /* handle for the dataset */ + H5T_NATIVE_DOUBLE, /* the datatype we use in memory + you can change it to FLOAT if you want */ + memspace, /* shape/size of data in memory (the complement to disk hyperslab) */ + space, /* shape/size of data on disk (get hyperslab if needed) */ + H5P_DEFAULT,/* ignore... its for parallel reads */ + array); /* the data array we are reading into */ + if(space!=H5S_ALL) H5Sclose(space); /* release data shape handle */ + if(memspace!=H5S_ALL) H5Sclose(memspace); + H5Dclose(dataset); /* release the dataset handle */ + return 1; +} + +/** + H5PartReadDataInt64: This reads in an individual array from a + particlar timestep. + If you haven't selected a particular timestep, it will pick + the current one. + \param f A FileHandle opened by H5PartOpenFile() or H5PartOpenFileParallel(). + \param name A null-terminated string for the name of the array. When retrieving datasets from disk, you ask for them by name. There are no restrictions on naming of arrays, but it is useful to arrive at some common naming convention when sharing data with other groups. + \param array A buffer to read array of particle data. The datatype for elements in the buffer is implicit in the name of the subroutine call. + \returns 1 on success, 0 on failure. +*/ +int H5PartReadDataInt64(H5PartFile *f,char *name,long long *array){ + hid_t space,memspace,dataset,datatype; + if(!f->timegroup) H5PartSetStep(f,f->timestep); /* choose a step */ + dataset=H5Dopen(f->timegroup,name); + space = H5PartGetDiskShape(f,dataset); /* H5Dget_space(dataset); */ + memspace = H5PartGetMemShape(f,dataset); + /* datatype=H5Dget_type(dataset); */ + H5Dread(dataset, /* handle for the dataset */ + H5T_NATIVE_INT64, /* the datatype we use in memory + you can change it to FLOAT if you want */ + memspace, /* shape/size of data in memory (complement to disk hyperslab) */ + space, /* shape/size of data on disk (currently get all) */ + H5P_DEFAULT,/* ignore... its for parallel reads */ + array); /* the data array we are reading into */ + if(space!=H5S_ALL) H5Sclose(space); /* release data shape handle */ + if(memspace!=H5S_ALL) H5Sclose(memspace); + H5Dclose(dataset); /* release the dataset handle */ + return 1; /* totally bogus */ +} + +/** + H5PartReadParticleStep: This is the mongo read function that + pulls in all of the data for a given timestep in one shot. + It also takes the timestep as an argument and will call + H5PartSetStep() internally so that you don't have to + make that call separately. + See also: H5PartReadArray() if you want to just + read in one of the many arrays. +*/ +int H5PartReadParticleStep(H5PartFile *f, + int step, + double *x,double *y,double *z, + double *px,double *py,double *pz, + long long *id){ + H5PartSetStep(f,step); + /* or smuggle it into the array names */ + H5PartReadDataFloat64(f,"x",x); + H5PartReadDataFloat64(f,"y",y); + H5PartReadDataFloat64(f,"z",z); + H5PartReadDataFloat64(f,"px",px); + H5PartReadDataFloat64(f,"py",py); + H5PartReadDataFloat64(f,"pz",pz); + H5PartReadDataInt64(f,"id",id); + return 1; +} + +/**************** File Stashing Interfaces *************************/ +/** + H5NameExists: Private +*/ + +herr_t H5NameExists(hid_t group_id, + const char *member_name, + void *v){ + if(!strcmp(member_name,(char*)v)) return 1; + else return 0; +} + +/** + H5PartFileHasName: Private +*/ +int H5PartFileHasName(H5PartFile *f, + char *dir,char *name){ + if(H5Giterate(f->file, /* hid_t loc_id, */ + dir, /*const char *name, */ + NULL, /* int *idx, */ + H5NameExists, + (void*)name)<0) + return 1; + else + return 0; +} + +/** + NOTE: it's missing the read! + H5PartStashFile: stash a file in the hdf5 file. If it does not exists a UserData + and a Files group will be created. + /param f A FileHandle opened by H5PartOpenFile() or H5PartOpenFileParallel(). + /param filename A null-terminated string for the name of the filename. + /return 1 on succes, 0 on failure. + +*/ +int H5PartStashFile(H5PartFile *f,char *filename){ + hid_t udata=0,files=0,rgroup=0; + FILE *file; + int returnvalue=0; + + rgroup = H5Gopen(f->file,"/"); + if(H5PartFileHasName(f,"/","UserData")){ + udata = H5Gopen(rgroup,"UserData"); + if(H5PartFileHasName(f,"UserData","Files")){ + files=H5Gopen(udata,"Files"); + } + else { + files = H5Gcreate(udata,"Files",0); + } + } + else { + /* must create the UserData group */ + udata = H5Gcreate(rgroup,"UserData",0); + files = H5Gcreate(udata,"Files",0); + } + if(rgroup) H5Gclose(rgroup); rgroup=0; + if(udata) H5Gclose(udata); udata=0; + /* now we stash the file into the files subdir */ + /* first make sure there isn't a file with the same + name already there? */ + file = fopen(filename,"r"); + if(file){ + hsize_t sz; + char *buffer,*dsname,*dsbuffer; + hid_t fspace,fdata; + fseek(file,0,SEEK_END); + sz = ftell(file); + buffer=(char*)malloc(sz); + fspace=H5Screate_simple(1,&sz,0); + /* need to strip off the /'s from the filename before creating dataset */ + dsbuffer = (char*)malloc(strlen(filename)); + strcpy(dsbuffer,filename); + dsname = strrchr(dsbuffer,'/'); + if(!dsname) dsname=dsbuffer; + fdata=H5Dcreate(files,dsname,H5T_NATIVE_CHAR,fspace,H5P_DEFAULT); + H5Dwrite(fdata,H5T_NATIVE_CHAR,H5S_ALL,H5S_ALL,H5P_DEFAULT,buffer); + H5Dclose(fdata); + H5Sclose(fspace); + fclose(file); + free(buffer); free(dsbuffer); + returnvalue = 1; /* success */ + } + H5Gclose(files); + return returnvalue; +} + +/** + H5PartUnstashFile: unstash a file in the hdf5 file. + /param f A FileHandle opened by H5PartOpenFile() or H5PartOpenFileParallel(). + /param filename A null-terminated string for the name of the filename. + /param The path to the directory to create the file. + /return 1 on succes, 0 on failure. + +*/ + + +int H5PartUnstashFile(H5PartFile *f,char *filename, char *outputpath){ + if(H5PartFileHasName(f,"/","UserData") && + H5PartFileHasName(f,"/UserData","Files") && + H5PartFileHasName(f,"/UserData/Files",filename)){ + /* extract the datafile from the HDF5 file */ + hid_t fdata,fspace,fgroup; + hsize_t sz; + char *buffer,*outname; + FILE *file; + fgroup = H5Gopen(f->file,"/UserData/Files"); + fdata = H5Dopen(fgroup,filename); + fspace = H5Dget_space(fdata); + sz = H5Sget_simple_extent_npoints(fspace); + buffer = (char*)malloc(sz); + H5Dread(fdata,H5T_NATIVE_CHAR,H5S_ALL,H5S_ALL,H5P_DEFAULT,buffer); + outname = (char*)malloc(strlen(filename) + 8 + outputpath?strlen(outputpath):0); + if(outputpath && strlen(outputpath)>0){ + if(outputpath[strlen(outputpath)-1]!='/') sprintf(outname,"%s/%s",outputpath,filename); + else sprintf(outname,"%s%s",outputpath,filename); + } + else { + strcpy(outname,filename); + } + file = fopen(outname,"w"); + fwrite(buffer,1,sz,file); + fclose(file); + free(buffer); + free(outname); + H5Sclose(fspace); + H5Dclose(fdata); + H5Gclose(fgroup); + return 1; + } + return 0; +} + +/** + H5PartGetNumStashFiles: returns the number of stashed files. + \param f A FileHandle opened by H5PartOpenFile() or H5PartOpenFileParallel(). + \return Number of stashed files. +*/ + +int H5PartGetNumStashFiles(H5PartFile *f){ + hsize_t retval; + if(H5PartFileHasName(f,"/","UserData") && + H5PartFileHasName(f,"/UserData","Files")){ + hid_t fgroup; + /* we will use an iterator for this to count stash files */ + fgroup = H5Gopen(f->file,"/UserData/Files"); + H5Gget_num_objs(fgroup,&retval); + return retval; + } + else return 0; +} + +int H5PartFileGetStashFileName(H5PartFile *f,int nameindex,char *filename,int maxnamelen){ + return 1; +} + diff --git a/src/H5Part.cc b/src/H5Part.cc new file mode 100755 index 0000000..5f91914 --- /dev/null +++ b/src/H5Part.cc @@ -0,0 +1,234 @@ +#include +#include +#include +#include +#include "H5Part.hh" + +#include +#include +#include +#include +using namespace std; + +#ifdef READTEST + +/* + A simple regression test that shows how you use this API + to write and read multi-timestep files of particle data. +*/ +#ifdef PARALLEL_IO + + +#else + +int main(int argc,char **argv){ + const int sz=5; + double x[sz],y[sz],z[sz]; + long long id[sz]; + char name[64]; + H5PartFile *file; + int i,t,nt,nds,myproc; + int nfattribs,nsattribs; + + const string fn = string(argv[1]); + + cout << "Open " << fn << endl; + + + file= H5PartOpenFile(fn.c_str(),H5PART_READ); + nt=H5PartGetNumSteps(file); /* get number of steps in file */ + H5PartSetStep(file,0); + nds=H5PartGetNumDatasets(file); /* get number of datasets in timestep 0 */ + + + + puts("\n\n==============================="); + for(i=0;ifile); + H5PartSetStep(file,t); /* must set the current timestep in file */ + H5PartSetNumParticles(file,sz); /* then set number of particles to store */ + /* now write different tuples of data into this timestep of the file */ + H5PartWriteDataFloat64(file,"x",x); + H5PartWriteDataFloat64(file,"y",y); + H5PartWriteDataFloat64(file,"z",z); + H5PartWriteDataInt64(file,"id",id); + } + printf("AllDone p[%u]\n",myproc); + H5PartCloseFile(file); + MPI_Barrier(comm); + printf("p[%u:%u] : OK, close file and reopen for reading \n",myproc,nprocs); + if(myproc==0){ /* now only proc 0 reads the file serially */ + file= H5PartOpenFileSerial("parttest.h5",H5PART_READ); + nt=H5PartGetNumSteps(file); /* get number of steps in file */ + H5PartSetStep(file,0); + nds=H5PartGetNumDatasets(file); /* get number of datasets in timestep 0 */ + + puts("\n\n==============================="); + for(i=0;i0){ + char attrname[32]; + H5PartGetStepAttribInfo(file,0,attrname,32,0,0); + printf("First Attrib name is [%s]\n",attrname); + } + H5PartReadParticleStep(file,t,/* do a mongo read of all data this step */ + x,y,z,x,y,z,id); + printf("\tid\t\tx\t\ty\t\tz\n"); + puts("\t----------------------------------------------------"); + for(i=0;i +#include +#ifdef PARALLEL_IO +#include +#endif + +/** + /struct + H5PartFile: This is an essentially opaque datastructure that + acts as the filehandle for all practical purposes. + It is created by H5PartOpenFile() and destroyed by + H5PartCloseFile(). +*/ +typedef struct H5PartFile { + hid_t file; + int timestep; + + hid_t timegroup; + hid_t properties; + hsize_t nparticles; + hid_t shape; + unsigned mode; + int maxstep; + hid_t xfer_prop,create_prop,access_prop; + hid_t diskshape,memshape; /* for parallel I/O (this is on-disk) H5S_ALL + if serial I/O */ + long long viewstart,viewend; /* -1 if no view is available: A "view" looks at a subset of the data. */ + +#ifdef PARALLEL_IO + long long *pnparticles; /* the number of particles in each processor. + With respect to the "VIEW", these numbers + can be regarded as non-overlapping subsections + of the particle array stored in the file. + So they can be used to compute the offset of + the view for each processor */ + MPI_Comm comm; + int nprocs,myproc; +#endif +}H5PartFile; + +#define H5PART_READ 0x01 +#define H5PART_WRITE 0x02 +#define H5PART_APPEND 0x03 + +/*========== File Opening/Closing ===============*/ +#ifdef PARALLEL_IO +#include +H5PartFile *H5PartOpenFileParallel(const char *filename, + unsigned flags, + MPI_Comm communicator); +#endif +#define H5PartOpenFileSerial(x,y) H5PartOpenFile(x,y) + +H5PartFile *H5PartOpenFile(const char *filename, /* name of datafile */ + unsigned flags); /* H5PART_READ | H5PART_WRITE | H5PART_APPEND*/ +int H5PartFileIsValid(H5PartFile *f); +void H5PartCloseFile(H5PartFile *f); + + +/*============== File Writing Functions ==================== */ +void H5PartSetNumParticles(H5PartFile *f,long long nparticles); +int H5PartWriteDataFloat64(H5PartFile *f,char *name,double *array); +int H5PartWriteDataInt64(H5PartFile *f,char *name,long long *array); + +/*================== File Reading Routines =================*/ +void H5PartSetStep(H5PartFile *f, /* file handle */ + int step); /* current timestep to select (0 to n-1) */ +int H5PartGetNumSteps(H5PartFile *f); +int H5PartGetNumDatasets(H5PartFile *f); +int H5PartGetDatasetName(H5PartFile *f,int indx,char *name,int maxlen); + +/* ANTINO KIM */ +void H5PartGetDatasetInfo(H5PartFile *f, int idx, char *name, size_t maxnamelen, hid_t *type, long long *nelem); +hid_t H5PartNormType(hid_t type); + + +long long H5PartGetNumParticles(H5PartFile *f); +void H5PartSetView(H5PartFile *f,long long start,long long end); +#define H5PartResetView(f) H5PartSetView(f,-1,-1) +#define H5PartHasView(f) ((f->viewstart<0||f->viewend<0)?0:1) +int H5PartGetView(H5PartFile *f,long long *start,long long *end); +void H5PartSetCanonicalView(H5PartFile *f); + +int H5PartReadDataFloat64(H5PartFile *f, + char *name, /* name of the array to read + "x"=position in x direction (y,z) + "vx"=velocity in x directio (y,z) + "px"=position in x dir (y,z) */ + double *array); /* array to read data into */ +int H5PartReadDataInt64(H5PartFile *f, + char *name, /* name of the array to read + "x"=position in x direction (y,z) + "vx"=velocity in x directio (y,z) + "px"=position in x dir (y,z) */ + long long *array); /* array to read data into */ + +/* the following is a back-door for extensions to the data writing */ +#if 0 +int H5PartReadData(H5PartFile *f,char *name,void *array,hid_t type); +int H5PartWriteData(H5PartFile *f,char *name,void *array,hid_t type); +#endif +int H5PartReadParticleStep(H5PartFile *f, /* filehandle */ + int step, /* selects timestep to read from*/ + double *x,double *y,double *z, /* particle positions */ + double *px,double *py,double *pz, /* particle momenta */ + long long *id); /* and phase */ +/**********==============Attributes Interface============***************/ +/* currently there is file attributes: Attributes bound to the file + and step attributes which are bound to the current timestep. You + must set the timestep explicitly before writing the attributes (just + as you must do when you write a new dataset. Currently there are no + attributes that are bound to a particular data array, but this could + easily be done if required. +*/ +int H5PartWriteStepAttrib(H5PartFile *f,char *name, + hid_t type,void *attrib,int nelem); +int H5PartWriteFileAttrib(H5PartFile *f,char *name, + hid_t type,void *attrib,int nelem); +int H5PartWriteAttrib(H5PartFile *f,char *name, + hid_t type,void *attrib,int nelem); /* this should be deprecated */ + +int H5PartWriteFileAttribString(H5PartFile *f,char *name, + char *attrib); +int H5PartWriteStepAttribString(H5PartFile *f,char *name, + char *attrib); +int H5PartGetNumStepAttribs(H5PartFile *f); /* for current filestep */ +int H5PartGetNumFileAttribs(H5PartFile *f); +void H5PartGetStepAttribInfo(H5PartFile *f,int idx, + char *name,size_t maxnamelen, + hid_t *type,int *nelem); +void H5PartGetFileAttribInfo(H5PartFile *f,int idx, + char *name,size_t maxnamelen, + hid_t *type,int *nelem); +int H5PartReadStepAttrib(H5PartFile *f,char *name,void *data); +void H5PartReadAttrib(H5PartFile *f,char *name,void *data); +int H5PartReadFileAttrib(H5PartFile *f, char *name,void *data); + + +/**************** File Stashing Interfaces *************************/ +int H5PartStashFile(H5PartFile *f,char *filename); +int H5PartUnstashFile(H5PartFile *f, char *filename, char *outputpath); /* outputpath can be null for cwd */ +int H5PartGetNumStashFiles(H5PartFile *f); +int H5PartFileGetStashFileName(H5PartFile *f,int nameindex,char *filename,int maxnamelen); + + +#endif diff --git a/src/H5Part.hh b/src/H5Part.hh new file mode 100755 index 0000000..842e2ae --- /dev/null +++ b/src/H5Part.hh @@ -0,0 +1,10 @@ +#ifndef _H5Part_HH_ +#define _H5Part_HH_ + +extern "C" { +#include "H5Part.h" +} + +/* Add any C++ specific extensions/implementations/wrappers here */ + +#endif diff --git a/src/H5Part.inc b/src/H5Part.inc new file mode 100644 index 0000000..60d6698 --- /dev/null +++ b/src/H5Part.inc @@ -0,0 +1,213 @@ +! Declaration of subroutines for Fortran Bindings +! open/close interface + INTEGER*8 h5pt_openr +! FUNCTION h5pt_openr (file) +! in CHARACTER file(*) : the filename to open for reading + + INTEGER*8 h5pt_openw +! FUNCTION h5pt_openw(file) +! in CHARACTER file(*) : the filename to open for writing + + INTEGER*8 h5pt_openr_par +! FUNCTION h5pt_openr_par(file,mpi_communicator) +! in CHARACTER file(*) : the filename to open for writing +! in INTEGER mpi_communicator : the MPI_Communicator used by the program +! returns INTEGER*8 : and open filehandle for parallel reads + + INTEGER*8 h5pt_openw_par +! FUNCTION h5pt_openw_par(file,mpi_communicator) +! in CHARACTER file(*) +! in INTEGER mpi_communicator +! returns INTEGER*8 : an open filehandle for parallel writes + + EXTERNAL h5pt_close +! SUBROUTINE h5pt_close(filehandle) +! in INTEGER*8 filehandle : close this open filehandle + + INTEGER h5pt_isvalid +! FUNCTION h5pt_isvalid(filehandle) +! in INTEGER*8 filehandle +! returns INTEGER : 1 if the file is valid, 0 if it is not + +!==============Writing and Setting Dataset info======== +! c h5pt_readstep(in INTEGER*8 filehandle,INTEGER step, +! REAL*8 x(*),REAL*8 y(*),REAL*8 z(*), +! REAL*8 px(*),REAL*8 py(*),REAL*8 pz(*), +! INTEGER*8 id(*)) + + EXTERNAL h5pt_setnpoints +! SUBROUTINE h5pt_setnpoints(filehandle,npoints) +! in INTEGER*8 filehandle +! in INTEGER*8 npoints : The number of particles on *this* processor + + EXTERNAL h5pt_setstep +! SUBROUTINE h5pt_setstep(filehandle,step) +! in INTEGER*8 filehandle +! in INTEGER step : Set the current timestep in the file to this + + EXTERNAL h5pt_writedata_r8 +! SUBROUTINE h5pt_writedata_r8(filehandle,name,data) +! in INTEGER*8 filehandle +! in CHARACTER name(*) : The name of the data we are writing +! eg. "X" or "Y" or "PX" etc... +! in REAL*8 data(*) : The dataarray to write. The number of +! elements is presumably set earlier with +! h5pt_setnpoints(f,npoints) + + EXTERNAL h5pt_writedata_i8 +! SUBROUTINE h5pt_writedata_i8(filehandle,name,data) +! in INTEGER*8 filehandle +! in CHARACTER name(*) +! in INTEGER*8 data(*) +!==============Reading Data Characteristics============ + + INTEGER h5pt_getnsteps +! FUNCTION h5pt_getnsteps(filehandle) +! in INTEGER*8 filehandle +! returns INTEGER : number of timesteps stored in the file + + INTEGER h5pt_getndatasets +! FUNCTION h5pt_getndatasets(filehandle) +! in INTEGER*8 filehandle +! returns INTEGER*8 : number of datasets stored per timestep + + INTEGER*8 h5pt_getnpoints +! FUNCTION h5pt_getnpoints(filehandle) +! in INTEGER*8 filehandle +! returns INTEGER*8 : total number of points in this timestep +! If a "view" has been set using h5pt_setview() +! then it returns the number of points that are +! in the current view. + +! probably should get index from name + INTEGER h5pt_getdatasetname +! FUNCTION h5pt_getdatasetname(filehandle,index,name) +! in INTEGER*8 filehandle +! in INTEGER index : Index for a given dataset name +! out CHARACTER name(*) returns the name of the dataset at that index + +!=============Setting and getting views================ + EXTERNAL h5pt_setview +! SUBROUTINE h5pt_setview(filehandle,start,end) +! in INTEGER*8 filehandle +! in INTEGER*8 start : offset of the first particle in the view +! in INTEGER*8 end : offset of the first particle after the end of the view + + EXTERNAL h5pt_resetview +! SUBROUTINE h5pt_resetview(filehandle) +! in INTEGER*8 filehandle : reset the view on this filehandle to default + + INTEGER h5pt_hasview +! FUNCTION h5pt_hasview(filehandle) +! in INTEGER*8 filehandle +! returns INTEGER : 1 if a view is in place and 0 if the view is default + + EXTERNAL h5pt_getview +! FUNCTION h5pt_getview(filehandle,start,end) +! in INTEGER*8 filehandle +! out INTEGER*8 start : offset of first particle in the view +! out INTEGER*8 end : offset of first particle beyond the current view + +!==============Reading Data========================= + INTEGER h5pt_readdata_r8 +! FUNCTION h5pt_readdata_r8(filehandle,name,data) +! in INTEGER*8 filehandle +! in CHARACTER name(*) : The name of the data we are writing +! eg. "X" or "Y" or "PX" etc... +! out REAL*8 data(*) : The dataarray to read. Number of points +! read is either the number within the view set +! by h5pt_setview() or the default (the total +! number of particles in the file. +! returns INTEGER : 1 for success, 0 for failure + INTEGER h5pt_readdata_i8 +! FUNCTION h5pt_readdata_i8(filehandle,name,data) +! in INTEGER*8 filehandle +! in CHARACTER name(*) : The name of the data we are writing +! eg. "X" or "Y" or "PX" etc... +! out REAL*8 data(*) : The dataarray to read. Number of points +! read is either the number within the view set +! by h5pt_setview() or the default (the total +! number of particles in the file. +! returns INTEGER : 1 for success, 0 for failure +! =================== Attributes ================ + +! Attributes +! writing + INTEGER h5pt_writefileattrib_r8 +! FUNCTION h5pt_writefileattrib_r8(filehandle,name,attrib,nelem) +! in INTEGER*8 filehandle : The filehandle +! in CHARACTER name(*) : The name of the attribute +! in REAL*8 attrib(*) : The array of data to write into the attribute +! in INTEGER nelem : Number of elements in the attrib array + + INTEGER h5pt_writefileattrib_i8 +! FUNCTION h5pt_writefileattrib_i8(filehandle,name,attrib,nelem) +! in INTEGER*8 filehandle : The filehandle +! in CHARACTER name(*) : The name of the attribute +! in INTEGER*8 attrib(*) : The array of data to write into the attribute +! in INTEGER nelem : Number of elements in the attrib array + + INTEGER h5pt_writefileattrib_string +! FUNCTION h5pt_writefileattrib_string(filehandle,name,string) +! in INTEGER*8 filehandle : The filehandle +! in CHARACTER name(*) : The name of the attribute +! in CHARACTER*8 attrib(*) : The array of data to write into the attribute + + INTEGER h5pt_writestepattrib_r8 +! FUNCTION h5pt_writestepattrib_r8(filehandle,name,attrib,nelem) +! in INTEGER*8 filehandle : The filehandle +! in CHARACTER name(*) : The name of the attribute +! in INTEGER*8 attrib(*) : The array of data to write into the attribute +! in INTEGER nelem : Number of elements in the attrib array + + INTEGER h5pt_writestepattrib_i8 +! FUNCTION h5pt_writestepattrib_i8(filehandle,name,attrib,nelem) +! in INTEGER*8 filehandle : The filehandle +! in CHARACTER name(*) : The name of the attribute +! in INTEGER*8 attrib(*) : The array of data to write into the attribute +! in INTEGER nelem : Number of elements in the attrib array + + INTEGER h5pt_writestepattrib_string +! FUNCTION h5pt_writestepattrib_string(filehandle,name,string) +! in INTEGER*8 filehandle : The filehandle +! in CHARACTER name(*) : The name of the attribute +! in CHARACTER*8 attrib(*) : The array of data to write into the attribute + +! reading attributes ************************* + INTEGER h5pt_getnstepattribs +! FUNCTION h5pt_getnstepattribs(filehandle) +! in INTEGER*8 filehandle : The filehandle +! returns INTEGER : number of attributes bound to this particular step + + INTEGER h5pt_getnfileattribs +! FUNCTION h5pt_getnfileattribs(filehandle) +! in INTEGER*8 filehandle : The filehandle +! returns INTEGER : number of attributes bound to the file + + INTEGER h5pt_getstepattribinfo +! FUNCTION h5pt_getstepattribinfo(filehandle,idx,attribname,nelem) +! in INTEGER*8 filehandle : The filehandle +! in INTEGER idx : index of the attribute being queried +! out CHARACTER name(*) : The name of the attribute +! out INTEGER nelem : Number of elements in the attrib array + + + INTEGER h5pt_getfileattribinfo +! FUNCTION h5pt_getfileattribinfo(filehandle,idx,attribname,nelem) +! in INTEGER*8 filehandle : The filehandle +! in INTEGER idx : index of the attribute being queried +! out CHARACTER name(*) : The name of the attribute +! out INTEGER nelem : Number of elements in the attrib array + + INTEGER h5pt_readstepattrib +! FUNCTION h5pt_readstepattrib(filehandle,name,data) +! in INTEGER*8 filehandle +! in CHARACTER attributename(*) : name of the attribute to read +! out data(*) : the attribute data will be read into this array + + INTEGER h5pt_readfileattrib +! FUNCTION h5pt_readfileattrib(filehandle,name,data) +! in INTEGER*8 filehandle +! in CHARACTER attributename(*) : name of the attribute to read +! out data(*) : the attribute data will be read into this array + diff --git a/src/H5Part.py b/src/H5Part.py new file mode 100644 index 0000000..5fc65a0 --- /dev/null +++ b/src/H5Part.py @@ -0,0 +1,556 @@ +# This file was created automatically by SWIG 1.3.29. +# Don't modify this file, modify the SWIG interface instead. +# This file is compatible with both classic and new-style classes. + +import _H5Part +import new +new_instancemethod = new.instancemethod +def _swig_setattr_nondynamic(self,class_type,name,value,static=1): + if (name == "thisown"): return self.this.own(value) + if (name == "this"): + if type(value).__name__ == 'PySwigObject': + self.__dict__[name] = value + return + method = class_type.__swig_setmethods__.get(name,None) + if method: return method(self,value) + if (not static) or hasattr(self,name): + self.__dict__[name] = value + else: + raise AttributeError("You cannot add attributes to %s" % self) + +def _swig_setattr(self,class_type,name,value): + return _swig_setattr_nondynamic(self,class_type,name,value,0) + +def _swig_getattr(self,class_type,name): + if (name == "thisown"): return self.this.own() + method = class_type.__swig_getmethods__.get(name,None) + if method: return method(self) + raise AttributeError,name + +def _swig_repr(self): + try: strthis = "proxy of " + self.this.__repr__() + except: strthis = "" + return "<%s.%s; %s >" % (self.__class__.__module__, self.__class__.__name__, strthis,) + +import types +try: + _object = types.ObjectType + _newclass = 1 +except AttributeError: + class _object : pass + _newclass = 0 +del types + + +class H5PartFile(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, H5PartFile, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, H5PartFile, name) + __repr__ = _swig_repr + __swig_setmethods__["file"] = _H5Part.H5PartFile_file_set + __swig_getmethods__["file"] = _H5Part.H5PartFile_file_get + if _newclass:file = property(_H5Part.H5PartFile_file_get, _H5Part.H5PartFile_file_set) + __swig_setmethods__["timestep"] = _H5Part.H5PartFile_timestep_set + __swig_getmethods__["timestep"] = _H5Part.H5PartFile_timestep_get + if _newclass:timestep = property(_H5Part.H5PartFile_timestep_get, _H5Part.H5PartFile_timestep_set) + __swig_setmethods__["timegroup"] = _H5Part.H5PartFile_timegroup_set + __swig_getmethods__["timegroup"] = _H5Part.H5PartFile_timegroup_get + if _newclass:timegroup = property(_H5Part.H5PartFile_timegroup_get, _H5Part.H5PartFile_timegroup_set) + __swig_setmethods__["properties"] = _H5Part.H5PartFile_properties_set + __swig_getmethods__["properties"] = _H5Part.H5PartFile_properties_get + if _newclass:properties = property(_H5Part.H5PartFile_properties_get, _H5Part.H5PartFile_properties_set) + __swig_setmethods__["nparticles"] = _H5Part.H5PartFile_nparticles_set + __swig_getmethods__["nparticles"] = _H5Part.H5PartFile_nparticles_get + if _newclass:nparticles = property(_H5Part.H5PartFile_nparticles_get, _H5Part.H5PartFile_nparticles_set) + __swig_setmethods__["shape"] = _H5Part.H5PartFile_shape_set + __swig_getmethods__["shape"] = _H5Part.H5PartFile_shape_get + if _newclass:shape = property(_H5Part.H5PartFile_shape_get, _H5Part.H5PartFile_shape_set) + __swig_setmethods__["mode"] = _H5Part.H5PartFile_mode_set + __swig_getmethods__["mode"] = _H5Part.H5PartFile_mode_get + if _newclass:mode = property(_H5Part.H5PartFile_mode_get, _H5Part.H5PartFile_mode_set) + __swig_setmethods__["maxstep"] = _H5Part.H5PartFile_maxstep_set + __swig_getmethods__["maxstep"] = _H5Part.H5PartFile_maxstep_get + if _newclass:maxstep = property(_H5Part.H5PartFile_maxstep_get, _H5Part.H5PartFile_maxstep_set) + __swig_setmethods__["xfer_prop"] = _H5Part.H5PartFile_xfer_prop_set + __swig_getmethods__["xfer_prop"] = _H5Part.H5PartFile_xfer_prop_get + if _newclass:xfer_prop = property(_H5Part.H5PartFile_xfer_prop_get, _H5Part.H5PartFile_xfer_prop_set) + __swig_setmethods__["create_prop"] = _H5Part.H5PartFile_create_prop_set + __swig_getmethods__["create_prop"] = _H5Part.H5PartFile_create_prop_get + if _newclass:create_prop = property(_H5Part.H5PartFile_create_prop_get, _H5Part.H5PartFile_create_prop_set) + __swig_setmethods__["access_prop"] = _H5Part.H5PartFile_access_prop_set + __swig_getmethods__["access_prop"] = _H5Part.H5PartFile_access_prop_get + if _newclass:access_prop = property(_H5Part.H5PartFile_access_prop_get, _H5Part.H5PartFile_access_prop_set) + __swig_setmethods__["diskshape"] = _H5Part.H5PartFile_diskshape_set + __swig_getmethods__["diskshape"] = _H5Part.H5PartFile_diskshape_get + if _newclass:diskshape = property(_H5Part.H5PartFile_diskshape_get, _H5Part.H5PartFile_diskshape_set) + __swig_setmethods__["memshape"] = _H5Part.H5PartFile_memshape_set + __swig_getmethods__["memshape"] = _H5Part.H5PartFile_memshape_get + if _newclass:memshape = property(_H5Part.H5PartFile_memshape_get, _H5Part.H5PartFile_memshape_set) + __swig_setmethods__["viewstart"] = _H5Part.H5PartFile_viewstart_set + __swig_getmethods__["viewstart"] = _H5Part.H5PartFile_viewstart_get + if _newclass:viewstart = property(_H5Part.H5PartFile_viewstart_get, _H5Part.H5PartFile_viewstart_set) + __swig_setmethods__["viewend"] = _H5Part.H5PartFile_viewend_set + __swig_getmethods__["viewend"] = _H5Part.H5PartFile_viewend_get + if _newclass:viewend = property(_H5Part.H5PartFile_viewend_get, _H5Part.H5PartFile_viewend_set) + def __init__(self, *args): + this = _H5Part.new_H5PartFile(*args) + try: self.this.append(this) + except: self.this = this + __swig_destroy__ = _H5Part.delete_H5PartFile + __del__ = lambda self : None; +H5PartFile_swigregister = _H5Part.H5PartFile_swigregister +H5PartFile_swigregister(H5PartFile) + +H5PART_READ = _H5Part.H5PART_READ +H5PART_WRITE = _H5Part.H5PART_WRITE +H5PART_APPEND = _H5Part.H5PART_APPEND +H5PartOpenFile = _H5Part.H5PartOpenFile +H5PartFileIsValid = _H5Part.H5PartFileIsValid +H5PartCloseFile = _H5Part.H5PartCloseFile +H5PartSetNumParticles = _H5Part.H5PartSetNumParticles +H5PartWriteDataFloat64 = _H5Part.H5PartWriteDataFloat64 +H5PartWriteDataInt64 = _H5Part.H5PartWriteDataInt64 +H5PartSetStep = _H5Part.H5PartSetStep +H5PartGetNumSteps = _H5Part.H5PartGetNumSteps +H5PartGetNumDatasets = _H5Part.H5PartGetNumDatasets +H5PartNormType = _H5Part.H5PartNormType +H5PartGetNumParticles = _H5Part.H5PartGetNumParticles +H5PartSetView = _H5Part.H5PartSetView +H5PartGetView = _H5Part.H5PartGetView +H5PartSetCanonicalView = _H5Part.H5PartSetCanonicalView +H5PartReadDataFloat64 = _H5Part.H5PartReadDataFloat64 +H5PartReadDataInt64 = _H5Part.H5PartReadDataInt64 +H5PartReadParticleStep = _H5Part.H5PartReadParticleStep +H5PartWriteStepAttrib = _H5Part.H5PartWriteStepAttrib +H5PartWriteFileAttrib = _H5Part.H5PartWriteFileAttrib +H5PartWriteAttrib = _H5Part.H5PartWriteAttrib +H5PartWriteFileAttribString = _H5Part.H5PartWriteFileAttribString +H5PartWriteStepAttribString = _H5Part.H5PartWriteStepAttribString +H5PartGetNumStepAttribs = _H5Part.H5PartGetNumStepAttribs +H5PartGetNumFileAttribs = _H5Part.H5PartGetNumFileAttribs +H5PartReadStepAttrib = _H5Part.H5PartReadStepAttrib +H5PartReadAttrib = _H5Part.H5PartReadAttrib +H5PartReadFileAttrib = _H5Part.H5PartReadFileAttrib +H5PartStashFile = _H5Part.H5PartStashFile +H5PartUnstashFile = _H5Part.H5PartUnstashFile +H5PartGetNumStashFiles = _H5Part.H5PartGetNumStashFiles +H5PartFileGetStashFileName = _H5Part.H5PartFileGetStashFileName +H5_CONVERT_DENORMAL_FLOAT = _H5Part.H5_CONVERT_DENORMAL_FLOAT +H5_DEV_T_IS_SCALAR = _H5Part.H5_DEV_T_IS_SCALAR +H5_GETTIMEOFDAY_GIVES_TZ = _H5Part.H5_GETTIMEOFDAY_GIVES_TZ +H5_HAVE_ALARM = _H5Part.H5_HAVE_ALARM +H5_HAVE_ATTRIBUTE = _H5Part.H5_HAVE_ATTRIBUTE +H5_HAVE_DIFFTIME = _H5Part.H5_HAVE_DIFFTIME +H5_HAVE_DLFCN_H = _H5Part.H5_HAVE_DLFCN_H +H5_HAVE_FEATURES_H = _H5Part.H5_HAVE_FEATURES_H +H5_HAVE_FILTER_DEFLATE = _H5Part.H5_HAVE_FILTER_DEFLATE +H5_HAVE_FILTER_FLETCHER32 = _H5Part.H5_HAVE_FILTER_FLETCHER32 +H5_HAVE_FILTER_SHUFFLE = _H5Part.H5_HAVE_FILTER_SHUFFLE +H5_HAVE_FORK = _H5Part.H5_HAVE_FORK +H5_HAVE_FREXPF = _H5Part.H5_HAVE_FREXPF +H5_HAVE_FREXPL = _H5Part.H5_HAVE_FREXPL +H5_HAVE_FUNCTION = _H5Part.H5_HAVE_FUNCTION +H5_HAVE_GETHOSTNAME = _H5Part.H5_HAVE_GETHOSTNAME +H5_HAVE_GETPWUID = _H5Part.H5_HAVE_GETPWUID +H5_HAVE_GETRUSAGE = _H5Part.H5_HAVE_GETRUSAGE +H5_HAVE_GETTIMEOFDAY = _H5Part.H5_HAVE_GETTIMEOFDAY +H5_HAVE_INTTYPES_H = _H5Part.H5_HAVE_INTTYPES_H +H5_HAVE_IOCTL = _H5Part.H5_HAVE_IOCTL +H5_HAVE_LARGE_HSIZET = _H5Part.H5_HAVE_LARGE_HSIZET +H5_HAVE_LIBM = _H5Part.H5_HAVE_LIBM +H5_HAVE_LIBZ = _H5Part.H5_HAVE_LIBZ +H5_HAVE_LONGJMP = _H5Part.H5_HAVE_LONGJMP +H5_HAVE_LSEEK64 = _H5Part.H5_HAVE_LSEEK64 +H5_HAVE_MEMORY_H = _H5Part.H5_HAVE_MEMORY_H +H5_HAVE_NETINET_IN_H = _H5Part.H5_HAVE_NETINET_IN_H +H5_HAVE_NETINET_TCP_H = _H5Part.H5_HAVE_NETINET_TCP_H +H5_HAVE_SETJMP_H = _H5Part.H5_HAVE_SETJMP_H +H5_HAVE_SIGACTION = _H5Part.H5_HAVE_SIGACTION +H5_HAVE_SIGNAL = _H5Part.H5_HAVE_SIGNAL +H5_HAVE_SNPRINTF = _H5Part.H5_HAVE_SNPRINTF +H5_HAVE_SOCKLEN_T = _H5Part.H5_HAVE_SOCKLEN_T +H5_HAVE_STAT_ST_BLOCKS = _H5Part.H5_HAVE_STAT_ST_BLOCKS +H5_HAVE_STDDEF_H = _H5Part.H5_HAVE_STDDEF_H +H5_HAVE_STDINT_H = _H5Part.H5_HAVE_STDINT_H +H5_HAVE_STDLIB_H = _H5Part.H5_HAVE_STDLIB_H +H5_HAVE_STRDUP = _H5Part.H5_HAVE_STRDUP +H5_HAVE_STREAM = _H5Part.H5_HAVE_STREAM +H5_HAVE_STRINGS_H = _H5Part.H5_HAVE_STRINGS_H +H5_HAVE_STRING_H = _H5Part.H5_HAVE_STRING_H +H5_HAVE_STRUCT_TIMEZONE = _H5Part.H5_HAVE_STRUCT_TIMEZONE +H5_HAVE_STRUCT_TM_TM_ZONE = _H5Part.H5_HAVE_STRUCT_TM_TM_ZONE +H5_HAVE_SYSTEM = _H5Part.H5_HAVE_SYSTEM +H5_HAVE_SYS_IOCTL_H = _H5Part.H5_HAVE_SYS_IOCTL_H +H5_HAVE_SYS_RESOURCE_H = _H5Part.H5_HAVE_SYS_RESOURCE_H +H5_HAVE_SYS_SOCKET_H = _H5Part.H5_HAVE_SYS_SOCKET_H +H5_HAVE_SYS_STAT_H = _H5Part.H5_HAVE_SYS_STAT_H +H5_HAVE_SYS_TIMEB_H = _H5Part.H5_HAVE_SYS_TIMEB_H +H5_HAVE_SYS_TIME_H = _H5Part.H5_HAVE_SYS_TIME_H +H5_HAVE_SYS_TYPES_H = _H5Part.H5_HAVE_SYS_TYPES_H +H5_HAVE_TIOCGETD = _H5Part.H5_HAVE_TIOCGETD +H5_HAVE_TIOCGWINSZ = _H5Part.H5_HAVE_TIOCGWINSZ +H5_HAVE_TM_GMTOFF = _H5Part.H5_HAVE_TM_GMTOFF +H5_HAVE_TM_ZONE = _H5Part.H5_HAVE_TM_ZONE +H5_HAVE_UNISTD_H = _H5Part.H5_HAVE_UNISTD_H +H5_HAVE_VSNPRINTF = _H5Part.H5_HAVE_VSNPRINTF +H5_HAVE_WAITPID = _H5Part.H5_HAVE_WAITPID +H5_HAVE_ZLIB_H = _H5Part.H5_HAVE_ZLIB_H +H5_PACKAGE_BUGREPORT = _H5Part.H5_PACKAGE_BUGREPORT +H5_PACKAGE_NAME = _H5Part.H5_PACKAGE_NAME +H5_PACKAGE_STRING = _H5Part.H5_PACKAGE_STRING +H5_PACKAGE_TARNAME = _H5Part.H5_PACKAGE_TARNAME +H5_PACKAGE_VERSION = _H5Part.H5_PACKAGE_VERSION +H5_PRINTF_LL_WIDTH = _H5Part.H5_PRINTF_LL_WIDTH +H5_SIZEOF_CHAR = _H5Part.H5_SIZEOF_CHAR +H5_SIZEOF_DOUBLE = _H5Part.H5_SIZEOF_DOUBLE +H5_SIZEOF_FLOAT = _H5Part.H5_SIZEOF_FLOAT +H5_SIZEOF_INT = _H5Part.H5_SIZEOF_INT +H5_SIZEOF_INT16_T = _H5Part.H5_SIZEOF_INT16_T +H5_SIZEOF_INT32_T = _H5Part.H5_SIZEOF_INT32_T +H5_SIZEOF_INT64_T = _H5Part.H5_SIZEOF_INT64_T +H5_SIZEOF_INT8_T = _H5Part.H5_SIZEOF_INT8_T +H5_SIZEOF_INT_FAST16_T = _H5Part.H5_SIZEOF_INT_FAST16_T +H5_SIZEOF_INT_FAST32_T = _H5Part.H5_SIZEOF_INT_FAST32_T +H5_SIZEOF_INT_FAST64_T = _H5Part.H5_SIZEOF_INT_FAST64_T +H5_SIZEOF_INT_FAST8_T = _H5Part.H5_SIZEOF_INT_FAST8_T +H5_SIZEOF_INT_LEAST16_T = _H5Part.H5_SIZEOF_INT_LEAST16_T +H5_SIZEOF_INT_LEAST32_T = _H5Part.H5_SIZEOF_INT_LEAST32_T +H5_SIZEOF_INT_LEAST64_T = _H5Part.H5_SIZEOF_INT_LEAST64_T +H5_SIZEOF_INT_LEAST8_T = _H5Part.H5_SIZEOF_INT_LEAST8_T +H5_SIZEOF_LONG = _H5Part.H5_SIZEOF_LONG +H5_SIZEOF_LONG_DOUBLE = _H5Part.H5_SIZEOF_LONG_DOUBLE +H5_SIZEOF_LONG_LONG = _H5Part.H5_SIZEOF_LONG_LONG +H5_SIZEOF_OFF_T = _H5Part.H5_SIZEOF_OFF_T +H5_SIZEOF_SHORT = _H5Part.H5_SIZEOF_SHORT +H5_SIZEOF_SIZE_T = _H5Part.H5_SIZEOF_SIZE_T +H5_SIZEOF_SSIZE_T = _H5Part.H5_SIZEOF_SSIZE_T +H5_SIZEOF_UINT16_T = _H5Part.H5_SIZEOF_UINT16_T +H5_SIZEOF_UINT32_T = _H5Part.H5_SIZEOF_UINT32_T +H5_SIZEOF_UINT64_T = _H5Part.H5_SIZEOF_UINT64_T +H5_SIZEOF_UINT8_T = _H5Part.H5_SIZEOF_UINT8_T +H5_SIZEOF_UINT_FAST16_T = _H5Part.H5_SIZEOF_UINT_FAST16_T +H5_SIZEOF_UINT_FAST32_T = _H5Part.H5_SIZEOF_UINT_FAST32_T +H5_SIZEOF_UINT_FAST64_T = _H5Part.H5_SIZEOF_UINT_FAST64_T +H5_SIZEOF_UINT_FAST8_T = _H5Part.H5_SIZEOF_UINT_FAST8_T +H5_SIZEOF_UINT_LEAST16_T = _H5Part.H5_SIZEOF_UINT_LEAST16_T +H5_SIZEOF_UINT_LEAST32_T = _H5Part.H5_SIZEOF_UINT_LEAST32_T +H5_SIZEOF_UINT_LEAST64_T = _H5Part.H5_SIZEOF_UINT_LEAST64_T +H5_SIZEOF_UINT_LEAST8_T = _H5Part.H5_SIZEOF_UINT_LEAST8_T +H5_SIZEOF___INT64 = _H5Part.H5_SIZEOF___INT64 +H5_STDC_HEADERS = _H5Part.H5_STDC_HEADERS +H5_SYSTEM_SCOPE_THREADS = _H5Part.H5_SYSTEM_SCOPE_THREADS +H5_TIME_WITH_SYS_TIME = _H5Part.H5_TIME_WITH_SYS_TIME +H5T_NO_CLASS = _H5Part.H5T_NO_CLASS +H5T_INTEGER = _H5Part.H5T_INTEGER +H5T_FLOAT = _H5Part.H5T_FLOAT +H5T_TIME = _H5Part.H5T_TIME +H5T_STRING = _H5Part.H5T_STRING +H5T_BITFIELD = _H5Part.H5T_BITFIELD +H5T_OPAQUE = _H5Part.H5T_OPAQUE +H5T_COMPOUND = _H5Part.H5T_COMPOUND +H5T_REFERENCE = _H5Part.H5T_REFERENCE +H5T_ENUM = _H5Part.H5T_ENUM +H5T_VLEN = _H5Part.H5T_VLEN +H5T_ARRAY = _H5Part.H5T_ARRAY +H5T_NCLASSES = _H5Part.H5T_NCLASSES +H5T_ORDER_ERROR = _H5Part.H5T_ORDER_ERROR +H5T_ORDER_LE = _H5Part.H5T_ORDER_LE +H5T_ORDER_BE = _H5Part.H5T_ORDER_BE +H5T_ORDER_VAX = _H5Part.H5T_ORDER_VAX +H5T_ORDER_NONE = _H5Part.H5T_ORDER_NONE +H5T_SGN_ERROR = _H5Part.H5T_SGN_ERROR +H5T_SGN_NONE = _H5Part.H5T_SGN_NONE +H5T_SGN_2 = _H5Part.H5T_SGN_2 +H5T_NSGN = _H5Part.H5T_NSGN +H5T_NORM_ERROR = _H5Part.H5T_NORM_ERROR +H5T_NORM_IMPLIED = _H5Part.H5T_NORM_IMPLIED +H5T_NORM_MSBSET = _H5Part.H5T_NORM_MSBSET +H5T_NORM_NONE = _H5Part.H5T_NORM_NONE +H5T_CSET_ERROR = _H5Part.H5T_CSET_ERROR +H5T_CSET_ASCII = _H5Part.H5T_CSET_ASCII +H5T_CSET_RESERVED_1 = _H5Part.H5T_CSET_RESERVED_1 +H5T_CSET_RESERVED_2 = _H5Part.H5T_CSET_RESERVED_2 +H5T_CSET_RESERVED_3 = _H5Part.H5T_CSET_RESERVED_3 +H5T_CSET_RESERVED_4 = _H5Part.H5T_CSET_RESERVED_4 +H5T_CSET_RESERVED_5 = _H5Part.H5T_CSET_RESERVED_5 +H5T_CSET_RESERVED_6 = _H5Part.H5T_CSET_RESERVED_6 +H5T_CSET_RESERVED_7 = _H5Part.H5T_CSET_RESERVED_7 +H5T_CSET_RESERVED_8 = _H5Part.H5T_CSET_RESERVED_8 +H5T_CSET_RESERVED_9 = _H5Part.H5T_CSET_RESERVED_9 +H5T_CSET_RESERVED_10 = _H5Part.H5T_CSET_RESERVED_10 +H5T_CSET_RESERVED_11 = _H5Part.H5T_CSET_RESERVED_11 +H5T_CSET_RESERVED_12 = _H5Part.H5T_CSET_RESERVED_12 +H5T_CSET_RESERVED_13 = _H5Part.H5T_CSET_RESERVED_13 +H5T_CSET_RESERVED_14 = _H5Part.H5T_CSET_RESERVED_14 +H5T_CSET_RESERVED_15 = _H5Part.H5T_CSET_RESERVED_15 +H5T_STR_ERROR = _H5Part.H5T_STR_ERROR +H5T_STR_NULLTERM = _H5Part.H5T_STR_NULLTERM +H5T_STR_NULLPAD = _H5Part.H5T_STR_NULLPAD +H5T_STR_SPACEPAD = _H5Part.H5T_STR_SPACEPAD +H5T_STR_RESERVED_3 = _H5Part.H5T_STR_RESERVED_3 +H5T_STR_RESERVED_4 = _H5Part.H5T_STR_RESERVED_4 +H5T_STR_RESERVED_5 = _H5Part.H5T_STR_RESERVED_5 +H5T_STR_RESERVED_6 = _H5Part.H5T_STR_RESERVED_6 +H5T_STR_RESERVED_7 = _H5Part.H5T_STR_RESERVED_7 +H5T_STR_RESERVED_8 = _H5Part.H5T_STR_RESERVED_8 +H5T_STR_RESERVED_9 = _H5Part.H5T_STR_RESERVED_9 +H5T_STR_RESERVED_10 = _H5Part.H5T_STR_RESERVED_10 +H5T_STR_RESERVED_11 = _H5Part.H5T_STR_RESERVED_11 +H5T_STR_RESERVED_12 = _H5Part.H5T_STR_RESERVED_12 +H5T_STR_RESERVED_13 = _H5Part.H5T_STR_RESERVED_13 +H5T_STR_RESERVED_14 = _H5Part.H5T_STR_RESERVED_14 +H5T_STR_RESERVED_15 = _H5Part.H5T_STR_RESERVED_15 +H5T_PAD_ERROR = _H5Part.H5T_PAD_ERROR +H5T_PAD_ZERO = _H5Part.H5T_PAD_ZERO +H5T_PAD_ONE = _H5Part.H5T_PAD_ONE +H5T_PAD_BACKGROUND = _H5Part.H5T_PAD_BACKGROUND +H5T_NPAD = _H5Part.H5T_NPAD +H5T_CONV_INIT = _H5Part.H5T_CONV_INIT +H5T_CONV_CONV = _H5Part.H5T_CONV_CONV +H5T_CONV_FREE = _H5Part.H5T_CONV_FREE +H5T_BKG_NO = _H5Part.H5T_BKG_NO +H5T_BKG_TEMP = _H5Part.H5T_BKG_TEMP +H5T_BKG_YES = _H5Part.H5T_BKG_YES +class H5T_cdata_t(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, H5T_cdata_t, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, H5T_cdata_t, name) + __repr__ = _swig_repr + __swig_setmethods__["command"] = _H5Part.H5T_cdata_t_command_set + __swig_getmethods__["command"] = _H5Part.H5T_cdata_t_command_get + if _newclass:command = property(_H5Part.H5T_cdata_t_command_get, _H5Part.H5T_cdata_t_command_set) + __swig_setmethods__["need_bkg"] = _H5Part.H5T_cdata_t_need_bkg_set + __swig_getmethods__["need_bkg"] = _H5Part.H5T_cdata_t_need_bkg_get + if _newclass:need_bkg = property(_H5Part.H5T_cdata_t_need_bkg_get, _H5Part.H5T_cdata_t_need_bkg_set) + __swig_setmethods__["recalc"] = _H5Part.H5T_cdata_t_recalc_set + __swig_getmethods__["recalc"] = _H5Part.H5T_cdata_t_recalc_get + if _newclass:recalc = property(_H5Part.H5T_cdata_t_recalc_get, _H5Part.H5T_cdata_t_recalc_set) + __swig_setmethods__["priv"] = _H5Part.H5T_cdata_t_priv_set + __swig_getmethods__["priv"] = _H5Part.H5T_cdata_t_priv_get + if _newclass:priv = property(_H5Part.H5T_cdata_t_priv_get, _H5Part.H5T_cdata_t_priv_set) + def __init__(self, *args): + this = _H5Part.new_H5T_cdata_t(*args) + try: self.this.append(this) + except: self.this = this + __swig_destroy__ = _H5Part.delete_H5T_cdata_t + __del__ = lambda self : None; +H5T_cdata_t_swigregister = _H5Part.H5T_cdata_t_swigregister +H5T_cdata_t_swigregister(H5T_cdata_t) + +H5T_PERS_DONTCARE = _H5Part.H5T_PERS_DONTCARE +H5T_PERS_HARD = _H5Part.H5T_PERS_HARD +H5T_PERS_SOFT = _H5Part.H5T_PERS_SOFT +H5T_DIR_DEFAULT = _H5Part.H5T_DIR_DEFAULT +H5T_DIR_ASCEND = _H5Part.H5T_DIR_ASCEND +H5T_DIR_DESCEND = _H5Part.H5T_DIR_DESCEND +class hvl_t(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, hvl_t, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, hvl_t, name) + __repr__ = _swig_repr + __swig_setmethods__["len"] = _H5Part.hvl_t_len_set + __swig_getmethods__["len"] = _H5Part.hvl_t_len_get + if _newclass:len = property(_H5Part.hvl_t_len_get, _H5Part.hvl_t_len_set) + __swig_setmethods__["p"] = _H5Part.hvl_t_p_set + __swig_getmethods__["p"] = _H5Part.hvl_t_p_get + if _newclass:p = property(_H5Part.hvl_t_p_get, _H5Part.hvl_t_p_set) + def __init__(self, *args): + this = _H5Part.new_hvl_t(*args) + try: self.this.append(this) + except: self.this = this + __swig_destroy__ = _H5Part.delete_hvl_t + __del__ = lambda self : None; +hvl_t_swigregister = _H5Part.hvl_t_swigregister +hvl_t_swigregister(hvl_t) + +H5T_OPAQUE_TAG_MAX = _H5Part.H5T_OPAQUE_TAG_MAX +H5Topen = _H5Part.H5Topen +H5Tcreate = _H5Part.H5Tcreate +H5Tcopy = _H5Part.H5Tcopy +H5Tclose = _H5Part.H5Tclose +H5Tequal = _H5Part.H5Tequal +H5Tlock = _H5Part.H5Tlock +H5Tcommit = _H5Part.H5Tcommit +H5Tcommitted = _H5Part.H5Tcommitted +H5Tinsert = _H5Part.H5Tinsert +H5Tpack = _H5Part.H5Tpack +H5Tenum_create = _H5Part.H5Tenum_create +H5Tenum_insert = _H5Part.H5Tenum_insert +H5Tenum_nameof = _H5Part.H5Tenum_nameof +H5Tenum_valueof = _H5Part.H5Tenum_valueof +H5Tvlen_create = _H5Part.H5Tvlen_create +H5Tarray_create = _H5Part.H5Tarray_create +H5Tget_array_ndims = _H5Part.H5Tget_array_ndims +H5Tget_array_dims = _H5Part.H5Tget_array_dims +H5Tset_tag = _H5Part.H5Tset_tag +H5Tget_tag = _H5Part.H5Tget_tag +H5Tget_super = _H5Part.H5Tget_super +H5Tget_class = _H5Part.H5Tget_class +H5Tdetect_class = _H5Part.H5Tdetect_class +H5Tget_size = _H5Part.H5Tget_size +H5Tget_order = _H5Part.H5Tget_order +H5Tget_precision = _H5Part.H5Tget_precision +H5Tget_offset = _H5Part.H5Tget_offset +H5Tget_pad = _H5Part.H5Tget_pad +H5Tget_sign = _H5Part.H5Tget_sign +H5Tget_fields = _H5Part.H5Tget_fields +H5Tget_ebias = _H5Part.H5Tget_ebias +H5Tget_norm = _H5Part.H5Tget_norm +H5Tget_inpad = _H5Part.H5Tget_inpad +H5Tget_strpad = _H5Part.H5Tget_strpad +H5Tget_nmembers = _H5Part.H5Tget_nmembers +H5Tget_member_name = _H5Part.H5Tget_member_name +H5Tget_member_index = _H5Part.H5Tget_member_index +H5Tget_member_offset = _H5Part.H5Tget_member_offset +H5Tget_member_class = _H5Part.H5Tget_member_class +H5Tget_member_type = _H5Part.H5Tget_member_type +H5Tget_member_value = _H5Part.H5Tget_member_value +H5Tget_cset = _H5Part.H5Tget_cset +H5Tis_variable_str = _H5Part.H5Tis_variable_str +H5Tget_native_type = _H5Part.H5Tget_native_type +H5Tset_size = _H5Part.H5Tset_size +H5Tset_order = _H5Part.H5Tset_order +H5Tset_precision = _H5Part.H5Tset_precision +H5Tset_offset = _H5Part.H5Tset_offset +H5Tset_pad = _H5Part.H5Tset_pad +H5Tset_sign = _H5Part.H5Tset_sign +H5Tset_fields = _H5Part.H5Tset_fields +H5Tset_ebias = _H5Part.H5Tset_ebias +H5Tset_norm = _H5Part.H5Tset_norm +H5Tset_inpad = _H5Part.H5Tset_inpad +H5Tset_cset = _H5Part.H5Tset_cset +H5Tset_strpad = _H5Part.H5Tset_strpad +H5Tregister = _H5Part.H5Tregister +H5Tunregister = _H5Part.H5Tunregister +H5Tfind = _H5Part.H5Tfind +H5Tconvert = _H5Part.H5Tconvert +H5Tget_overflow = _H5Part.H5Tget_overflow +H5Tset_overflow = _H5Part.H5Tset_overflow +H5_VERS_MAJOR = _H5Part.H5_VERS_MAJOR +H5_VERS_MINOR = _H5Part.H5_VERS_MINOR +H5_VERS_RELEASE = _H5Part.H5_VERS_RELEASE +H5_VERS_SUBRELEASE = _H5Part.H5_VERS_SUBRELEASE +H5_VERS_INFO = _H5Part.H5_VERS_INFO +H5_SIZEOF_HSIZE_T = _H5Part.H5_SIZEOF_HSIZE_T +H5_SIZEOF_HADDR_T = _H5Part.H5_SIZEOF_HADDR_T +H5_PRINTF_HADDR_FMT = _H5Part.H5_PRINTF_HADDR_FMT +H5open = _H5Part.H5open +H5close = _H5Part.H5close +H5dont_atexit = _H5Part.H5dont_atexit +H5garbage_collect = _H5Part.H5garbage_collect +H5set_free_list_limits = _H5Part.H5set_free_list_limits +H5get_libversion = _H5Part.H5get_libversion +H5check_version = _H5Part.H5check_version +H5I_BADID = _H5Part.H5I_BADID +H5I_FILE = _H5Part.H5I_FILE +H5I_GROUP = _H5Part.H5I_GROUP +H5I_DATATYPE = _H5Part.H5I_DATATYPE +H5I_DATASPACE = _H5Part.H5I_DATASPACE +H5I_DATASET = _H5Part.H5I_DATASET +H5I_ATTR = _H5Part.H5I_ATTR +H5I_REFERENCE = _H5Part.H5I_REFERENCE +H5I_VFL = _H5Part.H5I_VFL +H5I_GENPROP_CLS = _H5Part.H5I_GENPROP_CLS +H5I_GENPROP_LST = _H5Part.H5I_GENPROP_LST +H5I_NGROUPS = _H5Part.H5I_NGROUPS +H5I_INVALID_HID = _H5Part.H5I_INVALID_HID +H5Iget_type = _H5Part.H5Iget_type +H5Iget_file_id = _H5Part.H5Iget_file_id +H5Iget_name = _H5Part.H5Iget_name +H5Iinc_ref = _H5Part.H5Iinc_ref +H5Idec_ref = _H5Part.H5Idec_ref +H5Iget_ref = _H5Part.H5Iget_ref +class longArray(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, longArray, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, longArray, name) + __repr__ = _swig_repr + def __init__(self, *args): + this = _H5Part.new_longArray(*args) + try: self.this.append(this) + except: self.this = this + __swig_destroy__ = _H5Part.delete_longArray + __del__ = lambda self : None; + def __getitem__(*args): return _H5Part.longArray___getitem__(*args) + def __setitem__(*args): return _H5Part.longArray___setitem__(*args) + def cast(*args): return _H5Part.longArray_cast(*args) + __swig_getmethods__["frompointer"] = lambda x: _H5Part.longArray_frompointer + if _newclass:frompointer = staticmethod(_H5Part.longArray_frompointer) +longArray_swigregister = _H5Part.longArray_swigregister +longArray_swigregister(longArray) +cvar = _H5Part.cvar +H5PartGetDatasetName = _H5Part.H5PartGetDatasetName +H5PartGetStepAttribInfo = _H5Part.H5PartGetStepAttribInfo +H5PartGetFileAttribInfo = _H5Part.H5PartGetFileAttribInfo +H5PartGetDatasetInfo = _H5Part.H5PartGetDatasetInfo +longArray_frompointer = _H5Part.longArray_frompointer + +class doubleArray(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, doubleArray, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, doubleArray, name) + __repr__ = _swig_repr + def __init__(self, *args): + this = _H5Part.new_doubleArray(*args) + try: self.this.append(this) + except: self.this = this + __swig_destroy__ = _H5Part.delete_doubleArray + __del__ = lambda self : None; + def __getitem__(*args): return _H5Part.doubleArray___getitem__(*args) + def __setitem__(*args): return _H5Part.doubleArray___setitem__(*args) + def cast(*args): return _H5Part.doubleArray_cast(*args) + __swig_getmethods__["frompointer"] = lambda x: _H5Part.doubleArray_frompointer + if _newclass:frompointer = staticmethod(_H5Part.doubleArray_frompointer) +doubleArray_swigregister = _H5Part.doubleArray_swigregister +doubleArray_swigregister(doubleArray) +doubleArray_frompointer = _H5Part.doubleArray_frompointer + +class charArray(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, charArray, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, charArray, name) + __repr__ = _swig_repr + def __init__(self, *args): + this = _H5Part.new_charArray(*args) + try: self.this.append(this) + except: self.this = this + __swig_destroy__ = _H5Part.delete_charArray + __del__ = lambda self : None; + def __getitem__(*args): return _H5Part.charArray___getitem__(*args) + def __setitem__(*args): return _H5Part.charArray___setitem__(*args) + def cast(*args): return _H5Part.charArray_cast(*args) + __swig_getmethods__["frompointer"] = lambda x: _H5Part.charArray_frompointer + if _newclass:frompointer = staticmethod(_H5Part.charArray_frompointer) +charArray_swigregister = _H5Part.charArray_swigregister +charArray_swigregister(charArray) +charArray_frompointer = _H5Part.charArray_frompointer + +class hid_tArray(_object): + __swig_setmethods__ = {} + __setattr__ = lambda self, name, value: _swig_setattr(self, hid_tArray, name, value) + __swig_getmethods__ = {} + __getattr__ = lambda self, name: _swig_getattr(self, hid_tArray, name) + __repr__ = _swig_repr + def __init__(self, *args): + this = _H5Part.new_hid_tArray(*args) + try: self.this.append(this) + except: self.this = this + __swig_destroy__ = _H5Part.delete_hid_tArray + __del__ = lambda self : None; + def __getitem__(*args): return _H5Part.hid_tArray___getitem__(*args) + def __setitem__(*args): return _H5Part.hid_tArray___setitem__(*args) + def cast(*args): return _H5Part.hid_tArray_cast(*args) + __swig_getmethods__["frompointer"] = lambda x: _H5Part.hid_tArray_frompointer + if _newclass:frompointer = staticmethod(_H5Part.hid_tArray_frompointer) +hid_tArray_swigregister = _H5Part.hid_tArray_swigregister +hid_tArray_swigregister(hid_tArray) +hid_tArray_frompointer = _H5Part.hid_tArray_frompointer + + + diff --git a/src/H5PartF.c b/src/H5PartF.c new file mode 100755 index 0000000..8791181 --- /dev/null +++ b/src/H5PartF.c @@ -0,0 +1,384 @@ +#include "H5Part.h" +#include "Underscore.h" +#include +/* + +********* Perhaps call this pfile ********** + +Determine underscores using perl and then send through one stage of preprocessing +to get the F77NAME fixed up. Otherwise, must include correct flag each time. + +Or just don't declare F77NAME in the header (only in source as symbols). + + +All pointers are cast to haddr_t (a unint64_t) within the C/C++ code +In fortran, these pointers (handles) are carried as INTEGER*8 + +*/ + +#ifdef F77_SINGLE_UNDERSCORE +#define F77NAME(a,b,c) a +#elif defined(F77_NO_UNDERSCORE) +#define F77NAME(a,b,c) b +#elif defined(F77_CRAY_UNDERSCORE) +#define F77NAME(a,b,c) c +#else +#error Error, no way to determine how to construct fortran bindings +#endif + +#if 0 +#define f_h5pt_openr F77NAME(h5prt_openr_,h5prt_openr,H5PRT_OPENR) +#define f_h5pt_openw F77NAME(h5prt_openw_,h5prt_openw,H5PRT_OPENW) +#define f_h5pt_close F77NAME(h5prt_close_,h5prt_close,H5PRT_CLOSE) +#define f_h5pt_npoints F77NAME(h5prt_npoints_,h5prt_npoints,H5PRT_NPOINTS) +#define f_h5pt_ndata F77NAME(h5prt_ndata_,h5prt_ndata,H5PRT_NDATA) +#define f_h5pt_nstep F77NAME(h5prt_nstep_,h5prt_nstep,H5PRT_NSTEP) +#define f_h5pt_readstep F77NAME(h5prt_readstep_,h5prt_readstep,H5PRT_READSTEP) +#define f_h5pt_step F77NAME(h5prt_step_,h5prt_step,H5PRT_STEP) +#define f_h5pt_wreal8 F77NAME(h5prt_wreal8_,h5prt_wreal8,H5PRT_WREAL8) +#define f_h5pt_wint8 F77NAME(h5prt_wint8_,h5prt_wint8,H5PRT_WINT8) +#endif + +/* open/close interface */ +#define f_h5pt_openr F77NAME(h5pt_openr_,h5pt_openr,H5PT_OPENR) /* func returns INT8 */ +#define f_h5pt_openw F77NAME(h5pt_openw_,h5pt_openw,H5PT_OPENW) /* func returns INT8 */ + +#define f_h5pt_openr_par F77NAME(h5pt_openr_par_,h5pt_openr_par,H5PT_OPENR_PAR) /* func returns INT8 */ +#define f_h5pt_openw_par F77NAME(h5pt_openw_par_,h5pt_openw_par,H5PT_OPENW_PAR) /* func returns INT8 */ +#define f_h5pt_close F77NAME(h5pt_close_,h5pt_close,H5PT_CLOSE) +#define f_h5pt_isvalid F77NAME(h5pt_isvalid_,h5pt_isvalid,H5PT_ISVALID) /* func returns INT8 */ + +/* writing interface */ +#define f_h5pt_setnpoints F77NAME(h5pt_setnpoints_,h5pt_setnpoints,H5PT_SETNPOINTS) +#define f_h5pt_setstep F77NAME(h5pt_setstep_,h5pt_setstep,H5PT_SETSTEP) +#define f_h5pt_writedata_r8 F77NAME(h5pt_writedata_r8_,h5pt_writedata_r8,H5PT_WRITEDATA_R8) +#define f_h5pt_writedata_i8 F77NAME(h5pt_writedata_i8_,h5pt_writedata_i8,H5PT_WRITEDATA_I8) + +/* Reading interface (define dataset, step, particles, attributes) */ +#define f_h5pt_getnsteps F77NAME(h5pt_getnsteps_,h5pt_getnsteps,H5PT_GETNSTEPS) +#define f_h5pt_getndatasets F77NAME(h5pt_getndatasets_,h5pt_getndatasets,H5PT_GETNDATASETS) +#define f_h5pt_getnpoints F77NAME(h5pt_getnpoints_,h5pt_getnpoints,H5PT_GETNPOINTS) +#define f_h5pt_getdatasetname F77NAME(h5pt_getdatasetname_,h5pt_getdatasetname,H5PT_GETDATASETNAME) +#define f_h5pt_getnumpoints F77NAME(h5pt_getnumpoints_,h5pt_getnumpoints,H5PT_GETNUMPOINTS) + +/* Views and parallelism */ +#define f_h5pt_setview F77NAME(h5pt_setview_,h5pt_setview,H5PT_SETVIEW) +#define f_h5pt_resetview F77NAME(h5pt_resetview_,h5pt_resetview,H5PT_RESETVIEW) +#define f_h5pt_hasview F77NAME(h5pt_hasview_,h5pt_hasview,H5PT_HASVIEW) +#define f_h5pt_getview F77NAME(h5pt_getview_,h5pt_getview,H5PT_GETVIEW) + +/* Reading data */ +#define f_h5pt_readdata_r8 F77NAME(h5pt_readdata_r8_,h5pt_readdata_r8,H5PT_READDATA_R8) +#define f_h5pt_readdata_i8 F77NAME(h5pt_readdata_i8_,h5pt_readdata_i8,H5PT_READDATA_I8) +#define f_h5pt_readdata F77NAME(h5pt_readdata_,h5pt_readdata,H5PT_READDATA) + +/* Attributes */ +/* writing */ +#define f_h5pt_writefileattrib_r8 F77NAME(h5pt_writefileattrib_r8_,h5pt_writefileattrib_r8,H5PT_WRITEFILEATTRIB_R8) +#define f_h5pt_writefileattrib_i8 F77NAME(h5pt_writefileattrib_i8_,h5pt_writefileattrib_i8,H5PT_WRITEFILEATTRIB_I8) +#define f_h5pt_writefileattrib_string F77NAME(h5pt_writefileattrib_string_,h5pt_writefileattrib_string,H5PT_writefileattrib_string) +#define f_h5pt_writestepattrib_r8 F77NAME(h5pt_writestepattrib_r8_,h5pt_writestepattrib_r8,H5PT_WRITESTEPATTRIB_R8) +#define f_h5pt_writestepattrib_i8 F77NAME(h5pt_writestepattrib_i8_,h5pt_writestepattrib_i8,H5PT_WRITESTEPATTRIB_I8) +#define f_h5pt_writestepattrib_string F77NAME(h5pt_writestepattrib_string_,h5pt_writestepattrib_string,H5PT_WRITESTEPATTRIB_STRING) +/* reading */ +#define f_h5pt_getnstepattribs F77NAME(h5pt_getnstepattribs_,h5pt_getnstepattribs,H5PT_GETNSTEPATTRIBS) +#define f_h5pt_getnfileattribs F77NAME(h5pt_getnfileattribs_,h5pt_getnfileattribs,H5PT_GETNFILEATTRIBS) +#define f_h5pt_getstepattribinfo F77NAME(h5pt_getstepattribinfo_,h5pt_getstepattribinfo,H5PT_GETSTEPATTRIBINFO) +#define f_h5pt_getfileattribinfo F77NAME(h5pt_getfileattribinfo_,h5pt_getfileattribinfo,H5PT_GETFILEATTRIBINFO) +#define f_h5pt_readstepattrib F77NAME(h5pt_readstepattrib_,h5pt_readstepattrib,H5PT_READSTEPATTRIB) +#define f_h5pt_readfileattrib F77NAME(h5pt_readfileattrib_,h5pt_readfileattrib,H5PT_READFILEATTRIB) + + +/* open/close interface */ +haddr_t f_h5pt_openr(char *file,int flen){ /* func returns INT8 */ + haddr_t fh; + H5PartFile* f; + char *newname = (char*)malloc(flen+1); /* be safe? */ + strncpy(newname,file,flen); + newname[flen]='\0'; + f = (H5PartOpenFile(newname,H5PART_READ)); + /* printf("openr file=[%s] flen=%u haddr=%u\n",file,flen,f); */ + fh = (haddr_t)f; + /* printf("FileHandle=%llu\n",fh); */ + return fh; +} + +haddr_t f_h5pt_openw(char *file,int flen){ /* func returns INT8 */ + haddr_t fh; + H5PartFile* f; + char *newname = (char*)malloc(flen+1); /* be safe? */ + strncpy(newname,file,flen); + newname[flen]='\0'; + f = (H5PartOpenFile(newname,H5PART_WRITE)); + /* printf("openr file=[%s] flen=%u haddr=%u\n",file,flen,f); */ + fh = (haddr_t)f; + /* printf("FileHandle=%llu\n",fh); */ + return fh; +} + +#ifdef PARALLEL_IO +haddr_t f_h5pt_openr_par(char *file,void *c,int flen){ /* func returns INT8 */ + haddr_t fh; + H5PartFile* f; + char *newname = (char*)malloc(flen+1); /* be safe? */ + strncpy(newname,file,flen); + newname[flen]='\0'; +#ifdef PARALLEL_IO + f = H5PartOpenFileParallel(newname,H5PART_READ,*((MPI_Comm*)c)); + /* printf("openr file=[%s] flen=%u haddr=%u\n",file,flen,f); */ +#else + f=H5PartOpenFile(file,H5PART_READ); +#endif + fh = (haddr_t)f; + /* printf("FileHandle=%llu\n",fh); */ + return fh; +} +haddr_t f_h5pt_openw_par(char *file,MPI_Comm *c,int flen){ /* func returns INT8 */ + haddr_t fh; + H5PartFile* f; + char *newname = (char*)malloc(flen+1); /* be safe? */ + strncpy(newname,file,flen); + newname[flen]='\0'; +#ifdef PARALLEL_IO + f = H5PartOpenFileParallel(newname,H5PART_WRITE,*((MPI_Comm*)c)); + /* printf("openr file=[%s] flen=%u haddr=%u\n",file,flen,f); */ +#else + f=H5PartOpenFile(file,H5PART_WRITE); +#endif + fh = (haddr_t)f; + /* printf("FileHandle=%llu\n",fh); */ + return fh; +} +#endif + +void f_h5pt_close(haddr_t *file){ + H5PartCloseFile((H5PartFile*)*file); +} + +int f_h5pt_isvalid(haddr_t *file){ + return H5PartFileIsValid((H5PartFile*)*file); +} + +/*==============Writing and Setting Dataset info========*/ +#if 0 +void f_h5pt_readstep(haddr_t *file,int *step, + double *x,double *y,double *z, + double *px,double *py,double *pz, + void *id){ + H5PartReadParticleStep((H5PartFile*)*file,(*step)-1,x,y,z,px,py,pz,(long long*)id); +} +#endif + +void f_h5pt_setnpoints(haddr_t *file,uint64_t *np){ + H5PartSetNumParticles((H5PartFile*)*file,*np); +} + +void f_h5pt_setstep(haddr_t *file,int *step){ + H5PartSetStep((H5PartFile*)*file,(*step)-1); +} + +void f_h5pt_writedata_r8(haddr_t *file, + char *name,void *data,int flen){ + char *newname = (char*)malloc(flen+1); /* be safe? */ + strncpy(newname,name,flen); + newname[flen]='\0'; + H5PartWriteDataFloat64((H5PartFile*)*file,newname,(double*)data); + free(newname); +} + +void f_h5pt_writedata_i8(haddr_t *file, + char *name,void *data,int flen){ + char *newname = (char*)malloc(flen+1); /* be safe? */ + strncpy(newname,name,flen); + newname[flen]='\0'; + H5PartWriteDataInt64((H5PartFile*)*file,newname,(long long*)data); + free(newname); +} + +/*==============Reading Data Characteristics============*/ + +int f_h5pt_getnsteps(haddr_t *file){ + /* printf("nstep Haddr=%llu\n",file); */ + return H5PartGetNumSteps((H5PartFile*)*file); +} + +int f_h5pt_getndatasets(haddr_t *file){ + /* printf("ndata Haddr=%llu\n",file); */ + return H5PartGetNumDatasets((H5PartFile*)*file); +} + +haddr_t f_h5pt_getnpoints(haddr_t *file){ + /* printf("nprt Haddr=%llu\n",file); */ + return H5PartGetNumParticles((H5PartFile*)*file); +} + +/* probably should get index from name */ +int f_h5pt_getdatasetname(haddr_t *file,int *index,char *name,int namelen){ + return H5PartGetDatasetName((H5PartFile *)*file,*index,name,namelen); +} + +uint64_t f_h5pt_getnumpoints(haddr_t *file){ + return H5PartGetNumParticles((H5PartFile*)*file); +} + +/*=============Setting and getting views================*/ + +void f_h5pt_setview(haddr_t *file,int64_t *start,int64_t *end){ + H5PartSetView((H5PartFile*)*file,*start,*end); +} + +void f_h5pt_resetview(haddr_t *file){ + H5PartResetView((H5PartFile*)*file); +} + +int f_h5pt_hasview(haddr_t *file){ + return H5PartHasView(((H5PartFile*)*file)); +} + +void f_h5pt_getview(haddr_t *file,int64_t *start,int64_t *end){ + H5PartGetView((H5PartFile*)*file,(long long *) start,(long long *)end); +} +/*==================Reading data ============*/ +int f_h5pt_readdata_r8(haddr_t *file,char *name,void *array,int namelen){ + int r; + char *newname = (char*)malloc(namelen+1); /* be safe? */ + strncpy(newname,name,namelen); + newname[namelen]='\0'; + r=H5PartReadDataFloat64((H5PartFile*)*file,newname,(double *)array); + free(newname); + return r; +} +int f_h5pt_readdata_i8(haddr_t *file,char *name,void *array,int namelen){ + int r; + char *newname = (char*)malloc(namelen+1); /* be safe? */ + strncpy(newname,name,namelen); + newname[namelen]='\0'; + r=H5PartReadDataInt64((H5PartFile*)*file,newname,(long long *)array); + free(newname); + return r; +} + +/*=================== Attributes ================*/ + +/* Attributes */ +/* writing */ +int f_h5pt_writefileattrib_r8(haddr_t *f,char *name, + void *attrib,int *nelem,int namelen){ + int r; + char *newname = (char*)malloc(namelen+1); /* be safe? */ + strncpy(newname,name,namelen); + newname[namelen]='\0'; + r=H5PartWriteFileAttrib((H5PartFile *)*f,newname, + H5T_NATIVE_DOUBLE,attrib,*nelem); + free(newname); + return r; +} + +int f_h5pt_writefileattrib_i8(haddr_t *f,char *name, + void *attrib,int *nelem,int namelen){ + int r; + char *newname = (char*)malloc(namelen+1); /* be safe? */ + strncpy(newname,name,namelen); + newname[namelen]='\0'; + r=H5PartWriteFileAttrib((H5PartFile *)*f,newname, + H5T_NATIVE_INT64,attrib,*nelem); + free(newname); + return r; +} + +int f_h5pt_writefileattrib_string(haddr_t *f,char *name, + char *attrib,int namelen,int attriblen){ + int r; + char *newattrib; + char *newname; + newname = (char*)malloc(namelen+1); /* be safe? */ + strncpy(newname,name,namelen); + newname[namelen]='\0'; + newattrib = (char*)malloc(attriblen+1); /* be safe? */ + strncpy(newattrib,attrib,attriblen); + newattrib[attriblen]='\0'; + r=H5PartWriteFileAttribString((H5PartFile *)*f,newname,newattrib); + free(newname); + free(newattrib); + return r; +} + +int f_h5pt_writestepattrib_r8(haddr_t *f,char *name, + void *attrib,int *nelem,int namelen){ + int r; + char *newname = (char*)malloc(namelen+1); /* be safe? */ + strncpy(newname,name,namelen); + newname[namelen]='\0'; + r=H5PartWriteStepAttrib((H5PartFile *)*f,newname, + H5T_NATIVE_DOUBLE,attrib,*nelem); + free(newname); + return r; +} + +int f_h5pt_writestepattrib_i8(haddr_t *f,char *name, + void *attrib,int *nelem,int namelen){ + int r; + char *newname = (char*)malloc(namelen+1); /* be safe? */ + strncpy(newname,name,namelen); + newname[namelen]='\0'; + r=H5PartWriteStepAttrib((H5PartFile *)*f,newname, + H5T_NATIVE_INT64,attrib,*nelem); + free(newname); + return r; +} + +int f_h5pt_writestepattrib_string(haddr_t *f,char *name, + char *attrib,int namelen,int attriblen){ + int r; + char *newattrib; + char *newname; + newname = (char*)malloc(namelen+1); /* be safe? */ + strncpy(newname,name,namelen); + newname[namelen]='\0'; + newattrib = (char*)malloc(attriblen+1); /* be safe? */ + strncpy(newattrib,attrib,attriblen); + newattrib[attriblen]='\0'; + r=H5PartWriteStepAttribString((H5PartFile *)*f,newname,newattrib); + free(newname); + free(newattrib); + return r; +} + +/* reading attributes ************************* */ +int f_h5pt_getnstepattribs(haddr_t *f){ + return H5PartGetNumStepAttribs((H5PartFile*)*f); +} + +int f_h5pt_getnfileattribs(haddr_t *f){ + return H5PartGetNumFileAttribs((H5PartFile*)*f); +} + +int f_h5pt_getstepattribinfo(haddr_t *f,int *idx,char *name, + int *nelem,int maxnamelen){ + hid_t type; + H5PartGetStepAttribInfo((H5PartFile*)*f,*idx,name,maxnamelen,&type,nelem); + return 1; +} + +int f_h5pt_getfileattribinfo(haddr_t *f,int *idx,char *name, + int *nelem,int maxnamelen){ + hid_t type; + H5PartGetFileAttribInfo((H5PartFile*)*f,*idx,name,maxnamelen,&type,nelem); + return 1; +} + +int f_h5pt_readstepattrib(haddr_t *f,char *name,void *data,int namelen){ + int r; + char *newname = (char*)malloc(namelen+1); /* be safe? */ + strncpy(newname,name,namelen); + newname[namelen]='\0'; + H5PartReadStepAttrib((H5PartFile*)*f,newname,data); +} + +int f_h5pt_readfileattrib(haddr_t *f,char *name,void *data,int namelen){ + int r; + char *newname = (char*)malloc(namelen+1); /* be safe? */ + strncpy(newname,name,namelen); + newname[namelen]='\0'; + H5PartReadFileAttrib((H5PartFile*)*f,newname,data); +} diff --git a/src/H5Part_py.i b/src/H5Part_py.i new file mode 100644 index 0000000..5ae38a6 --- /dev/null +++ b/src/H5Part_py.i @@ -0,0 +1,39 @@ +%module H5Part +%{ +#include "H5Part.h" +#include "/usr/local/hdf5/include/H5pubconf.h" +#include "/usr/local/hdf5/include/H5api_adpt.h" +#include "/usr/local/hdf5/include/H5Tpublic.h" +#include "/usr/local/hdf5/include/H5public.h" +#include "/usr/local/hdf5/include/H5Ipublic.h" +%} + +%include "H5Part.h" + +%include "/usr/local/hdf5/include/H5pubconf.h" +%include "/usr/local/hdf5/include/H5api_adpt.h" +%include "/usr/local/hdf5/include/H5Tpublic.h" +%include "/usr/local/hdf5/include/H5public.h" +%include "/usr/local/hdf5/include/H5Ipublic.h" + +%include "cstring.i" +%cstring_bounded_output(char* name, 100) +%include "typemaps.i" +int H5PartGetDatasetName(H5PartFile*, int, char* name, size_t); +int H5PartReadDataFloat64(H5PartFile*, char *INPUT, double*); +int H5PartReadDataInt64(H5PartFile*, char *INPUT, long long*); +void H5PartGetStepAttribInfo(H5PartFile*, int, char *name, size_t, int *OUTPUT, int *OUTPUT); +void H5PartGetFileAttribInfo(H5PartFile*, int, char *name, size_t, int *OUTPUT, int *OUTPUT); +int H5PartReadStepAttrib(H5PartFile*, char*, void *OUTPUT); +void H5PartReadAttrib(H5PartFile*, char* , void *OUTPUT); +int H5PartReadFileAttrib(H5PartFile*, char*, void *OUTPUT); +int H5PartFileGetStashFileName(H5PartFile*, int, char *name, int); +void H5PartGetDatasetInfo(H5PartFile*, int, char *name, size_t, int *OUTPUT, long long *OUTPUT); + + +%include "carrays.i" +%array_class(long long, longArray); +%array_class(double, doubleArray); +%array_class(char, charArray); +%array_class(hid_t, hid_tArray); + diff --git a/src/H5Part_py_wrap.c b/src/H5Part_py_wrap.c new file mode 100644 index 0000000..30781aa --- /dev/null +++ b/src/H5Part_py_wrap.c @@ -0,0 +1,12323 @@ +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 1.3.29 + * + * This file is not intended to be easily readable and contains a number of + * coding conventions designed to improve portability and efficiency. Do not make + * changes to this file unless you know what you are doing--modify the SWIG + * interface file instead. + * ----------------------------------------------------------------------------- */ + +#define SWIGPYTHON +#define SWIG_PYTHON_DIRECTOR_NO_VTABLE +/* ----------------------------------------------------------------------------- + * This section contains generic SWIG labels for method/variable + * declarations/attributes, and other compiler dependent labels. + * ----------------------------------------------------------------------------- */ + +/* template workaround for compilers that cannot correctly implement the C++ standard */ +#ifndef SWIGTEMPLATEDISAMBIGUATOR +# if defined(__SUNPRO_CC) +# if (__SUNPRO_CC <= 0x560) +# define SWIGTEMPLATEDISAMBIGUATOR template +# else +# define SWIGTEMPLATEDISAMBIGUATOR +# endif +# else +# define SWIGTEMPLATEDISAMBIGUATOR +# endif +#endif + +/* inline attribute */ +#ifndef SWIGINLINE +# if defined(__cplusplus) || (defined(__GNUC__) && !defined(__STRICT_ANSI__)) +# define SWIGINLINE inline +# else +# define SWIGINLINE +# endif +#endif + +/* attribute recognised by some compilers to avoid 'unused' warnings */ +#ifndef SWIGUNUSED +# if defined(__GNUC__) +# if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) +# define SWIGUNUSED __attribute__ ((__unused__)) +# else +# define SWIGUNUSED +# endif +# elif defined(__ICC) +# define SWIGUNUSED __attribute__ ((__unused__)) +# else +# define SWIGUNUSED +# endif +#endif + +#ifndef SWIGUNUSEDPARM +# ifdef __cplusplus +# define SWIGUNUSEDPARM(p) +# else +# define SWIGUNUSEDPARM(p) p SWIGUNUSED +# endif +#endif + +/* internal SWIG method */ +#ifndef SWIGINTERN +# define SWIGINTERN static SWIGUNUSED +#endif + +/* internal inline SWIG method */ +#ifndef SWIGINTERNINLINE +# define SWIGINTERNINLINE SWIGINTERN SWIGINLINE +#endif + +/* exporting methods */ +#if (__GNUC__ >= 4) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) +# ifndef GCC_HASCLASSVISIBILITY +# define GCC_HASCLASSVISIBILITY +# endif +#endif + +#ifndef SWIGEXPORT +# if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__) +# if defined(STATIC_LINKED) +# define SWIGEXPORT +# else +# define SWIGEXPORT __declspec(dllexport) +# endif +# else +# if defined(__GNUC__) && defined(GCC_HASCLASSVISIBILITY) +# define SWIGEXPORT __attribute__ ((visibility("default"))) +# else +# define SWIGEXPORT +# endif +# endif +#endif + +/* calling conventions for Windows */ +#ifndef SWIGSTDCALL +# if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__) +# define SWIGSTDCALL __stdcall +# else +# define SWIGSTDCALL +# endif +#endif + +/* Deal with Microsoft's attempt at deprecating C standard runtime functions */ +#if !defined(SWIG_NO_CRT_SECURE_NO_DEPRECATE) && defined(_MSC_VER) +# define _CRT_SECURE_NO_DEPRECATE +#endif + + +/* Python.h has to appear first */ +#include + +/* ----------------------------------------------------------------------------- + * swigrun.swg + * + * This file contains generic CAPI SWIG runtime support for pointer + * type checking. + * ----------------------------------------------------------------------------- */ + +/* This should only be incremented when either the layout of swig_type_info changes, + or for whatever reason, the runtime changes incompatibly */ +#define SWIG_RUNTIME_VERSION "2" + +/* define SWIG_TYPE_TABLE_NAME as "SWIG_TYPE_TABLE" */ +#ifdef SWIG_TYPE_TABLE +# define SWIG_QUOTE_STRING(x) #x +# define SWIG_EXPAND_AND_QUOTE_STRING(x) SWIG_QUOTE_STRING(x) +# define SWIG_TYPE_TABLE_NAME SWIG_EXPAND_AND_QUOTE_STRING(SWIG_TYPE_TABLE) +#else +# define SWIG_TYPE_TABLE_NAME +#endif + +/* + You can use the SWIGRUNTIME and SWIGRUNTIMEINLINE macros for + creating a static or dynamic library from the swig runtime code. + In 99.9% of the cases, swig just needs to declare them as 'static'. + + But only do this if is strictly necessary, ie, if you have problems + with your compiler or so. +*/ + +#ifndef SWIGRUNTIME +# define SWIGRUNTIME SWIGINTERN +#endif + +#ifndef SWIGRUNTIMEINLINE +# define SWIGRUNTIMEINLINE SWIGRUNTIME SWIGINLINE +#endif + +/* Generic buffer size */ +#ifndef SWIG_BUFFER_SIZE +# define SWIG_BUFFER_SIZE 1024 +#endif + +/* Flags for pointer conversions */ +#define SWIG_POINTER_DISOWN 0x1 + +/* Flags for new pointer objects */ +#define SWIG_POINTER_OWN 0x1 + + +/* + Flags/methods for returning states. + + The swig conversion methods, as ConvertPtr, return and integer + that tells if the conversion was successful or not. And if not, + an error code can be returned (see swigerrors.swg for the codes). + + Use the following macros/flags to set or process the returning + states. + + In old swig versions, you usually write code as: + + if (SWIG_ConvertPtr(obj,vptr,ty.flags) != -1) { + // success code + } else { + //fail code + } + + Now you can be more explicit as: + + int res = SWIG_ConvertPtr(obj,vptr,ty.flags); + if (SWIG_IsOK(res)) { + // success code + } else { + // fail code + } + + that seems to be the same, but now you can also do + + Type *ptr; + int res = SWIG_ConvertPtr(obj,(void **)(&ptr),ty.flags); + if (SWIG_IsOK(res)) { + // success code + if (SWIG_IsNewObj(res) { + ... + delete *ptr; + } else { + ... + } + } else { + // fail code + } + + I.e., now SWIG_ConvertPtr can return new objects and you can + identify the case and take care of the deallocation. Of course that + requires also to SWIG_ConvertPtr to return new result values, as + + int SWIG_ConvertPtr(obj, ptr,...) { + if () { + if () { + *ptr = ; + return SWIG_NEWOBJ; + } else { + *ptr = ; + return SWIG_OLDOBJ; + } + } else { + return SWIG_BADOBJ; + } + } + + Of course, returning the plain '0(success)/-1(fail)' still works, but you can be + more explicit by returning SWIG_BADOBJ, SWIG_ERROR or any of the + swig errors code. + + Finally, if the SWIG_CASTRANK_MODE is enabled, the result code + allows to return the 'cast rank', for example, if you have this + + int food(double) + int fooi(int); + + and you call + + food(1) // cast rank '1' (1 -> 1.0) + fooi(1) // cast rank '0' + + just use the SWIG_AddCast()/SWIG_CheckState() + + + */ +#define SWIG_OK (0) +#define SWIG_ERROR (-1) +#define SWIG_IsOK(r) (r >= 0) +#define SWIG_ArgError(r) ((r != SWIG_ERROR) ? r : SWIG_TypeError) + +/* The CastRankLimit says how many bits are used for the cast rank */ +#define SWIG_CASTRANKLIMIT (1 << 8) +/* The NewMask denotes the object was created (using new/malloc) */ +#define SWIG_NEWOBJMASK (SWIG_CASTRANKLIMIT << 1) +/* The TmpMask is for in/out typemaps that use temporal objects */ +#define SWIG_TMPOBJMASK (SWIG_NEWOBJMASK << 1) +/* Simple returning values */ +#define SWIG_BADOBJ (SWIG_ERROR) +#define SWIG_OLDOBJ (SWIG_OK) +#define SWIG_NEWOBJ (SWIG_OK | SWIG_NEWOBJMASK) +#define SWIG_TMPOBJ (SWIG_OK | SWIG_TMPOBJMASK) +/* Check, add and del mask methods */ +#define SWIG_AddNewMask(r) (SWIG_IsOK(r) ? (r | SWIG_NEWOBJMASK) : r) +#define SWIG_DelNewMask(r) (SWIG_IsOK(r) ? (r & ~SWIG_NEWOBJMASK) : r) +#define SWIG_IsNewObj(r) (SWIG_IsOK(r) && (r & SWIG_NEWOBJMASK)) +#define SWIG_AddTmpMask(r) (SWIG_IsOK(r) ? (r | SWIG_TMPOBJMASK) : r) +#define SWIG_DelTmpMask(r) (SWIG_IsOK(r) ? (r & ~SWIG_TMPOBJMASK) : r) +#define SWIG_IsTmpObj(r) (SWIG_IsOK(r) && (r & SWIG_TMPOBJMASK)) + + +/* Cast-Rank Mode */ +#if defined(SWIG_CASTRANK_MODE) +# ifndef SWIG_TypeRank +# define SWIG_TypeRank unsigned long +# endif +# ifndef SWIG_MAXCASTRANK /* Default cast allowed */ +# define SWIG_MAXCASTRANK (2) +# endif +# define SWIG_CASTRANKMASK ((SWIG_CASTRANKLIMIT) -1) +# define SWIG_CastRank(r) (r & SWIG_CASTRANKMASK) +SWIGINTERNINLINE int SWIG_AddCast(int r) { + return SWIG_IsOK(r) ? ((SWIG_CastRank(r) < SWIG_MAXCASTRANK) ? (r + 1) : SWIG_ERROR) : r; +} +SWIGINTERNINLINE int SWIG_CheckState(int r) { + return SWIG_IsOK(r) ? SWIG_CastRank(r) + 1 : 0; +} +#else /* no cast-rank mode */ +# define SWIG_AddCast +# define SWIG_CheckState(r) (SWIG_IsOK(r) ? 1 : 0) +#endif + + + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef void *(*swig_converter_func)(void *); +typedef struct swig_type_info *(*swig_dycast_func)(void **); + +/* Structure to store inforomation on one type */ +typedef struct swig_type_info { + const char *name; /* mangled name of this type */ + const char *str; /* human readable name of this type */ + swig_dycast_func dcast; /* dynamic cast function down a hierarchy */ + struct swig_cast_info *cast; /* linked list of types that can cast into this type */ + void *clientdata; /* language specific type data */ + int owndata; /* flag if the structure owns the clientdata */ +} swig_type_info; + +/* Structure to store a type and conversion function used for casting */ +typedef struct swig_cast_info { + swig_type_info *type; /* pointer to type that is equivalent to this type */ + swig_converter_func converter; /* function to cast the void pointers */ + struct swig_cast_info *next; /* pointer to next cast in linked list */ + struct swig_cast_info *prev; /* pointer to the previous cast */ +} swig_cast_info; + +/* Structure used to store module information + * Each module generates one structure like this, and the runtime collects + * all of these structures and stores them in a circularly linked list.*/ +typedef struct swig_module_info { + swig_type_info **types; /* Array of pointers to swig_type_info structures that are in this module */ + size_t size; /* Number of types in this module */ + struct swig_module_info *next; /* Pointer to next element in circularly linked list */ + swig_type_info **type_initial; /* Array of initially generated type structures */ + swig_cast_info **cast_initial; /* Array of initially generated casting structures */ + void *clientdata; /* Language specific module data */ +} swig_module_info; + +/* + Compare two type names skipping the space characters, therefore + "char*" == "char *" and "Class" == "Class", etc. + + Return 0 when the two name types are equivalent, as in + strncmp, but skipping ' '. +*/ +SWIGRUNTIME int +SWIG_TypeNameComp(const char *f1, const char *l1, + const char *f2, const char *l2) { + for (;(f1 != l1) && (f2 != l2); ++f1, ++f2) { + while ((*f1 == ' ') && (f1 != l1)) ++f1; + while ((*f2 == ' ') && (f2 != l2)) ++f2; + if (*f1 != *f2) return (*f1 > *f2) ? 1 : -1; + } + return (l1 - f1) - (l2 - f2); +} + +/* + Check type equivalence in a name list like ||... + Return 0 if not equal, 1 if equal +*/ +SWIGRUNTIME int +SWIG_TypeEquiv(const char *nb, const char *tb) { + int equiv = 0; + const char* te = tb + strlen(tb); + const char* ne = nb; + while (!equiv && *ne) { + for (nb = ne; *ne; ++ne) { + if (*ne == '|') break; + } + equiv = (SWIG_TypeNameComp(nb, ne, tb, te) == 0) ? 1 : 0; + if (*ne) ++ne; + } + return equiv; +} + +/* + Check type equivalence in a name list like ||... + Return 0 if equal, -1 if nb < tb, 1 if nb > tb +*/ +SWIGRUNTIME int +SWIG_TypeCompare(const char *nb, const char *tb) { + int equiv = 0; + const char* te = tb + strlen(tb); + const char* ne = nb; + while (!equiv && *ne) { + for (nb = ne; *ne; ++ne) { + if (*ne == '|') break; + } + equiv = (SWIG_TypeNameComp(nb, ne, tb, te) == 0) ? 1 : 0; + if (*ne) ++ne; + } + return equiv; +} + + +/* think of this as a c++ template<> or a scheme macro */ +#define SWIG_TypeCheck_Template(comparison, ty) \ + if (ty) { \ + swig_cast_info *iter = ty->cast; \ + while (iter) { \ + if (comparison) { \ + if (iter == ty->cast) return iter; \ + /* Move iter to the top of the linked list */ \ + iter->prev->next = iter->next; \ + if (iter->next) \ + iter->next->prev = iter->prev; \ + iter->next = ty->cast; \ + iter->prev = 0; \ + if (ty->cast) ty->cast->prev = iter; \ + ty->cast = iter; \ + return iter; \ + } \ + iter = iter->next; \ + } \ + } \ + return 0 + +/* + Check the typename +*/ +SWIGRUNTIME swig_cast_info * +SWIG_TypeCheck(const char *c, swig_type_info *ty) { + SWIG_TypeCheck_Template(strcmp(iter->type->name, c) == 0, ty); +} + +/* Same as previous function, except strcmp is replaced with a pointer comparison */ +SWIGRUNTIME swig_cast_info * +SWIG_TypeCheckStruct(swig_type_info *from, swig_type_info *into) { + SWIG_TypeCheck_Template(iter->type == from, into); +} + +/* + Cast a pointer up an inheritance hierarchy +*/ +SWIGRUNTIMEINLINE void * +SWIG_TypeCast(swig_cast_info *ty, void *ptr) { + return ((!ty) || (!ty->converter)) ? ptr : (*ty->converter)(ptr); +} + +/* + Dynamic pointer casting. Down an inheritance hierarchy +*/ +SWIGRUNTIME swig_type_info * +SWIG_TypeDynamicCast(swig_type_info *ty, void **ptr) { + swig_type_info *lastty = ty; + if (!ty || !ty->dcast) return ty; + while (ty && (ty->dcast)) { + ty = (*ty->dcast)(ptr); + if (ty) lastty = ty; + } + return lastty; +} + +/* + Return the name associated with this type +*/ +SWIGRUNTIMEINLINE const char * +SWIG_TypeName(const swig_type_info *ty) { + return ty->name; +} + +/* + Return the pretty name associated with this type, + that is an unmangled type name in a form presentable to the user. +*/ +SWIGRUNTIME const char * +SWIG_TypePrettyName(const swig_type_info *type) { + /* The "str" field contains the equivalent pretty names of the + type, separated by vertical-bar characters. We choose + to print the last name, as it is often (?) the most + specific. */ + if (!type) return NULL; + if (type->str != NULL) { + const char *last_name = type->str; + const char *s; + for (s = type->str; *s; s++) + if (*s == '|') last_name = s+1; + return last_name; + } + else + return type->name; +} + +/* + Set the clientdata field for a type +*/ +SWIGRUNTIME void +SWIG_TypeClientData(swig_type_info *ti, void *clientdata) { + swig_cast_info *cast = ti->cast; + /* if (ti->clientdata == clientdata) return; */ + ti->clientdata = clientdata; + + while (cast) { + if (!cast->converter) { + swig_type_info *tc = cast->type; + if (!tc->clientdata) { + SWIG_TypeClientData(tc, clientdata); + } + } + cast = cast->next; + } +} +SWIGRUNTIME void +SWIG_TypeNewClientData(swig_type_info *ti, void *clientdata) { + SWIG_TypeClientData(ti, clientdata); + ti->owndata = 1; +} + +/* + Search for a swig_type_info structure only by mangled name + Search is a O(log #types) + + We start searching at module start, and finish searching when start == end. + Note: if start == end at the beginning of the function, we go all the way around + the circular list. +*/ +SWIGRUNTIME swig_type_info * +SWIG_MangledTypeQueryModule(swig_module_info *start, + swig_module_info *end, + const char *name) { + swig_module_info *iter = start; + do { + if (iter->size) { + register size_t l = 0; + register size_t r = iter->size - 1; + do { + /* since l+r >= 0, we can (>> 1) instead (/ 2) */ + register size_t i = (l + r) >> 1; + const char *iname = iter->types[i]->name; + if (iname) { + register int compare = strcmp(name, iname); + if (compare == 0) { + return iter->types[i]; + } else if (compare < 0) { + if (i) { + r = i - 1; + } else { + break; + } + } else if (compare > 0) { + l = i + 1; + } + } else { + break; /* should never happen */ + } + } while (l <= r); + } + iter = iter->next; + } while (iter != end); + return 0; +} + +/* + Search for a swig_type_info structure for either a mangled name or a human readable name. + It first searches the mangled names of the types, which is a O(log #types) + If a type is not found it then searches the human readable names, which is O(#types). + + We start searching at module start, and finish searching when start == end. + Note: if start == end at the beginning of the function, we go all the way around + the circular list. +*/ +SWIGRUNTIME swig_type_info * +SWIG_TypeQueryModule(swig_module_info *start, + swig_module_info *end, + const char *name) { + /* STEP 1: Search the name field using binary search */ + swig_type_info *ret = SWIG_MangledTypeQueryModule(start, end, name); + if (ret) { + return ret; + } else { + /* STEP 2: If the type hasn't been found, do a complete search + of the str field (the human readable name) */ + swig_module_info *iter = start; + do { + register size_t i = 0; + for (; i < iter->size; ++i) { + if (iter->types[i]->str && (SWIG_TypeEquiv(iter->types[i]->str, name))) + return iter->types[i]; + } + iter = iter->next; + } while (iter != end); + } + + /* neither found a match */ + return 0; +} + +/* + Pack binary data into a string +*/ +SWIGRUNTIME char * +SWIG_PackData(char *c, void *ptr, size_t sz) { + static const char hex[17] = "0123456789abcdef"; + register const unsigned char *u = (unsigned char *) ptr; + register const unsigned char *eu = u + sz; + for (; u != eu; ++u) { + register unsigned char uu = *u; + *(c++) = hex[(uu & 0xf0) >> 4]; + *(c++) = hex[uu & 0xf]; + } + return c; +} + +/* + Unpack binary data from a string +*/ +SWIGRUNTIME const char * +SWIG_UnpackData(const char *c, void *ptr, size_t sz) { + register unsigned char *u = (unsigned char *) ptr; + register const unsigned char *eu = u + sz; + for (; u != eu; ++u) { + register char d = *(c++); + register unsigned char uu; + if ((d >= '0') && (d <= '9')) + uu = ((d - '0') << 4); + else if ((d >= 'a') && (d <= 'f')) + uu = ((d - ('a'-10)) << 4); + else + return (char *) 0; + d = *(c++); + if ((d >= '0') && (d <= '9')) + uu |= (d - '0'); + else if ((d >= 'a') && (d <= 'f')) + uu |= (d - ('a'-10)); + else + return (char *) 0; + *u = uu; + } + return c; +} + +/* + Pack 'void *' into a string buffer. +*/ +SWIGRUNTIME char * +SWIG_PackVoidPtr(char *buff, void *ptr, const char *name, size_t bsz) { + char *r = buff; + if ((2*sizeof(void *) + 2) > bsz) return 0; + *(r++) = '_'; + r = SWIG_PackData(r,&ptr,sizeof(void *)); + if (strlen(name) + 1 > (bsz - (r - buff))) return 0; + strcpy(r,name); + return buff; +} + +SWIGRUNTIME const char * +SWIG_UnpackVoidPtr(const char *c, void **ptr, const char *name) { + if (*c != '_') { + if (strcmp(c,"NULL") == 0) { + *ptr = (void *) 0; + return name; + } else { + return 0; + } + } + return SWIG_UnpackData(++c,ptr,sizeof(void *)); +} + +SWIGRUNTIME char * +SWIG_PackDataName(char *buff, void *ptr, size_t sz, const char *name, size_t bsz) { + char *r = buff; + size_t lname = (name ? strlen(name) : 0); + if ((2*sz + 2 + lname) > bsz) return 0; + *(r++) = '_'; + r = SWIG_PackData(r,ptr,sz); + if (lname) { + strncpy(r,name,lname+1); + } else { + *r = 0; + } + return buff; +} + +SWIGRUNTIME const char * +SWIG_UnpackDataName(const char *c, void *ptr, size_t sz, const char *name) { + if (*c != '_') { + if (strcmp(c,"NULL") == 0) { + memset(ptr,0,sz); + return name; + } else { + return 0; + } + } + return SWIG_UnpackData(++c,ptr,sz); +} + +#ifdef __cplusplus +} +#endif + +/* Errors in SWIG */ +#define SWIG_UnknownError -1 +#define SWIG_IOError -2 +#define SWIG_RuntimeError -3 +#define SWIG_IndexError -4 +#define SWIG_TypeError -5 +#define SWIG_DivisionByZero -6 +#define SWIG_OverflowError -7 +#define SWIG_SyntaxError -8 +#define SWIG_ValueError -9 +#define SWIG_SystemError -10 +#define SWIG_AttributeError -11 +#define SWIG_MemoryError -12 +#define SWIG_NullReferenceError -13 + + + +/* Python.h has to appear first */ +#include + +/* Add PyOS_snprintf for old Pythons */ +#if PY_VERSION_HEX < 0x02020000 +# if defined(_MSC_VER) || defined(__BORLANDC__) || defined(_WATCOM) +# define PyOS_snprintf _snprintf +# else +# define PyOS_snprintf snprintf +# endif +#endif + +/* A crude PyString_FromFormat implementation for old Pythons */ +#if PY_VERSION_HEX < 0x02020000 + +#ifndef SWIG_PYBUFFER_SIZE +# define SWIG_PYBUFFER_SIZE 1024 +#endif + +static PyObject * +PyString_FromFormat(const char *fmt, ...) { + va_list ap; + char buf[SWIG_PYBUFFER_SIZE * 2]; + int res; + va_start(ap, fmt); + res = vsnprintf(buf, sizeof(buf), fmt, ap); + va_end(ap); + return (res < 0 || res >= (int)sizeof(buf)) ? 0 : PyString_FromString(buf); +} +#endif + +/* Add PyObject_Del for old Pythons */ +#if PY_VERSION_HEX < 0x01060000 +# define PyObject_Del(op) PyMem_DEL((op)) +#endif +#ifndef PyObject_DEL +# define PyObject_DEL PyObject_Del +#endif + +/* A crude PyExc_StopIteration exception for old Pythons */ +#if PY_VERSION_HEX < 0x02020000 +# ifndef PyExc_StopIteration +# define PyExc_StopIteration PyExc_RuntimeError +# endif +# ifndef PyObject_GenericGetAttr +# define PyObject_GenericGetAttr 0 +# endif +#endif +/* Py_NotImplemented is defined in 2.1 and up. */ +#if PY_VERSION_HEX < 0x02010000 +# ifndef Py_NotImplemented +# define Py_NotImplemented PyExc_RuntimeError +# endif +#endif + + +/* A crude PyString_AsStringAndSize implementation for old Pythons */ +#if PY_VERSION_HEX < 0x02010000 +# ifndef PyString_AsStringAndSize +# define PyString_AsStringAndSize(obj, s, len) {*s = PyString_AsString(obj); *len = *s ? strlen(*s) : 0;} +# endif +#endif + +/* PySequence_Size for old Pythons */ +#if PY_VERSION_HEX < 0x02000000 +# ifndef PySequence_Size +# define PySequence_Size PySequence_Length +# endif +#endif + + +/* PyBool_FromLong for old Pythons */ +#if PY_VERSION_HEX < 0x02030000 +static +PyObject *PyBool_FromLong(long ok) +{ + PyObject *result = ok ? Py_True : Py_False; + Py_INCREF(result); + return result; +} +#endif + + +/* ----------------------------------------------------------------------------- + * error manipulation + * ----------------------------------------------------------------------------- */ + +SWIGRUNTIME PyObject* +SWIG_Python_ErrorType(int code) { + PyObject* type = 0; + switch(code) { + case SWIG_MemoryError: + type = PyExc_MemoryError; + break; + case SWIG_IOError: + type = PyExc_IOError; + break; + case SWIG_RuntimeError: + type = PyExc_RuntimeError; + break; + case SWIG_IndexError: + type = PyExc_IndexError; + break; + case SWIG_TypeError: + type = PyExc_TypeError; + break; + case SWIG_DivisionByZero: + type = PyExc_ZeroDivisionError; + break; + case SWIG_OverflowError: + type = PyExc_OverflowError; + break; + case SWIG_SyntaxError: + type = PyExc_SyntaxError; + break; + case SWIG_ValueError: + type = PyExc_ValueError; + break; + case SWIG_SystemError: + type = PyExc_SystemError; + break; + case SWIG_AttributeError: + type = PyExc_AttributeError; + break; + default: + type = PyExc_RuntimeError; + } + return type; +} + + +SWIGRUNTIME void +SWIG_Python_AddErrorMsg(const char* mesg) +{ + PyObject *type = 0; + PyObject *value = 0; + PyObject *traceback = 0; + + if (PyErr_Occurred()) PyErr_Fetch(&type, &value, &traceback); + if (value) { + PyObject *old_str = PyObject_Str(value); + PyErr_Clear(); + Py_XINCREF(type); + PyErr_Format(type, "%s %s", PyString_AsString(old_str), mesg); + Py_DECREF(old_str); + Py_DECREF(value); + } else { + PyErr_Format(PyExc_RuntimeError, mesg); + } +} + + + +#if defined(SWIG_PYTHON_NO_THREADS) +# if defined(SWIG_PYTHON_THREADS) +# undef SWIG_PYTHON_THREADS +# endif +#endif +#if defined(SWIG_PYTHON_THREADS) /* Threading support is enabled */ +# if !defined(SWIG_PYTHON_USE_GIL) && !defined(SWIG_PYTHON_NO_USE_GIL) +# if (PY_VERSION_HEX >= 0x02030000) /* For 2.3 or later, use the PyGILState calls */ +# define SWIG_PYTHON_USE_GIL +# endif +# endif +# if defined(SWIG_PYTHON_USE_GIL) /* Use PyGILState threads calls */ +# ifndef SWIG_PYTHON_INITIALIZE_THREADS +# define SWIG_PYTHON_INITIALIZE_THREADS PyEval_InitThreads() +# endif +# ifdef __cplusplus /* C++ code */ + class SWIG_Python_Thread_Block { + bool status; + PyGILState_STATE state; + public: + void end() { if (status) { PyGILState_Release(state); status = false;} } + SWIG_Python_Thread_Block() : status(true), state(PyGILState_Ensure()) {} + ~SWIG_Python_Thread_Block() { end(); } + }; + class SWIG_Python_Thread_Allow { + bool status; + PyThreadState *save; + public: + void end() { if (status) { PyEval_RestoreThread(save); status = false; }} + SWIG_Python_Thread_Allow() : status(true), save(PyEval_SaveThread()) {} + ~SWIG_Python_Thread_Allow() { end(); } + }; +# define SWIG_PYTHON_THREAD_BEGIN_BLOCK SWIG_Python_Thread_Block _swig_thread_block +# define SWIG_PYTHON_THREAD_END_BLOCK _swig_thread_block.end() +# define SWIG_PYTHON_THREAD_BEGIN_ALLOW SWIG_Python_Thread_Allow _swig_thread_allow +# define SWIG_PYTHON_THREAD_END_ALLOW _swig_thread_allow.end() +# else /* C code */ +# define SWIG_PYTHON_THREAD_BEGIN_BLOCK PyGILState_STATE _swig_thread_block = PyGILState_Ensure() +# define SWIG_PYTHON_THREAD_END_BLOCK PyGILState_Release(_swig_thread_block) +# define SWIG_PYTHON_THREAD_BEGIN_ALLOW PyThreadState *_swig_thread_allow = PyEval_SaveThread() +# define SWIG_PYTHON_THREAD_END_ALLOW PyEval_RestoreThread(_swig_thread_allow) +# endif +# else /* Old thread way, not implemented, user must provide it */ +# if !defined(SWIG_PYTHON_INITIALIZE_THREADS) +# define SWIG_PYTHON_INITIALIZE_THREADS +# endif +# if !defined(SWIG_PYTHON_THREAD_BEGIN_BLOCK) +# define SWIG_PYTHON_THREAD_BEGIN_BLOCK +# endif +# if !defined(SWIG_PYTHON_THREAD_END_BLOCK) +# define SWIG_PYTHON_THREAD_END_BLOCK +# endif +# if !defined(SWIG_PYTHON_THREAD_BEGIN_ALLOW) +# define SWIG_PYTHON_THREAD_BEGIN_ALLOW +# endif +# if !defined(SWIG_PYTHON_THREAD_END_ALLOW) +# define SWIG_PYTHON_THREAD_END_ALLOW +# endif +# endif +#else /* No thread support */ +# define SWIG_PYTHON_INITIALIZE_THREADS +# define SWIG_PYTHON_THREAD_BEGIN_BLOCK +# define SWIG_PYTHON_THREAD_END_BLOCK +# define SWIG_PYTHON_THREAD_BEGIN_ALLOW +# define SWIG_PYTHON_THREAD_END_ALLOW +#endif + +/* ----------------------------------------------------------------------------- + * Python API portion that goes into the runtime + * ----------------------------------------------------------------------------- */ + +#ifdef __cplusplus +extern "C" { +#if 0 +} /* cc-mode */ +#endif +#endif + +/* ----------------------------------------------------------------------------- + * Constant declarations + * ----------------------------------------------------------------------------- */ + +/* Constant Types */ +#define SWIG_PY_POINTER 4 +#define SWIG_PY_BINARY 5 + +/* Constant information structure */ +typedef struct swig_const_info { + int type; + char *name; + long lvalue; + double dvalue; + void *pvalue; + swig_type_info **ptype; +} swig_const_info; + +#ifdef __cplusplus +#if 0 +{ /* cc-mode */ +#endif +} +#endif + + +/* ----------------------------------------------------------------------------- + * See the LICENSE file for information on copyright, usage and redistribution + * of SWIG, and the README file for authors - http://www.swig.org/release.html. + * + * pyrun.swg + * + * This file contains the runtime support for Python modules + * and includes code for managing global variables and pointer + * type checking. + * + * ----------------------------------------------------------------------------- */ + +/* Common SWIG API */ + +/* for raw pointers */ +#define SWIG_Python_ConvertPtr(obj, pptr, type, flags) SWIG_Python_ConvertPtrAndOwn(obj, pptr, type, flags, 0) +#define SWIG_ConvertPtr(obj, pptr, type, flags) SWIG_Python_ConvertPtr(obj, pptr, type, flags) +#define SWIG_ConvertPtrAndOwn(obj,pptr,type,flags,own) SWIG_Python_ConvertPtrAndOwn(obj, pptr, type, flags, own) +#define SWIG_NewPointerObj(ptr, type, flags) SWIG_Python_NewPointerObj(ptr, type, flags) +#define SWIG_CheckImplicit(ty) SWIG_Python_CheckImplicit(ty) +#define SWIG_AcquirePtr(ptr, src) SWIG_Python_AcquirePtr(ptr, src) +#define swig_owntype int + +/* for raw packed data */ +#define SWIG_ConvertPacked(obj, ptr, sz, ty) SWIG_Python_ConvertPacked(obj, ptr, sz, ty) +#define SWIG_NewPackedObj(ptr, sz, type) SWIG_Python_NewPackedObj(ptr, sz, type) + +/* for class or struct pointers */ +#define SWIG_ConvertInstance(obj, pptr, type, flags) SWIG_ConvertPtr(obj, pptr, type, flags) +#define SWIG_NewInstanceObj(ptr, type, flags) SWIG_NewPointerObj(ptr, type, flags) + +/* for C or C++ function pointers */ +#define SWIG_ConvertFunctionPtr(obj, pptr, type) SWIG_Python_ConvertFunctionPtr(obj, pptr, type) +#define SWIG_NewFunctionPtrObj(ptr, type) SWIG_Python_NewPointerObj(ptr, type, 0) + +/* for C++ member pointers, ie, member methods */ +#define SWIG_ConvertMember(obj, ptr, sz, ty) SWIG_Python_ConvertPacked(obj, ptr, sz, ty) +#define SWIG_NewMemberObj(ptr, sz, type) SWIG_Python_NewPackedObj(ptr, sz, type) + + +/* Runtime API */ + +#define SWIG_GetModule(clientdata) SWIG_Python_GetModule() +#define SWIG_SetModule(clientdata, pointer) SWIG_Python_SetModule(pointer) +#define SWIG_NewClientData(obj) PySwigClientData_New(obj) + +#define SWIG_SetErrorObj SWIG_Python_SetErrorObj +#define SWIG_SetErrorMsg SWIG_Python_SetErrorMsg +#define SWIG_ErrorType(code) SWIG_Python_ErrorType(code) +#define SWIG_Error(code, msg) SWIG_Python_SetErrorMsg(SWIG_ErrorType(code), msg) +#define SWIG_fail goto fail + + +/* Runtime API implementation */ + +/* Error manipulation */ + +SWIGINTERN void +SWIG_Python_SetErrorObj(PyObject *errtype, PyObject *obj) { + SWIG_PYTHON_THREAD_BEGIN_BLOCK; + PyErr_SetObject(errtype, obj); + Py_DECREF(obj); + SWIG_PYTHON_THREAD_END_BLOCK; +} + +SWIGINTERN void +SWIG_Python_SetErrorMsg(PyObject *errtype, const char *msg) { + SWIG_PYTHON_THREAD_BEGIN_BLOCK; + PyErr_SetString(errtype, (char *) msg); + SWIG_PYTHON_THREAD_END_BLOCK; +} + +#define SWIG_Python_Raise(obj, type, desc) SWIG_Python_SetErrorObj(SWIG_Python_ExceptionType(desc), obj) + +/* Set a constant value */ + +SWIGINTERN void +SWIG_Python_SetConstant(PyObject *d, const char *name, PyObject *obj) { + PyDict_SetItemString(d, (char*) name, obj); + Py_DECREF(obj); +} + +/* Append a value to the result obj */ + +SWIGINTERN PyObject* +SWIG_Python_AppendOutput(PyObject* result, PyObject* obj) { +#if !defined(SWIG_PYTHON_OUTPUT_TUPLE) + if (!result) { + result = obj; + } else if (result == Py_None) { + Py_DECREF(result); + result = obj; + } else { + if (!PyList_Check(result)) { + PyObject *o2 = result; + result = PyList_New(1); + PyList_SetItem(result, 0, o2); + } + PyList_Append(result,obj); + Py_DECREF(obj); + } + return result; +#else + PyObject* o2; + PyObject* o3; + if (!result) { + result = obj; + } else if (result == Py_None) { + Py_DECREF(result); + result = obj; + } else { + if (!PyTuple_Check(result)) { + o2 = result; + result = PyTuple_New(1); + PyTuple_SET_ITEM(result, 0, o2); + } + o3 = PyTuple_New(1); + PyTuple_SET_ITEM(o3, 0, obj); + o2 = result; + result = PySequence_Concat(o2, o3); + Py_DECREF(o2); + Py_DECREF(o3); + } + return result; +#endif +} + +/* Unpack the argument tuple */ + +SWIGINTERN int +SWIG_Python_UnpackTuple(PyObject *args, const char *name, int min, int max, PyObject **objs) +{ + if (!args) { + if (!min && !max) { + return 1; + } else { + PyErr_Format(PyExc_TypeError, "%s expected %s%d arguments, got none", + name, (min == max ? "" : "at least "), min); + return 0; + } + } + if (!PyTuple_Check(args)) { + PyErr_SetString(PyExc_SystemError, "UnpackTuple() argument list is not a tuple"); + return 0; + } else { + register int l = PyTuple_GET_SIZE(args); + if (l < min) { + PyErr_Format(PyExc_TypeError, "%s expected %s%d arguments, got %d", + name, (min == max ? "" : "at least "), min, l); + return 0; + } else if (l > max) { + PyErr_Format(PyExc_TypeError, "%s expected %s%d arguments, got %d", + name, (min == max ? "" : "at most "), max, l); + return 0; + } else { + register int i; + for (i = 0; i < l; ++i) { + objs[i] = PyTuple_GET_ITEM(args, i); + } + for (; l < max; ++l) { + objs[l] = 0; + } + return i + 1; + } + } +} + +/* A functor is a function object with one single object argument */ +#if PY_VERSION_HEX >= 0x02020000 +#define SWIG_Python_CallFunctor(functor, obj) PyObject_CallFunctionObjArgs(functor, obj, NULL); +#else +#define SWIG_Python_CallFunctor(functor, obj) PyObject_CallFunction(functor, "O", obj); +#endif + +/* + Helper for static pointer initialization for both C and C++ code, for example + static PyObject *SWIG_STATIC_POINTER(MyVar) = NewSomething(...); +*/ +#ifdef __cplusplus +#define SWIG_STATIC_POINTER(var) var +#else +#define SWIG_STATIC_POINTER(var) var = 0; if (!var) var +#endif + +/* ----------------------------------------------------------------------------- + * Pointer declarations + * ----------------------------------------------------------------------------- */ + +/* Flags for new pointer objects */ +#define SWIG_POINTER_NOSHADOW (SWIG_POINTER_OWN << 1) +#define SWIG_POINTER_NEW (SWIG_POINTER_NOSHADOW | SWIG_POINTER_OWN) + +#define SWIG_POINTER_IMPLICIT_CONV (SWIG_POINTER_DISOWN << 1) + +#ifdef __cplusplus +extern "C" { +#if 0 +} /* cc-mode */ +#endif +#endif + +/* How to access Py_None */ +#if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__) +# ifndef SWIG_PYTHON_NO_BUILD_NONE +# ifndef SWIG_PYTHON_BUILD_NONE +# define SWIG_PYTHON_BUILD_NONE +# endif +# endif +#endif + +#ifdef SWIG_PYTHON_BUILD_NONE +# ifdef Py_None +# undef Py_None +# define Py_None SWIG_Py_None() +# endif +SWIGRUNTIMEINLINE PyObject * +_SWIG_Py_None(void) +{ + PyObject *none = Py_BuildValue(""); + Py_DECREF(none); + return none; +} +SWIGRUNTIME PyObject * +SWIG_Py_None(void) +{ + static PyObject *SWIG_STATIC_POINTER(none) = _SWIG_Py_None(); + return none; +} +#endif + +/* The python void return value */ + +SWIGRUNTIMEINLINE PyObject * +SWIG_Py_Void(void) +{ + PyObject *none = Py_None; + Py_INCREF(none); + return none; +} + +/* PySwigClientData */ + +typedef struct { + PyObject *klass; + PyObject *newraw; + PyObject *newargs; + PyObject *destroy; + int delargs; + int implicitconv; +} PySwigClientData; + +SWIGRUNTIMEINLINE int +SWIG_Python_CheckImplicit(swig_type_info *ty) +{ + PySwigClientData *data = (PySwigClientData *)ty->clientdata; + return data ? data->implicitconv : 0; +} + +SWIGRUNTIMEINLINE PyObject * +SWIG_Python_ExceptionType(swig_type_info *desc) { + PySwigClientData *data = desc ? (PySwigClientData *) desc->clientdata : 0; + PyObject *klass = data ? data->klass : 0; + return (klass ? klass : PyExc_RuntimeError); +} + + +SWIGRUNTIME PySwigClientData * +PySwigClientData_New(PyObject* obj) +{ + if (!obj) { + return 0; + } else { + PySwigClientData *data = (PySwigClientData *)malloc(sizeof(PySwigClientData)); + /* the klass element */ + data->klass = obj; + Py_INCREF(data->klass); + /* the newraw method and newargs arguments used to create a new raw instance */ + if (PyClass_Check(obj)) { + data->newraw = 0; + data->newargs = obj; + Py_INCREF(obj); + } else { +#if (PY_VERSION_HEX < 0x02020000) + data->newraw = 0; +#else + data->newraw = PyObject_GetAttrString(data->klass, (char *)"__new__"); +#endif + if (data->newraw) { + Py_INCREF(data->newraw); + data->newargs = PyTuple_New(1); + PyTuple_SetItem(data->newargs, 0, obj); + } else { + data->newargs = obj; + } + Py_INCREF(data->newargs); + } + /* the destroy method, aka as the C++ delete method */ + data->destroy = PyObject_GetAttrString(data->klass, (char *)"__swig_destroy__"); + if (PyErr_Occurred()) { + PyErr_Clear(); + data->destroy = 0; + } + if (data->destroy) { + int flags; + Py_INCREF(data->destroy); + flags = PyCFunction_GET_FLAGS(data->destroy); +#ifdef METH_O + data->delargs = !(flags & (METH_O)); +#else + data->delargs = 0; +#endif + } else { + data->delargs = 0; + } + data->implicitconv = 0; + return data; + } +} + +SWIGRUNTIME void +PySwigClientData_Del(PySwigClientData* data) +{ + Py_XDECREF(data->newraw); + Py_XDECREF(data->newargs); + Py_XDECREF(data->destroy); +} + +/* =============== PySwigObject =====================*/ + +typedef struct { + PyObject_HEAD + void *ptr; + swig_type_info *ty; + int own; + PyObject *next; +} PySwigObject; + +SWIGRUNTIME PyObject * +PySwigObject_long(PySwigObject *v) +{ + return PyLong_FromVoidPtr(v->ptr); +} + +SWIGRUNTIME PyObject * +PySwigObject_format(const char* fmt, PySwigObject *v) +{ + PyObject *res = NULL; + PyObject *args = PyTuple_New(1); + if (args) { + if (PyTuple_SetItem(args, 0, PySwigObject_long(v)) == 0) { + PyObject *ofmt = PyString_FromString(fmt); + if (ofmt) { + res = PyString_Format(ofmt,args); + Py_DECREF(ofmt); + } + Py_DECREF(args); + } + } + return res; +} + +SWIGRUNTIME PyObject * +PySwigObject_oct(PySwigObject *v) +{ + return PySwigObject_format("%o",v); +} + +SWIGRUNTIME PyObject * +PySwigObject_hex(PySwigObject *v) +{ + return PySwigObject_format("%x",v); +} + +SWIGRUNTIME PyObject * +#ifdef METH_NOARGS +PySwigObject_repr(PySwigObject *v) +#else +PySwigObject_repr(PySwigObject *v, PyObject *args) +#endif +{ + const char *name = SWIG_TypePrettyName(v->ty); + PyObject *hex = PySwigObject_hex(v); + PyObject *repr = PyString_FromFormat("", name, PyString_AsString(hex)); + Py_DECREF(hex); + if (v->next) { +#ifdef METH_NOARGS + PyObject *nrep = PySwigObject_repr((PySwigObject *)v->next); +#else + PyObject *nrep = PySwigObject_repr((PySwigObject *)v->next, args); +#endif + PyString_ConcatAndDel(&repr,nrep); + } + return repr; +} + +SWIGRUNTIME int +PySwigObject_print(PySwigObject *v, FILE *fp, int SWIGUNUSEDPARM(flags)) +{ +#ifdef METH_NOARGS + PyObject *repr = PySwigObject_repr(v); +#else + PyObject *repr = PySwigObject_repr(v, NULL); +#endif + if (repr) { + fputs(PyString_AsString(repr), fp); + Py_DECREF(repr); + return 0; + } else { + return 1; + } +} + +SWIGRUNTIME PyObject * +PySwigObject_str(PySwigObject *v) +{ + char result[SWIG_BUFFER_SIZE]; + return SWIG_PackVoidPtr(result, v->ptr, v->ty->name, sizeof(result)) ? + PyString_FromString(result) : 0; +} + +SWIGRUNTIME int +PySwigObject_compare(PySwigObject *v, PySwigObject *w) +{ + void *i = v->ptr; + void *j = w->ptr; + return (i < j) ? -1 : ((i > j) ? 1 : 0); +} + +SWIGRUNTIME PyTypeObject* _PySwigObject_type(void); + +SWIGRUNTIME PyTypeObject* +PySwigObject_type(void) { + static PyTypeObject *SWIG_STATIC_POINTER(type) = _PySwigObject_type(); + return type; +} + +SWIGRUNTIMEINLINE int +PySwigObject_Check(PyObject *op) { + return ((op)->ob_type == PySwigObject_type()) + || (strcmp((op)->ob_type->tp_name,"PySwigObject") == 0); +} + +SWIGRUNTIME PyObject * +PySwigObject_New(void *ptr, swig_type_info *ty, int own); + +SWIGRUNTIME void +PySwigObject_dealloc(PyObject *v) +{ + PySwigObject *sobj = (PySwigObject *) v; + PyObject *next = sobj->next; + if (sobj->own) { + swig_type_info *ty = sobj->ty; + PySwigClientData *data = ty ? (PySwigClientData *) ty->clientdata : 0; + PyObject *destroy = data ? data->destroy : 0; + if (destroy) { + /* destroy is always a VARARGS method */ + PyObject *res; + if (data->delargs) { + /* we need to create a temporal object to carry the destroy operation */ + PyObject *tmp = PySwigObject_New(sobj->ptr, ty, 0); + res = SWIG_Python_CallFunctor(destroy, tmp); + Py_DECREF(tmp); + } else { + PyCFunction meth = PyCFunction_GET_FUNCTION(destroy); + PyObject *mself = PyCFunction_GET_SELF(destroy); + res = ((*meth)(mself, v)); + } + Py_XDECREF(res); + } else { + const char *name = SWIG_TypePrettyName(ty); +#if !defined(SWIG_PYTHON_SILENT_MEMLEAK) + printf("swig/python detected a memory leak of type '%s', no destructor found.\n", name); +#endif + } + } + Py_XDECREF(next); + PyObject_DEL(v); +} + +SWIGRUNTIME PyObject* +PySwigObject_append(PyObject* v, PyObject* next) +{ + PySwigObject *sobj = (PySwigObject *) v; +#ifndef METH_O + PyObject *tmp = 0; + if (!PyArg_ParseTuple(next,(char *)"O:append", &tmp)) return NULL; + next = tmp; +#endif + if (!PySwigObject_Check(next)) { + return NULL; + } + sobj->next = next; + Py_INCREF(next); + return SWIG_Py_Void(); +} + +SWIGRUNTIME PyObject* +#ifdef METH_NOARGS +PySwigObject_next(PyObject* v) +#else +PySwigObject_next(PyObject* v, PyObject *SWIGUNUSEDPARM(args)) +#endif +{ + PySwigObject *sobj = (PySwigObject *) v; + if (sobj->next) { + Py_INCREF(sobj->next); + return sobj->next; + } else { + return SWIG_Py_Void(); + } +} + +SWIGINTERN PyObject* +#ifdef METH_NOARGS +PySwigObject_disown(PyObject *v) +#else +PySwigObject_disown(PyObject* v, PyObject *SWIGUNUSEDPARM(args)) +#endif +{ + PySwigObject *sobj = (PySwigObject *)v; + sobj->own = 0; + return SWIG_Py_Void(); +} + +SWIGINTERN PyObject* +#ifdef METH_NOARGS +PySwigObject_acquire(PyObject *v) +#else +PySwigObject_acquire(PyObject* v, PyObject *SWIGUNUSEDPARM(args)) +#endif +{ + PySwigObject *sobj = (PySwigObject *)v; + sobj->own = SWIG_POINTER_OWN; + return SWIG_Py_Void(); +} + +SWIGINTERN PyObject* +PySwigObject_own(PyObject *v, PyObject *args) +{ + PyObject *val = 0; +#if (PY_VERSION_HEX < 0x02020000) + if (!PyArg_ParseTuple(args,(char *)"|O:own",&val)) +#else + if (!PyArg_UnpackTuple(args, (char *)"own", 0, 1, &val)) +#endif + { + return NULL; + } + else + { + PySwigObject *sobj = (PySwigObject *)v; + PyObject *obj = PyBool_FromLong(sobj->own); + if (val) { +#ifdef METH_NOARGS + if (PyObject_IsTrue(val)) { + PySwigObject_acquire(v); + } else { + PySwigObject_disown(v); + } +#else + if (PyObject_IsTrue(val)) { + PySwigObject_acquire(v,args); + } else { + PySwigObject_disown(v,args); + } +#endif + } + return obj; + } +} + +#ifdef METH_O +static PyMethodDef +swigobject_methods[] = { + {(char *)"disown", (PyCFunction)PySwigObject_disown, METH_NOARGS, (char *)"releases ownership of the pointer"}, + {(char *)"acquire", (PyCFunction)PySwigObject_acquire, METH_NOARGS, (char *)"aquires ownership of the pointer"}, + {(char *)"own", (PyCFunction)PySwigObject_own, METH_VARARGS, (char *)"returns/sets ownership of the pointer"}, + {(char *)"append", (PyCFunction)PySwigObject_append, METH_O, (char *)"appends another 'this' object"}, + {(char *)"next", (PyCFunction)PySwigObject_next, METH_NOARGS, (char *)"returns the next 'this' object"}, + {(char *)"__repr__",(PyCFunction)PySwigObject_repr, METH_NOARGS, (char *)"returns object representation"}, + {0, 0, 0, 0} +}; +#else +static PyMethodDef +swigobject_methods[] = { + {(char *)"disown", (PyCFunction)PySwigObject_disown, METH_VARARGS, (char *)"releases ownership of the pointer"}, + {(char *)"acquire", (PyCFunction)PySwigObject_acquire, METH_VARARGS, (char *)"aquires ownership of the pointer"}, + {(char *)"own", (PyCFunction)PySwigObject_own, METH_VARARGS, (char *)"returns/sets ownership of the pointer"}, + {(char *)"append", (PyCFunction)PySwigObject_append, METH_VARARGS, (char *)"appends another 'this' object"}, + {(char *)"next", (PyCFunction)PySwigObject_next, METH_VARARGS, (char *)"returns the next 'this' object"}, + {(char *)"__repr__",(PyCFunction)PySwigObject_repr, METH_VARARGS, (char *)"returns object representation"}, + {0, 0, 0, 0} +}; +#endif + +#if PY_VERSION_HEX < 0x02020000 +SWIGINTERN PyObject * +PySwigObject_getattr(PySwigObject *sobj,char *name) +{ + return Py_FindMethod(swigobject_methods, (PyObject *)sobj, name); +} +#endif + +SWIGRUNTIME PyTypeObject* +_PySwigObject_type(void) { + static char swigobject_doc[] = "Swig object carries a C/C++ instance pointer"; + + static PyNumberMethods PySwigObject_as_number = { + (binaryfunc)0, /*nb_add*/ + (binaryfunc)0, /*nb_subtract*/ + (binaryfunc)0, /*nb_multiply*/ + (binaryfunc)0, /*nb_divide*/ + (binaryfunc)0, /*nb_remainder*/ + (binaryfunc)0, /*nb_divmod*/ + (ternaryfunc)0,/*nb_power*/ + (unaryfunc)0, /*nb_negative*/ + (unaryfunc)0, /*nb_positive*/ + (unaryfunc)0, /*nb_absolute*/ + (inquiry)0, /*nb_nonzero*/ + 0, /*nb_invert*/ + 0, /*nb_lshift*/ + 0, /*nb_rshift*/ + 0, /*nb_and*/ + 0, /*nb_xor*/ + 0, /*nb_or*/ + (coercion)0, /*nb_coerce*/ + (unaryfunc)PySwigObject_long, /*nb_int*/ + (unaryfunc)PySwigObject_long, /*nb_long*/ + (unaryfunc)0, /*nb_float*/ + (unaryfunc)PySwigObject_oct, /*nb_oct*/ + (unaryfunc)PySwigObject_hex, /*nb_hex*/ +#if PY_VERSION_HEX >= 0x02020000 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 /* nb_inplace_add -> nb_inplace_true_divide */ +#elif PY_VERSION_HEX >= 0x02000000 + 0,0,0,0,0,0,0,0,0,0,0 /* nb_inplace_add -> nb_inplace_or */ +#endif + }; + + static PyTypeObject pyswigobject_type; + static int type_init = 0; + if (!type_init) { + const PyTypeObject tmp + = { + PyObject_HEAD_INIT(NULL) + 0, /* ob_size */ + (char *)"PySwigObject", /* tp_name */ + sizeof(PySwigObject), /* tp_basicsize */ + 0, /* tp_itemsize */ + (destructor)PySwigObject_dealloc, /* tp_dealloc */ + (printfunc)PySwigObject_print, /* tp_print */ +#if PY_VERSION_HEX < 0x02020000 + (getattrfunc)PySwigObject_getattr, /* tp_getattr */ +#else + (getattrfunc)0, /* tp_getattr */ +#endif + (setattrfunc)0, /* tp_setattr */ + (cmpfunc)PySwigObject_compare, /* tp_compare */ + (reprfunc)PySwigObject_repr, /* tp_repr */ + &PySwigObject_as_number, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + (hashfunc)0, /* tp_hash */ + (ternaryfunc)0, /* tp_call */ + (reprfunc)PySwigObject_str, /* tp_str */ + PyObject_GenericGetAttr, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT, /* tp_flags */ + swigobject_doc, /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ +#if PY_VERSION_HEX >= 0x02020000 + 0, /* tp_iter */ + 0, /* tp_iternext */ + swigobject_methods, /* tp_methods */ + 0, /* tp_members */ + 0, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + 0, /* tp_new */ + 0, /* tp_free */ + 0, /* tp_is_gc */ + 0, /* tp_bases */ + 0, /* tp_mro */ + 0, /* tp_cache */ + 0, /* tp_subclasses */ + 0, /* tp_weaklist */ +#endif +#if PY_VERSION_HEX >= 0x02030000 + 0, /* tp_del */ +#endif +#ifdef COUNT_ALLOCS + 0,0,0,0 /* tp_alloc -> tp_next */ +#endif + }; + pyswigobject_type = tmp; + pyswigobject_type.ob_type = &PyType_Type; + type_init = 1; + } + return &pyswigobject_type; +} + +SWIGRUNTIME PyObject * +PySwigObject_New(void *ptr, swig_type_info *ty, int own) +{ + PySwigObject *sobj = PyObject_NEW(PySwigObject, PySwigObject_type()); + if (sobj) { + sobj->ptr = ptr; + sobj->ty = ty; + sobj->own = own; + sobj->next = 0; + } + return (PyObject *)sobj; +} + +/* ----------------------------------------------------------------------------- + * Implements a simple Swig Packed type, and use it instead of string + * ----------------------------------------------------------------------------- */ + +typedef struct { + PyObject_HEAD + void *pack; + swig_type_info *ty; + size_t size; +} PySwigPacked; + +SWIGRUNTIME int +PySwigPacked_print(PySwigPacked *v, FILE *fp, int SWIGUNUSEDPARM(flags)) +{ + char result[SWIG_BUFFER_SIZE]; + fputs("pack, v->size, 0, sizeof(result))) { + fputs("at ", fp); + fputs(result, fp); + } + fputs(v->ty->name,fp); + fputs(">", fp); + return 0; +} + +SWIGRUNTIME PyObject * +PySwigPacked_repr(PySwigPacked *v) +{ + char result[SWIG_BUFFER_SIZE]; + if (SWIG_PackDataName(result, v->pack, v->size, 0, sizeof(result))) { + return PyString_FromFormat("", result, v->ty->name); + } else { + return PyString_FromFormat("", v->ty->name); + } +} + +SWIGRUNTIME PyObject * +PySwigPacked_str(PySwigPacked *v) +{ + char result[SWIG_BUFFER_SIZE]; + if (SWIG_PackDataName(result, v->pack, v->size, 0, sizeof(result))){ + return PyString_FromFormat("%s%s", result, v->ty->name); + } else { + return PyString_FromString(v->ty->name); + } +} + +SWIGRUNTIME int +PySwigPacked_compare(PySwigPacked *v, PySwigPacked *w) +{ + size_t i = v->size; + size_t j = w->size; + int s = (i < j) ? -1 : ((i > j) ? 1 : 0); + return s ? s : strncmp((char *)v->pack, (char *)w->pack, 2*v->size); +} + +SWIGRUNTIME PyTypeObject* _PySwigPacked_type(void); + +SWIGRUNTIME PyTypeObject* +PySwigPacked_type(void) { + static PyTypeObject *SWIG_STATIC_POINTER(type) = _PySwigPacked_type(); + return type; +} + +SWIGRUNTIMEINLINE int +PySwigPacked_Check(PyObject *op) { + return ((op)->ob_type == _PySwigPacked_type()) + || (strcmp((op)->ob_type->tp_name,"PySwigPacked") == 0); +} + +SWIGRUNTIME void +PySwigPacked_dealloc(PyObject *v) +{ + if (PySwigPacked_Check(v)) { + PySwigPacked *sobj = (PySwigPacked *) v; + free(sobj->pack); + } + PyObject_DEL(v); +} + +SWIGRUNTIME PyTypeObject* +_PySwigPacked_type(void) { + static char swigpacked_doc[] = "Swig object carries a C/C++ instance pointer"; + static PyTypeObject pyswigpacked_type; + static int type_init = 0; + if (!type_init) { + const PyTypeObject tmp + = { + PyObject_HEAD_INIT(NULL) + 0, /* ob_size */ + (char *)"PySwigPacked", /* tp_name */ + sizeof(PySwigPacked), /* tp_basicsize */ + 0, /* tp_itemsize */ + (destructor)PySwigPacked_dealloc, /* tp_dealloc */ + (printfunc)PySwigPacked_print, /* tp_print */ + (getattrfunc)0, /* tp_getattr */ + (setattrfunc)0, /* tp_setattr */ + (cmpfunc)PySwigPacked_compare, /* tp_compare */ + (reprfunc)PySwigPacked_repr, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + (hashfunc)0, /* tp_hash */ + (ternaryfunc)0, /* tp_call */ + (reprfunc)PySwigPacked_str, /* tp_str */ + PyObject_GenericGetAttr, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + Py_TPFLAGS_DEFAULT, /* tp_flags */ + swigpacked_doc, /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ +#if PY_VERSION_HEX >= 0x02020000 + 0, /* tp_iter */ + 0, /* tp_iternext */ + 0, /* tp_methods */ + 0, /* tp_members */ + 0, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + 0, /* tp_init */ + 0, /* tp_alloc */ + 0, /* tp_new */ + 0, /* tp_free */ + 0, /* tp_is_gc */ + 0, /* tp_bases */ + 0, /* tp_mro */ + 0, /* tp_cache */ + 0, /* tp_subclasses */ + 0, /* tp_weaklist */ +#endif +#if PY_VERSION_HEX >= 0x02030000 + 0, /* tp_del */ +#endif +#ifdef COUNT_ALLOCS + 0,0,0,0 /* tp_alloc -> tp_next */ +#endif + }; + pyswigpacked_type = tmp; + pyswigpacked_type.ob_type = &PyType_Type; + type_init = 1; + } + return &pyswigpacked_type; +} + +SWIGRUNTIME PyObject * +PySwigPacked_New(void *ptr, size_t size, swig_type_info *ty) +{ + PySwigPacked *sobj = PyObject_NEW(PySwigPacked, PySwigPacked_type()); + if (sobj) { + void *pack = malloc(size); + if (pack) { + memcpy(pack, ptr, size); + sobj->pack = pack; + sobj->ty = ty; + sobj->size = size; + } else { + PyObject_DEL((PyObject *) sobj); + sobj = 0; + } + } + return (PyObject *) sobj; +} + +SWIGRUNTIME swig_type_info * +PySwigPacked_UnpackData(PyObject *obj, void *ptr, size_t size) +{ + if (PySwigPacked_Check(obj)) { + PySwigPacked *sobj = (PySwigPacked *)obj; + if (sobj->size != size) return 0; + memcpy(ptr, sobj->pack, size); + return sobj->ty; + } else { + return 0; + } +} + +/* ----------------------------------------------------------------------------- + * pointers/data manipulation + * ----------------------------------------------------------------------------- */ + +SWIGRUNTIMEINLINE PyObject * +_SWIG_This(void) +{ + return PyString_FromString("this"); +} + +SWIGRUNTIME PyObject * +SWIG_This(void) +{ + static PyObject *SWIG_STATIC_POINTER(swig_this) = _SWIG_This(); + return swig_this; +} + +/* #define SWIG_PYTHON_SLOW_GETSET_THIS */ + +SWIGRUNTIME PySwigObject * +SWIG_Python_GetSwigThis(PyObject *pyobj) +{ + if (PySwigObject_Check(pyobj)) { + return (PySwigObject *) pyobj; + } else { + PyObject *obj = 0; +#if (!defined(SWIG_PYTHON_SLOW_GETSET_THIS) && (PY_VERSION_HEX >= 0x02030000)) + if (PyInstance_Check(pyobj)) { + obj = _PyInstance_Lookup(pyobj, SWIG_This()); + } else { + PyObject **dictptr = _PyObject_GetDictPtr(pyobj); + if (dictptr != NULL) { + PyObject *dict = *dictptr; + obj = dict ? PyDict_GetItem(dict, SWIG_This()) : 0; + } else { +#ifdef PyWeakref_CheckProxy + if (PyWeakref_CheckProxy(pyobj)) { + PyObject *wobj = PyWeakref_GET_OBJECT(pyobj); + return wobj ? SWIG_Python_GetSwigThis(wobj) : 0; + } +#endif + obj = PyObject_GetAttr(pyobj,SWIG_This()); + if (obj) { + Py_DECREF(obj); + } else { + if (PyErr_Occurred()) PyErr_Clear(); + return 0; + } + } + } +#else + obj = PyObject_GetAttr(pyobj,SWIG_This()); + if (obj) { + Py_DECREF(obj); + } else { + if (PyErr_Occurred()) PyErr_Clear(); + return 0; + } +#endif + if (obj && !PySwigObject_Check(obj)) { + /* a PyObject is called 'this', try to get the 'real this' + PySwigObject from it */ + return SWIG_Python_GetSwigThis(obj); + } + return (PySwigObject *)obj; + } +} + +/* Acquire a pointer value */ + +SWIGRUNTIME int +SWIG_Python_AcquirePtr(PyObject *obj, int own) { + if (own) { + PySwigObject *sobj = SWIG_Python_GetSwigThis(obj); + if (sobj) { + int oldown = sobj->own; + sobj->own = own; + return oldown; + } + } + return 0; +} + +/* Convert a pointer value */ + +SWIGRUNTIME int +SWIG_Python_ConvertPtrAndOwn(PyObject *obj, void **ptr, swig_type_info *ty, int flags, int *own) { + if (!obj) return SWIG_ERROR; + if (obj == Py_None) { + if (ptr) *ptr = 0; + return SWIG_OK; + } else { + PySwigObject *sobj = SWIG_Python_GetSwigThis(obj); + while (sobj) { + void *vptr = sobj->ptr; + if (ty) { + swig_type_info *to = sobj->ty; + if (to == ty) { + /* no type cast needed */ + if (ptr) *ptr = vptr; + break; + } else { + swig_cast_info *tc = SWIG_TypeCheck(to->name,ty); + if (!tc) { + sobj = (PySwigObject *)sobj->next; + } else { + if (ptr) *ptr = SWIG_TypeCast(tc,vptr); + break; + } + } + } else { + if (ptr) *ptr = vptr; + break; + } + } + if (sobj) { + if (own) *own = sobj->own; + if (flags & SWIG_POINTER_DISOWN) { + sobj->own = 0; + } + return SWIG_OK; + } else { + int res = SWIG_ERROR; + if (flags & SWIG_POINTER_IMPLICIT_CONV) { + PySwigClientData *data = ty ? (PySwigClientData *) ty->clientdata : 0; + if (data && !data->implicitconv) { + PyObject *klass = data->klass; + if (klass) { + PyObject *impconv; + data->implicitconv = 1; /* avoid recursion and call 'explicit' constructors*/ + impconv = SWIG_Python_CallFunctor(klass, obj); + data->implicitconv = 0; + if (PyErr_Occurred()) { + PyErr_Clear(); + impconv = 0; + } + if (impconv) { + PySwigObject *iobj = SWIG_Python_GetSwigThis(impconv); + if (iobj) { + void *vptr; + res = SWIG_Python_ConvertPtrAndOwn((PyObject*)iobj, &vptr, ty, 0, 0); + if (SWIG_IsOK(res)) { + if (ptr) { + *ptr = vptr; + /* transfer the ownership to 'ptr' */ + iobj->own = 0; + res = SWIG_AddCast(res); + res = SWIG_AddNewMask(res); + } else { + res = SWIG_AddCast(res); + } + } + } + Py_DECREF(impconv); + } + } + } + } + return res; + } + } +} + +/* Convert a function ptr value */ + +SWIGRUNTIME int +SWIG_Python_ConvertFunctionPtr(PyObject *obj, void **ptr, swig_type_info *ty) { + if (!PyCFunction_Check(obj)) { + return SWIG_ConvertPtr(obj, ptr, ty, 0); + } else { + void *vptr = 0; + + /* here we get the method pointer for callbacks */ + char *doc = (((PyCFunctionObject *)obj) -> m_ml -> ml_doc); + const char *desc = doc ? strstr(doc, "swig_ptr: ") : 0; + if (desc) { + desc = ty ? SWIG_UnpackVoidPtr(desc + 10, &vptr, ty->name) : 0; + if (!desc) return SWIG_ERROR; + } + if (ty) { + swig_cast_info *tc = SWIG_TypeCheck(desc,ty); + if (!tc) return SWIG_ERROR; + *ptr = SWIG_TypeCast(tc,vptr); + } else { + *ptr = vptr; + } + return SWIG_OK; + } +} + +/* Convert a packed value value */ + +SWIGRUNTIME int +SWIG_Python_ConvertPacked(PyObject *obj, void *ptr, size_t sz, swig_type_info *ty) { + swig_type_info *to = PySwigPacked_UnpackData(obj, ptr, sz); + if (!to) return SWIG_ERROR; + if (ty) { + if (to != ty) { + /* check type cast? */ + swig_cast_info *tc = SWIG_TypeCheck(to->name,ty); + if (!tc) return SWIG_ERROR; + } + } + return SWIG_OK; +} + +/* ----------------------------------------------------------------------------- + * Create a new pointer object + * ----------------------------------------------------------------------------- */ + +/* + Create a new instance object, whitout calling __init__, and set the + 'this' attribute. +*/ + +SWIGRUNTIME PyObject* +SWIG_Python_NewShadowInstance(PySwigClientData *data, PyObject *swig_this) +{ +#if (PY_VERSION_HEX >= 0x02020000) + PyObject *inst = 0; + PyObject *newraw = data->newraw; + if (newraw) { + inst = PyObject_Call(newraw, data->newargs, NULL); + if (inst) { +#if !defined(SWIG_PYTHON_SLOW_GETSET_THIS) + PyObject **dictptr = _PyObject_GetDictPtr(inst); + if (dictptr != NULL) { + PyObject *dict = *dictptr; + if (dict == NULL) { + dict = PyDict_New(); + *dictptr = dict; + PyDict_SetItem(dict, SWIG_This(), swig_this); + } + } +#else + PyObject *key = SWIG_This(); + PyObject_SetAttr(inst, key, swig_this); +#endif + } + } else { + PyObject *dict = PyDict_New(); + PyDict_SetItem(dict, SWIG_This(), swig_this); + inst = PyInstance_NewRaw(data->newargs, dict); + Py_DECREF(dict); + } + return inst; +#else +#if (PY_VERSION_HEX >= 0x02010000) + PyObject *inst; + PyObject *dict = PyDict_New(); + PyDict_SetItem(dict, SWIG_This(), swig_this); + inst = PyInstance_NewRaw(data->newargs, dict); + Py_DECREF(dict); + return (PyObject *) inst; +#else + PyInstanceObject *inst = PyObject_NEW(PyInstanceObject, &PyInstance_Type); + if (inst == NULL) { + return NULL; + } + inst->in_class = (PyClassObject *)data->newargs; + Py_INCREF(inst->in_class); + inst->in_dict = PyDict_New(); + if (inst->in_dict == NULL) { + Py_DECREF(inst); + return NULL; + } +#ifdef Py_TPFLAGS_HAVE_WEAKREFS + inst->in_weakreflist = NULL; +#endif +#ifdef Py_TPFLAGS_GC + PyObject_GC_Init(inst); +#endif + PyDict_SetItem(inst->in_dict, SWIG_This(), swig_this); + return (PyObject *) inst; +#endif +#endif +} + +SWIGRUNTIME void +SWIG_Python_SetSwigThis(PyObject *inst, PyObject *swig_this) +{ + PyObject *dict; +#if (PY_VERSION_HEX >= 0x02020000) && !defined(SWIG_PYTHON_SLOW_GETSET_THIS) + PyObject **dictptr = _PyObject_GetDictPtr(inst); + if (dictptr != NULL) { + dict = *dictptr; + if (dict == NULL) { + dict = PyDict_New(); + *dictptr = dict; + } + PyDict_SetItem(dict, SWIG_This(), swig_this); + return; + } +#endif + dict = PyObject_GetAttrString(inst, "__dict__"); + PyDict_SetItem(dict, SWIG_This(), swig_this); + Py_DECREF(dict); +} + + +SWIGINTERN PyObject * +SWIG_Python_InitShadowInstance(PyObject *args) { + PyObject *obj[2]; + if (!SWIG_Python_UnpackTuple(args,(char*)"swiginit", 2, 2, obj)) { + return NULL; + } else { + PySwigObject *sthis = SWIG_Python_GetSwigThis(obj[0]); + if (sthis) { + PySwigObject_append((PyObject*) sthis, obj[1]); + } else { + SWIG_Python_SetSwigThis(obj[0], obj[1]); + } + return SWIG_Py_Void(); + } +} + +/* Create a new pointer object */ + +SWIGRUNTIME PyObject * +SWIG_Python_NewPointerObj(void *ptr, swig_type_info *type, int flags) { + if (!ptr) { + return SWIG_Py_Void(); + } else { + int own = (flags & SWIG_POINTER_OWN) ? SWIG_POINTER_OWN : 0; + PyObject *robj = PySwigObject_New(ptr, type, own); + PySwigClientData *clientdata = type ? (PySwigClientData *)(type->clientdata) : 0; + if (clientdata && !(flags & SWIG_POINTER_NOSHADOW)) { + PyObject *inst = SWIG_Python_NewShadowInstance(clientdata, robj); + if (inst) { + Py_DECREF(robj); + robj = inst; + } + } + return robj; + } +} + +/* Create a new packed object */ + +SWIGRUNTIMEINLINE PyObject * +SWIG_Python_NewPackedObj(void *ptr, size_t sz, swig_type_info *type) { + return ptr ? PySwigPacked_New((void *) ptr, sz, type) : SWIG_Py_Void(); +} + +/* -----------------------------------------------------------------------------* + * Get type list + * -----------------------------------------------------------------------------*/ + +#ifdef SWIG_LINK_RUNTIME +void *SWIG_ReturnGlobalTypeList(void *); +#endif + +SWIGRUNTIME swig_module_info * +SWIG_Python_GetModule(void) { + static void *type_pointer = (void *)0; + /* first check if module already created */ + if (!type_pointer) { +#ifdef SWIG_LINK_RUNTIME + type_pointer = SWIG_ReturnGlobalTypeList((void *)0); +#else + type_pointer = PyCObject_Import((char*)"swig_runtime_data" SWIG_RUNTIME_VERSION, + (char*)"type_pointer" SWIG_TYPE_TABLE_NAME); + if (PyErr_Occurred()) { + PyErr_Clear(); + type_pointer = (void *)0; + } +#endif + } + return (swig_module_info *) type_pointer; +} + +#if PY_MAJOR_VERSION < 2 +/* PyModule_AddObject function was introduced in Python 2.0. The following function + is copied out of Python/modsupport.c in python version 2.3.4 */ +SWIGINTERN int +PyModule_AddObject(PyObject *m, char *name, PyObject *o) +{ + PyObject *dict; + if (!PyModule_Check(m)) { + PyErr_SetString(PyExc_TypeError, + "PyModule_AddObject() needs module as first arg"); + return SWIG_ERROR; + } + if (!o) { + PyErr_SetString(PyExc_TypeError, + "PyModule_AddObject() needs non-NULL value"); + return SWIG_ERROR; + } + + dict = PyModule_GetDict(m); + if (dict == NULL) { + /* Internal error -- modules must have a dict! */ + PyErr_Format(PyExc_SystemError, "module '%s' has no __dict__", + PyModule_GetName(m)); + return SWIG_ERROR; + } + if (PyDict_SetItemString(dict, name, o)) + return SWIG_ERROR; + Py_DECREF(o); + return SWIG_OK; +} +#endif + +SWIGRUNTIME void +SWIG_Python_DestroyModule(void *vptr) +{ + swig_module_info *swig_module = (swig_module_info *) vptr; + swig_type_info **types = swig_module->types; + size_t i; + for (i =0; i < swig_module->size; ++i) { + swig_type_info *ty = types[i]; + if (ty->owndata) { + PySwigClientData *data = (PySwigClientData *) ty->clientdata; + if (data) PySwigClientData_Del(data); + } + } + Py_DECREF(SWIG_This()); +} + +SWIGRUNTIME void +SWIG_Python_SetModule(swig_module_info *swig_module) { + static PyMethodDef swig_empty_runtime_method_table[] = { {NULL, NULL, 0, NULL} };/* Sentinel */ + + PyObject *module = Py_InitModule((char*)"swig_runtime_data" SWIG_RUNTIME_VERSION, + swig_empty_runtime_method_table); + PyObject *pointer = PyCObject_FromVoidPtr((void *) swig_module, SWIG_Python_DestroyModule); + if (pointer && module) { + PyModule_AddObject(module, (char*)"type_pointer" SWIG_TYPE_TABLE_NAME, pointer); + } else { + Py_XDECREF(pointer); + } +} + +/* The python cached type query */ +SWIGRUNTIME PyObject * +SWIG_Python_TypeCache() { + static PyObject *SWIG_STATIC_POINTER(cache) = PyDict_New(); + return cache; +} + +SWIGRUNTIME swig_type_info * +SWIG_Python_TypeQuery(const char *type) +{ + PyObject *cache = SWIG_Python_TypeCache(); + PyObject *key = PyString_FromString(type); + PyObject *obj = PyDict_GetItem(cache, key); + swig_type_info *descriptor; + if (obj) { + descriptor = (swig_type_info *) PyCObject_AsVoidPtr(obj); + } else { + swig_module_info *swig_module = SWIG_Python_GetModule(); + descriptor = SWIG_TypeQueryModule(swig_module, swig_module, type); + if (descriptor) { + obj = PyCObject_FromVoidPtr(descriptor, NULL); + PyDict_SetItem(cache, key, obj); + Py_DECREF(obj); + } + } + Py_DECREF(key); + return descriptor; +} + +/* + For backward compatibility only +*/ +#define SWIG_POINTER_EXCEPTION 0 +#define SWIG_arg_fail(arg) SWIG_Python_ArgFail(arg) +#define SWIG_MustGetPtr(p, type, argnum, flags) SWIG_Python_MustGetPtr(p, type, argnum, flags) + +SWIGRUNTIME int +SWIG_Python_AddErrMesg(const char* mesg, int infront) +{ + if (PyErr_Occurred()) { + PyObject *type = 0; + PyObject *value = 0; + PyObject *traceback = 0; + PyErr_Fetch(&type, &value, &traceback); + if (value) { + PyObject *old_str = PyObject_Str(value); + Py_XINCREF(type); + PyErr_Clear(); + if (infront) { + PyErr_Format(type, "%s %s", mesg, PyString_AsString(old_str)); + } else { + PyErr_Format(type, "%s %s", PyString_AsString(old_str), mesg); + } + Py_DECREF(old_str); + } + return 1; + } else { + return 0; + } +} + +SWIGRUNTIME int +SWIG_Python_ArgFail(int argnum) +{ + if (PyErr_Occurred()) { + /* add information about failing argument */ + char mesg[256]; + PyOS_snprintf(mesg, sizeof(mesg), "argument number %d:", argnum); + return SWIG_Python_AddErrMesg(mesg, 1); + } else { + return 0; + } +} + +SWIGRUNTIMEINLINE const char * +PySwigObject_GetDesc(PyObject *self) +{ + PySwigObject *v = (PySwigObject *)self; + swig_type_info *ty = v ? v->ty : 0; + return ty ? ty->str : (char*)""; +} + +SWIGRUNTIME void +SWIG_Python_TypeError(const char *type, PyObject *obj) +{ + if (type) { +#if defined(SWIG_COBJECT_TYPES) + if (obj && PySwigObject_Check(obj)) { + const char *otype = (const char *) PySwigObject_GetDesc(obj); + if (otype) { + PyErr_Format(PyExc_TypeError, "a '%s' is expected, 'PySwigObject(%s)' is received", + type, otype); + return; + } + } else +#endif + { + const char *otype = (obj ? obj->ob_type->tp_name : 0); + if (otype) { + PyObject *str = PyObject_Str(obj); + const char *cstr = str ? PyString_AsString(str) : 0; + if (cstr) { + PyErr_Format(PyExc_TypeError, "a '%s' is expected, '%s(%s)' is received", + type, otype, cstr); + } else { + PyErr_Format(PyExc_TypeError, "a '%s' is expected, '%s' is received", + type, otype); + } + Py_XDECREF(str); + return; + } + } + PyErr_Format(PyExc_TypeError, "a '%s' is expected", type); + } else { + PyErr_Format(PyExc_TypeError, "unexpected type is received"); + } +} + + +/* Convert a pointer value, signal an exception on a type mismatch */ +SWIGRUNTIME void * +SWIG_Python_MustGetPtr(PyObject *obj, swig_type_info *ty, int argnum, int flags) { + void *result; + if (SWIG_Python_ConvertPtr(obj, &result, ty, flags) == -1) { + PyErr_Clear(); + if (flags & SWIG_POINTER_EXCEPTION) { + SWIG_Python_TypeError(SWIG_TypePrettyName(ty), obj); + SWIG_Python_ArgFail(argnum); + } + } + return result; +} + + +#ifdef __cplusplus +#if 0 +{ /* cc-mode */ +#endif +} +#endif + + + +#define SWIG_exception_fail(code, msg) do { SWIG_Error(code, msg); SWIG_fail; } while(0) + +#define SWIG_contract_assert(expr, msg) if (!(expr)) { SWIG_Error(SWIG_RuntimeError, msg); SWIG_fail; } else + + + +/* -------- TYPES TABLE (BEGIN) -------- */ + +#define SWIGTYPE_p_H5I_type_t swig_types[0] +#define SWIGTYPE_p_H5PartFile swig_types[1] +#define SWIGTYPE_p_H5T_bkg_t swig_types[2] +#define SWIGTYPE_p_H5T_cdata_t swig_types[3] +#define SWIGTYPE_p_H5T_class_t swig_types[4] +#define SWIGTYPE_p_H5T_cmd_t swig_types[5] +#define SWIGTYPE_p_H5T_cset_t swig_types[6] +#define SWIGTYPE_p_H5T_direction_t swig_types[7] +#define SWIGTYPE_p_H5T_norm_t swig_types[8] +#define SWIGTYPE_p_H5T_order_t swig_types[9] +#define SWIGTYPE_p_H5T_pad_t swig_types[10] +#define SWIGTYPE_p_H5T_pers_t swig_types[11] +#define SWIGTYPE_p_H5T_sign_t swig_types[12] +#define SWIGTYPE_p_H5T_str_t swig_types[13] +#define SWIGTYPE_p_char swig_types[14] +#define SWIGTYPE_p_charArray swig_types[15] +#define SWIGTYPE_p_double swig_types[16] +#define SWIGTYPE_p_doubleArray swig_types[17] +#define SWIGTYPE_p_f_int_int_p_struct_H5T_cdata_t_size_t_size_t_size_t_p_void_p_void_int__int swig_types[18] +#define SWIGTYPE_p_f_int_int_p_void_p_void__int swig_types[19] +#define SWIGTYPE_p_hid_tArray swig_types[20] +#define SWIGTYPE_p_hvl_t swig_types[21] +#define SWIGTYPE_p_int swig_types[22] +#define SWIGTYPE_p_longArray swig_types[23] +#define SWIGTYPE_p_long_long swig_types[24] +#define SWIGTYPE_p_p_H5T_cdata_t swig_types[25] +#define SWIGTYPE_p_size_t swig_types[26] +#define SWIGTYPE_p_ssize_t swig_types[27] +#define SWIGTYPE_p_uint64_t swig_types[28] +#define SWIGTYPE_p_unsigned_int swig_types[29] +#define SWIGTYPE_p_unsigned_long_long swig_types[30] +#define SWIGTYPE_p_void swig_types[31] +static swig_type_info *swig_types[33]; +static swig_module_info swig_module = {swig_types, 32, 0, 0, 0, 0}; +#define SWIG_TypeQuery(name) SWIG_TypeQueryModule(&swig_module, &swig_module, name) +#define SWIG_MangledTypeQuery(name) SWIG_MangledTypeQueryModule(&swig_module, &swig_module, name) + +/* -------- TYPES TABLE (END) -------- */ + +#if (PY_VERSION_HEX <= 0x02000000) +# if !defined(SWIG_PYTHON_CLASSIC) +# error "This python version requires to use swig with the '-classic' option" +# endif +#endif + +/*----------------------------------------------- + @(target):= _H5Part.so + ------------------------------------------------*/ +#define SWIG_init init_H5Part + +#define SWIG_name "_H5Part" + +#define SWIGVERSION 0x010329 + + +#define SWIG_as_voidptr(a) (void *)((const void *)(a)) +#define SWIG_as_voidptrptr(a) ((void)SWIG_as_voidptr(*a),(void**)(a)) + + +#include "H5Part.h" +#include "/usr/local/hdf5/include/H5pubconf.h" +#include "/usr/local/hdf5/include/H5api_adpt.h" +#include "/usr/local/hdf5/include/H5Tpublic.h" +#include "/usr/local/hdf5/include/H5public.h" +#include "/usr/local/hdf5/include/H5Ipublic.h" + + +#include +#ifndef LLONG_MIN +# define LLONG_MIN LONG_LONG_MIN +#endif +#ifndef LLONG_MAX +# define LLONG_MAX LONG_LONG_MAX +#endif +#ifndef ULLONG_MAX +# define ULLONG_MAX ULONG_LONG_MAX +#endif + + +SWIGINTERN int +SWIG_AsVal_double (PyObject *obj, double *val) +{ + int res = SWIG_TypeError; + if (PyFloat_Check(obj)) { + if (val) *val = PyFloat_AsDouble(obj); + return SWIG_OK; + } else if (PyInt_Check(obj)) { + if (val) *val = PyInt_AsLong(obj); + return SWIG_OK; + } else if (PyLong_Check(obj)) { + double v = PyLong_AsDouble(obj); + if (!PyErr_Occurred()) { + if (val) *val = v; + return SWIG_OK; + } else { + PyErr_Clear(); + } + } +#ifdef SWIG_PYTHON_CAST_MODE + { + int dispatch = 0; + double d = PyFloat_AsDouble(obj); + if (!PyErr_Occurred()) { + if (val) *val = d; + return SWIG_AddCast(SWIG_OK); + } else { + PyErr_Clear(); + } + if (!dispatch) { + long v = PyLong_AsLong(obj); + if (!PyErr_Occurred()) { + if (val) *val = v; + return SWIG_AddCast(SWIG_AddCast(SWIG_OK)); + } else { + PyErr_Clear(); + } + } + } +#endif + return res; +} + + +#include + + +#include + + +SWIGINTERNINLINE int +SWIG_CanCastAsInteger(double *d, double min, double max) { + double x = *d; + if ((min <= x && x <= max)) { + double fx = floor(x); + double cx = ceil(x); + double rd = ((x - fx) < 0.5) ? fx : cx; /* simple rint */ + if ((errno == EDOM) || (errno == ERANGE)) { + errno = 0; + } else { + double summ, reps, diff; + if (rd < x) { + diff = x - rd; + } else if (rd > x) { + diff = rd - x; + } else { + return 1; + } + summ = rd + x; + reps = diff/summ; + if (reps < 8*DBL_EPSILON) { + *d = rd; + return 1; + } + } + } + return 0; +} + + +SWIGINTERN int +SWIG_AsVal_long (PyObject *obj, long* val) +{ + if (PyInt_Check(obj)) { + if (val) *val = PyInt_AsLong(obj); + return SWIG_OK; + } else if (PyLong_Check(obj)) { + long v = PyLong_AsLong(obj); + if (!PyErr_Occurred()) { + if (val) *val = v; + return SWIG_OK; + } else { + PyErr_Clear(); + } + } +#ifdef SWIG_PYTHON_CAST_MODE + { + int dispatch = 0; + long v = PyInt_AsLong(obj); + if (!PyErr_Occurred()) { + if (val) *val = v; + return SWIG_AddCast(SWIG_OK); + } else { + PyErr_Clear(); + } + if (!dispatch) { + double d; + int res = SWIG_AddCast(SWIG_AsVal_double (obj,&d)); + if (SWIG_IsOK(res) && SWIG_CanCastAsInteger(&d, LONG_MIN, LONG_MAX)) { + if (val) *val = (long)(d); + return res; + } + } + } +#endif + return SWIG_TypeError; +} + + +SWIGINTERN int +SWIG_AsVal_int (PyObject * obj, int *val) +{ + long v; + int res = SWIG_AsVal_long (obj, &v); + if (SWIG_IsOK(res)) { + if ((v < INT_MIN || v > INT_MAX)) { + return SWIG_OverflowError; + } else { + if (val) *val = (int)(v); + } + } + return res; +} + + + #define SWIG_From_long PyInt_FromLong + + +SWIGINTERNINLINE PyObject * +SWIG_From_int (int value) +{ + return SWIG_From_long (value); +} + + +SWIGINTERN int +SWIG_AsVal_unsigned_SS_long (PyObject *obj, unsigned long *val) +{ + if (PyInt_Check(obj)) { + long v = PyInt_AsLong(obj); + if (v >= 0) { + if (val) *val = v; + return SWIG_OK; + } else { + return SWIG_OverflowError; + } + } else if (PyLong_Check(obj)) { + unsigned long v = PyLong_AsUnsignedLong(obj); + if (!PyErr_Occurred()) { + if (val) *val = v; + return SWIG_OK; + } else { + PyErr_Clear(); + } + } +#ifdef SWIG_PYTHON_CAST_MODE + { + int dispatch = 0; + unsigned long v = PyLong_AsUnsignedLong(obj); + if (!PyErr_Occurred()) { + if (val) *val = v; + return SWIG_AddCast(SWIG_OK); + } else { + PyErr_Clear(); + } + if (!dispatch) { + double d; + int res = SWIG_AddCast(SWIG_AsVal_double (obj,&d)); + if (SWIG_IsOK(res) && SWIG_CanCastAsInteger(&d, 0, ULONG_MAX)) { + if (val) *val = (unsigned long)(d); + return res; + } + } + } +#endif + return SWIG_TypeError; +} + + +SWIGINTERN int +SWIG_AsVal_unsigned_SS_long_SS_long (PyObject *obj, unsigned long long *val) +{ + int res = SWIG_TypeError; + if (PyLong_Check(obj)) { + unsigned long long v = PyLong_AsUnsignedLongLong(obj); + if (!PyErr_Occurred()) { + if (val) *val = v; + return SWIG_OK; + } else { + PyErr_Clear(); + } + } else { + unsigned long v; + res = SWIG_AsVal_unsigned_SS_long (obj,&v); + if (SWIG_IsOK(res)) { + if (val) *val = v; + return res; + } + } +#ifdef SWIG_PYTHON_CAST_MODE + { + const double mant_max = 1LL << DBL_MANT_DIG; + double d; + res = SWIG_AsVal_double (obj,&d); + if (SWIG_IsOK(res) && SWIG_CanCastAsInteger(&d, 0, mant_max)) { + if (val) *val = (unsigned long long)(d); + return SWIG_AddCast(res); + } + res = SWIG_TypeError; + } +#endif + return res; +} + + +SWIGINTERNINLINE PyObject* +SWIG_From_long_SS_long (long long value) +{ + return ((value < LONG_MIN) || (value > LONG_MAX)) ? + PyLong_FromLongLong(value) : PyInt_FromLong((long)(value)); +} + + +SWIGINTERNINLINE PyObject* +SWIG_From_unsigned_SS_long_SS_long (unsigned long long value) +{ + return (value > LONG_MAX) ? + PyLong_FromUnsignedLongLong(value) : PyInt_FromLong((long)(value)); +} + + +SWIGINTERN int +SWIG_AsVal_unsigned_SS_int (PyObject * obj, unsigned int *val) +{ + unsigned long v; + int res = SWIG_AsVal_unsigned_SS_long (obj, &v); + if (SWIG_IsOK(res)) { + if ((v > UINT_MAX)) { + return SWIG_OverflowError; + } else { + if (val) *val = (unsigned int)(v); + } + } + return res; +} + + +SWIGINTERNINLINE PyObject* +SWIG_From_unsigned_SS_long (unsigned long value) +{ + return (value > LONG_MAX) ? + PyLong_FromUnsignedLong(value) : PyInt_FromLong((long)(value)); +} + + +SWIGINTERNINLINE PyObject * +SWIG_From_unsigned_SS_int (unsigned int value) +{ + return SWIG_From_unsigned_SS_long (value); +} + + +SWIGINTERN int +SWIG_AsVal_long_SS_long (PyObject *obj, long long *val) +{ + int res = SWIG_TypeError; + if (PyLong_Check(obj)) { + long long v = PyLong_AsLongLong(obj); + if (!PyErr_Occurred()) { + if (val) *val = v; + return SWIG_OK; + } else { + PyErr_Clear(); + } + } else { + long v; + res = SWIG_AsVal_long (obj,&v); + if (SWIG_IsOK(res)) { + if (val) *val = v; + return res; + } + } +#ifdef SWIG_PYTHON_CAST_MODE + { + const double mant_max = 1LL << DBL_MANT_DIG; + const double mant_min = -mant_max; + double d; + res = SWIG_AsVal_double (obj,&d); + if (SWIG_IsOK(res) && SWIG_CanCastAsInteger(&d, mant_min, mant_max)) { + if (val) *val = (long long)(d); + return SWIG_AddCast(res); + } + res = SWIG_TypeError; + } +#endif + return res; +} + + +SWIGINTERN swig_type_info* +SWIG_pchar_descriptor() +{ + static int init = 0; + static swig_type_info* info = 0; + if (!init) { + info = SWIG_TypeQuery("_p_char"); + init = 1; + } + return info; +} + + +SWIGINTERN int +SWIG_AsCharPtrAndSize(PyObject *obj, char** cptr, size_t* psize, int *alloc) +{ + if (PyString_Check(obj)) { + char *cstr; int len; + PyString_AsStringAndSize(obj, &cstr, &len); + if (cptr) { + if (alloc) { + /* + In python the user should not be able to modify the inner + string representation. To warranty that, if you define + SWIG_PYTHON_SAFE_CSTRINGS, a new/copy of the python string + buffer is always returned. + + The default behavior is just to return the pointer value, + so, be careful. + */ +#if defined(SWIG_PYTHON_SAFE_CSTRINGS) + if (*alloc != SWIG_OLDOBJ) +#else + if (*alloc == SWIG_NEWOBJ) +#endif + { + *cptr = (char *)memcpy((char *)malloc((len + 1)*sizeof(char)), cstr, sizeof(char)*(len + 1)); + *alloc = SWIG_NEWOBJ; + } + else { + *cptr = cstr; + *alloc = SWIG_OLDOBJ; + } + } else { + *cptr = PyString_AsString(obj); + } + } + if (psize) *psize = len + 1; + return SWIG_OK; + } else { + swig_type_info* pchar_descriptor = SWIG_pchar_descriptor(); + if (pchar_descriptor) { + void* vptr = 0; + if (SWIG_ConvertPtr(obj, &vptr, pchar_descriptor, 0) == SWIG_OK) { + if (cptr) *cptr = (char *) vptr; + if (psize) *psize = vptr ? (strlen((char *)vptr) + 1) : 0; + if (alloc) *alloc = SWIG_OLDOBJ; + return SWIG_OK; + } + } + } + return SWIG_TypeError; +} + + + + + +SWIGINTERNINLINE int +SWIG_AsVal_size_t (PyObject * obj, size_t *val) +{ + unsigned long v; + int res = SWIG_AsVal_unsigned_SS_long (obj, val ? &v : 0); + if (SWIG_IsOK(res) && val) *val = (size_t)(v); + return res; +} + + +SWIGINTERNINLINE PyObject * +SWIG_FromCharPtrAndSize(const char* carray, size_t size) +{ + if (carray) { + if (size > INT_MAX) { + swig_type_info* pchar_descriptor = SWIG_pchar_descriptor(); + return pchar_descriptor ? + SWIG_NewPointerObj((char *)(carray), pchar_descriptor, 0) : SWIG_Py_Void(); + } else { + return PyString_FromStringAndSize(carray, (int)(size)); + } + } else { + return SWIG_Py_Void(); + } +} + + +SWIGINTERNINLINE PyObject * +SWIG_FromCharPtr(const char *cptr) +{ + return SWIG_FromCharPtrAndSize(cptr, (cptr ? strlen(cptr) : 0)); +} + + +SWIGINTERNINLINE PyObject * +SWIG_From_size_t (size_t value) +{ + return SWIG_From_unsigned_SS_long ((unsigned long)(value)); +} + + +typedef long long longArray; + +SWIGINTERN longArray *new_longArray(size_t nelements){ + return (long long *)malloc((nelements)*sizeof(long long)); + } +SWIGINTERN void delete_longArray(longArray *self){ + free((char*)self); + } +SWIGINTERN long long longArray___getitem__(longArray *self,size_t index){ + return self[index]; + } +SWIGINTERN void longArray___setitem__(longArray *self,size_t index,long long value){ + self[index] = value; + } +SWIGINTERN long long *longArray_cast(longArray *self){ + return self; + } +SWIGINTERN longArray *longArray_frompointer(long long *t){ + return (longArray *)(t); + } + +typedef double doubleArray; + +SWIGINTERN doubleArray *new_doubleArray(size_t nelements){ + return (double *)malloc((nelements)*sizeof(double)); + } +SWIGINTERN void delete_doubleArray(doubleArray *self){ + free((char*)self); + } +SWIGINTERN double doubleArray___getitem__(doubleArray *self,size_t index){ + return self[index]; + } + + #define SWIG_From_double PyFloat_FromDouble + +SWIGINTERN void doubleArray___setitem__(doubleArray *self,size_t index,double value){ + self[index] = value; + } +SWIGINTERN double *doubleArray_cast(doubleArray *self){ + return self; + } +SWIGINTERN doubleArray *doubleArray_frompointer(double *t){ + return (doubleArray *)(t); + } + +typedef char charArray; + +SWIGINTERN charArray *new_charArray(size_t nelements){ + return (char *)malloc((nelements)*sizeof(char)); + } +SWIGINTERN void delete_charArray(charArray *self){ + free((char*)self); + } +SWIGINTERN char charArray___getitem__(charArray *self,size_t index){ + return self[index]; + } + +SWIGINTERNINLINE PyObject * +SWIG_From_char (char c) +{ + return SWIG_FromCharPtrAndSize(&c,1); +} + + +SWIGINTERN int +SWIG_AsCharArray(PyObject * obj, char *val, size_t size) +{ + char* cptr = 0; size_t csize = 0; int alloc = SWIG_OLDOBJ; + int res = SWIG_AsCharPtrAndSize(obj, &cptr, &csize, &alloc); + if (SWIG_IsOK(res)) { + if ((csize == size + 1) && cptr && !(cptr[csize-1])) --csize; + if (csize <= size) { + if (val) { + if (csize) memcpy(val, cptr, csize*sizeof(char)); + if (csize < size) memset(val + csize, 0, (size - csize)*sizeof(char)); + } + if (alloc == SWIG_NEWOBJ) { + free((char*)cptr); + res = SWIG_DelNewMask(res); + } + return res; + } + if (alloc == SWIG_NEWOBJ) free((char*)cptr); + } + return SWIG_TypeError; +} + + +SWIGINTERN int +SWIG_AsVal_char (PyObject * obj, char *val) +{ + int res = SWIG_AsCharArray(obj, val, 1); + if (!SWIG_IsOK(res)) { + long v; + res = SWIG_AddCast(SWIG_AsVal_long (obj, &v)); + if (SWIG_IsOK(res)) { + if ((CHAR_MIN <= v) && (v <= CHAR_MAX)) { + if (val) *val = (char)(v); + } else { + res = SWIG_OverflowError; + } + } + } + return res; +} + +SWIGINTERN void charArray___setitem__(charArray *self,size_t index,char value){ + self[index] = value; + } +SWIGINTERN char *charArray_cast(charArray *self){ + return self; + } +SWIGINTERN charArray *charArray_frompointer(char *t){ + return (charArray *)(t); + } + +typedef hid_t hid_tArray; + +SWIGINTERN hid_tArray *new_hid_tArray(size_t nelements){ + return (hid_t *)malloc((nelements)*sizeof(hid_t)); + } +SWIGINTERN void delete_hid_tArray(hid_tArray *self){ + free((char*)self); + } +SWIGINTERN hid_t hid_tArray___getitem__(hid_tArray *self,size_t index){ + return self[index]; + } +SWIGINTERN void hid_tArray___setitem__(hid_tArray *self,size_t index,hid_t value){ + self[index] = value; + } +SWIGINTERN hid_t *hid_tArray_cast(hid_tArray *self){ + return self; + } +SWIGINTERN hid_tArray *hid_tArray_frompointer(hid_t *t){ + return (hid_tArray *)(t); + } +#ifdef __cplusplus +extern "C" { +#endif +SWIGINTERN PyObject *_wrap_H5PartFile_file_set(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + H5PartFile *arg1 = (H5PartFile *) 0 ; + hid_t arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:H5PartFile_file_set",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_H5PartFile, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "H5PartFile_file_set" "', argument " "1"" of type '" "H5PartFile *""'"); + } + arg1 = (H5PartFile *)(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "H5PartFile_file_set" "', argument " "2"" of type '" "hid_t""'"); + } + arg2 = (hid_t)(val2); + if (arg1) (arg1)->file = arg2; + + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5PartFile_file_get(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + H5PartFile *arg1 = (H5PartFile *) 0 ; + hid_t result; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:H5PartFile_file_get",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_H5PartFile, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "H5PartFile_file_get" "', argument " "1"" of type '" "H5PartFile *""'"); + } + arg1 = (H5PartFile *)(argp1); + result = (hid_t) ((arg1)->file); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5PartFile_timestep_set(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + H5PartFile *arg1 = (H5PartFile *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:H5PartFile_timestep_set",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_H5PartFile, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "H5PartFile_timestep_set" "', argument " "1"" of type '" "H5PartFile *""'"); + } + arg1 = (H5PartFile *)(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "H5PartFile_timestep_set" "', argument " "2"" of type '" "int""'"); + } + arg2 = (int)(val2); + if (arg1) (arg1)->timestep = arg2; + + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5PartFile_timestep_get(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + H5PartFile *arg1 = (H5PartFile *) 0 ; + int result; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:H5PartFile_timestep_get",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_H5PartFile, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "H5PartFile_timestep_get" "', argument " "1"" of type '" "H5PartFile *""'"); + } + arg1 = (H5PartFile *)(argp1); + result = (int) ((arg1)->timestep); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5PartFile_timegroup_set(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + H5PartFile *arg1 = (H5PartFile *) 0 ; + hid_t arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:H5PartFile_timegroup_set",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_H5PartFile, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "H5PartFile_timegroup_set" "', argument " "1"" of type '" "H5PartFile *""'"); + } + arg1 = (H5PartFile *)(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "H5PartFile_timegroup_set" "', argument " "2"" of type '" "hid_t""'"); + } + arg2 = (hid_t)(val2); + if (arg1) (arg1)->timegroup = arg2; + + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5PartFile_timegroup_get(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + H5PartFile *arg1 = (H5PartFile *) 0 ; + hid_t result; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:H5PartFile_timegroup_get",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_H5PartFile, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "H5PartFile_timegroup_get" "', argument " "1"" of type '" "H5PartFile *""'"); + } + arg1 = (H5PartFile *)(argp1); + result = (hid_t) ((arg1)->timegroup); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5PartFile_properties_set(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + H5PartFile *arg1 = (H5PartFile *) 0 ; + hid_t arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:H5PartFile_properties_set",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_H5PartFile, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "H5PartFile_properties_set" "', argument " "1"" of type '" "H5PartFile *""'"); + } + arg1 = (H5PartFile *)(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "H5PartFile_properties_set" "', argument " "2"" of type '" "hid_t""'"); + } + arg2 = (hid_t)(val2); + if (arg1) (arg1)->properties = arg2; + + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5PartFile_properties_get(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + H5PartFile *arg1 = (H5PartFile *) 0 ; + hid_t result; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:H5PartFile_properties_get",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_H5PartFile, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "H5PartFile_properties_get" "', argument " "1"" of type '" "H5PartFile *""'"); + } + arg1 = (H5PartFile *)(argp1); + result = (hid_t) ((arg1)->properties); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5PartFile_nparticles_set(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + H5PartFile *arg1 = (H5PartFile *) 0 ; + hsize_t arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + unsigned long long val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:H5PartFile_nparticles_set",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_H5PartFile, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "H5PartFile_nparticles_set" "', argument " "1"" of type '" "H5PartFile *""'"); + } + arg1 = (H5PartFile *)(argp1); + ecode2 = SWIG_AsVal_unsigned_SS_long_SS_long(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "H5PartFile_nparticles_set" "', argument " "2"" of type '" "hsize_t""'"); + } + arg2 = (hsize_t)(val2); + if (arg1) (arg1)->nparticles = arg2; + + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5PartFile_nparticles_get(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + H5PartFile *arg1 = (H5PartFile *) 0 ; + hsize_t result; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:H5PartFile_nparticles_get",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_H5PartFile, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "H5PartFile_nparticles_get" "', argument " "1"" of type '" "H5PartFile *""'"); + } + arg1 = (H5PartFile *)(argp1); + result = (hsize_t) ((arg1)->nparticles); + resultobj = SWIG_From_unsigned_SS_long_SS_long((unsigned long long)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5PartFile_shape_set(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + H5PartFile *arg1 = (H5PartFile *) 0 ; + hid_t arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:H5PartFile_shape_set",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_H5PartFile, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "H5PartFile_shape_set" "', argument " "1"" of type '" "H5PartFile *""'"); + } + arg1 = (H5PartFile *)(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "H5PartFile_shape_set" "', argument " "2"" of type '" "hid_t""'"); + } + arg2 = (hid_t)(val2); + if (arg1) (arg1)->shape = arg2; + + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5PartFile_shape_get(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + H5PartFile *arg1 = (H5PartFile *) 0 ; + hid_t result; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:H5PartFile_shape_get",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_H5PartFile, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "H5PartFile_shape_get" "', argument " "1"" of type '" "H5PartFile *""'"); + } + arg1 = (H5PartFile *)(argp1); + result = (hid_t) ((arg1)->shape); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5PartFile_mode_set(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + H5PartFile *arg1 = (H5PartFile *) 0 ; + unsigned int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + unsigned int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:H5PartFile_mode_set",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_H5PartFile, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "H5PartFile_mode_set" "', argument " "1"" of type '" "H5PartFile *""'"); + } + arg1 = (H5PartFile *)(argp1); + ecode2 = SWIG_AsVal_unsigned_SS_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "H5PartFile_mode_set" "', argument " "2"" of type '" "unsigned int""'"); + } + arg2 = (unsigned int)(val2); + if (arg1) (arg1)->mode = arg2; + + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5PartFile_mode_get(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + H5PartFile *arg1 = (H5PartFile *) 0 ; + unsigned int result; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:H5PartFile_mode_get",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_H5PartFile, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "H5PartFile_mode_get" "', argument " "1"" of type '" "H5PartFile *""'"); + } + arg1 = (H5PartFile *)(argp1); + result = (unsigned int) ((arg1)->mode); + resultobj = SWIG_From_unsigned_SS_int((unsigned int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5PartFile_maxstep_set(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + H5PartFile *arg1 = (H5PartFile *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:H5PartFile_maxstep_set",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_H5PartFile, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "H5PartFile_maxstep_set" "', argument " "1"" of type '" "H5PartFile *""'"); + } + arg1 = (H5PartFile *)(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "H5PartFile_maxstep_set" "', argument " "2"" of type '" "int""'"); + } + arg2 = (int)(val2); + if (arg1) (arg1)->maxstep = arg2; + + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5PartFile_maxstep_get(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + H5PartFile *arg1 = (H5PartFile *) 0 ; + int result; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:H5PartFile_maxstep_get",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_H5PartFile, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "H5PartFile_maxstep_get" "', argument " "1"" of type '" "H5PartFile *""'"); + } + arg1 = (H5PartFile *)(argp1); + result = (int) ((arg1)->maxstep); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5PartFile_xfer_prop_set(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + H5PartFile *arg1 = (H5PartFile *) 0 ; + hid_t arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:H5PartFile_xfer_prop_set",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_H5PartFile, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "H5PartFile_xfer_prop_set" "', argument " "1"" of type '" "H5PartFile *""'"); + } + arg1 = (H5PartFile *)(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "H5PartFile_xfer_prop_set" "', argument " "2"" of type '" "hid_t""'"); + } + arg2 = (hid_t)(val2); + if (arg1) (arg1)->xfer_prop = arg2; + + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5PartFile_xfer_prop_get(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + H5PartFile *arg1 = (H5PartFile *) 0 ; + hid_t result; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:H5PartFile_xfer_prop_get",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_H5PartFile, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "H5PartFile_xfer_prop_get" "', argument " "1"" of type '" "H5PartFile *""'"); + } + arg1 = (H5PartFile *)(argp1); + result = (hid_t) ((arg1)->xfer_prop); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5PartFile_create_prop_set(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + H5PartFile *arg1 = (H5PartFile *) 0 ; + hid_t arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:H5PartFile_create_prop_set",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_H5PartFile, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "H5PartFile_create_prop_set" "', argument " "1"" of type '" "H5PartFile *""'"); + } + arg1 = (H5PartFile *)(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "H5PartFile_create_prop_set" "', argument " "2"" of type '" "hid_t""'"); + } + arg2 = (hid_t)(val2); + if (arg1) (arg1)->create_prop = arg2; + + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5PartFile_create_prop_get(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + H5PartFile *arg1 = (H5PartFile *) 0 ; + hid_t result; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:H5PartFile_create_prop_get",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_H5PartFile, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "H5PartFile_create_prop_get" "', argument " "1"" of type '" "H5PartFile *""'"); + } + arg1 = (H5PartFile *)(argp1); + result = (hid_t) ((arg1)->create_prop); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5PartFile_access_prop_set(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + H5PartFile *arg1 = (H5PartFile *) 0 ; + hid_t arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:H5PartFile_access_prop_set",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_H5PartFile, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "H5PartFile_access_prop_set" "', argument " "1"" of type '" "H5PartFile *""'"); + } + arg1 = (H5PartFile *)(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "H5PartFile_access_prop_set" "', argument " "2"" of type '" "hid_t""'"); + } + arg2 = (hid_t)(val2); + if (arg1) (arg1)->access_prop = arg2; + + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5PartFile_access_prop_get(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + H5PartFile *arg1 = (H5PartFile *) 0 ; + hid_t result; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:H5PartFile_access_prop_get",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_H5PartFile, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "H5PartFile_access_prop_get" "', argument " "1"" of type '" "H5PartFile *""'"); + } + arg1 = (H5PartFile *)(argp1); + result = (hid_t) ((arg1)->access_prop); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5PartFile_diskshape_set(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + H5PartFile *arg1 = (H5PartFile *) 0 ; + hid_t arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:H5PartFile_diskshape_set",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_H5PartFile, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "H5PartFile_diskshape_set" "', argument " "1"" of type '" "H5PartFile *""'"); + } + arg1 = (H5PartFile *)(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "H5PartFile_diskshape_set" "', argument " "2"" of type '" "hid_t""'"); + } + arg2 = (hid_t)(val2); + if (arg1) (arg1)->diskshape = arg2; + + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5PartFile_diskshape_get(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + H5PartFile *arg1 = (H5PartFile *) 0 ; + hid_t result; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:H5PartFile_diskshape_get",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_H5PartFile, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "H5PartFile_diskshape_get" "', argument " "1"" of type '" "H5PartFile *""'"); + } + arg1 = (H5PartFile *)(argp1); + result = (hid_t) ((arg1)->diskshape); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5PartFile_memshape_set(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + H5PartFile *arg1 = (H5PartFile *) 0 ; + hid_t arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:H5PartFile_memshape_set",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_H5PartFile, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "H5PartFile_memshape_set" "', argument " "1"" of type '" "H5PartFile *""'"); + } + arg1 = (H5PartFile *)(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "H5PartFile_memshape_set" "', argument " "2"" of type '" "hid_t""'"); + } + arg2 = (hid_t)(val2); + if (arg1) (arg1)->memshape = arg2; + + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5PartFile_memshape_get(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + H5PartFile *arg1 = (H5PartFile *) 0 ; + hid_t result; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:H5PartFile_memshape_get",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_H5PartFile, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "H5PartFile_memshape_get" "', argument " "1"" of type '" "H5PartFile *""'"); + } + arg1 = (H5PartFile *)(argp1); + result = (hid_t) ((arg1)->memshape); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5PartFile_viewstart_set(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + H5PartFile *arg1 = (H5PartFile *) 0 ; + long long arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + long long val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:H5PartFile_viewstart_set",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_H5PartFile, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "H5PartFile_viewstart_set" "', argument " "1"" of type '" "H5PartFile *""'"); + } + arg1 = (H5PartFile *)(argp1); + ecode2 = SWIG_AsVal_long_SS_long(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "H5PartFile_viewstart_set" "', argument " "2"" of type '" "long long""'"); + } + arg2 = (long long)(val2); + if (arg1) (arg1)->viewstart = arg2; + + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5PartFile_viewstart_get(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + H5PartFile *arg1 = (H5PartFile *) 0 ; + long long result; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:H5PartFile_viewstart_get",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_H5PartFile, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "H5PartFile_viewstart_get" "', argument " "1"" of type '" "H5PartFile *""'"); + } + arg1 = (H5PartFile *)(argp1); + result = (long long) ((arg1)->viewstart); + resultobj = SWIG_From_long_SS_long((long long)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5PartFile_viewend_set(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + H5PartFile *arg1 = (H5PartFile *) 0 ; + long long arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + long long val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:H5PartFile_viewend_set",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_H5PartFile, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "H5PartFile_viewend_set" "', argument " "1"" of type '" "H5PartFile *""'"); + } + arg1 = (H5PartFile *)(argp1); + ecode2 = SWIG_AsVal_long_SS_long(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "H5PartFile_viewend_set" "', argument " "2"" of type '" "long long""'"); + } + arg2 = (long long)(val2); + if (arg1) (arg1)->viewend = arg2; + + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5PartFile_viewend_get(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + H5PartFile *arg1 = (H5PartFile *) 0 ; + long long result; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:H5PartFile_viewend_get",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_H5PartFile, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "H5PartFile_viewend_get" "', argument " "1"" of type '" "H5PartFile *""'"); + } + arg1 = (H5PartFile *)(argp1); + result = (long long) ((arg1)->viewend); + resultobj = SWIG_From_long_SS_long((long long)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_new_H5PartFile(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + H5PartFile *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)":new_H5PartFile")) SWIG_fail; + result = (H5PartFile *)(H5PartFile *) calloc(1, sizeof(H5PartFile)); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_H5PartFile, SWIG_POINTER_NEW | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_delete_H5PartFile(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + H5PartFile *arg1 = (H5PartFile *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:delete_H5PartFile",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_H5PartFile, SWIG_POINTER_DISOWN | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_H5PartFile" "', argument " "1"" of type '" "H5PartFile *""'"); + } + arg1 = (H5PartFile *)(argp1); + free((char *) arg1); + + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *H5PartFile_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *obj; + if (!PyArg_ParseTuple(args,(char*)"O|swigregister", &obj)) return NULL; + SWIG_TypeNewClientData(SWIGTYPE_p_H5PartFile, SWIG_NewClientData(obj)); + return SWIG_Py_Void(); +} + +SWIGINTERN PyObject *_wrap_H5PartOpenFile(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + char *arg1 = (char *) 0 ; + unsigned int arg2 ; + H5PartFile *result = 0 ; + int res1 ; + char *buf1 = 0 ; + int alloc1 = 0 ; + unsigned int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:H5PartOpenFile",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_AsCharPtrAndSize(obj0, &buf1, NULL, &alloc1); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "H5PartOpenFile" "', argument " "1"" of type '" "char const *""'"); + } + arg1 = buf1; + ecode2 = SWIG_AsVal_unsigned_SS_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "H5PartOpenFile" "', argument " "2"" of type '" "unsigned int""'"); + } + arg2 = (unsigned int)(val2); + result = (H5PartFile *)H5PartOpenFile((char const *)arg1,arg2); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_H5PartFile, 0 | 0 ); + if (alloc1 == SWIG_NEWOBJ) free((char*)buf1); + return resultobj; +fail: + if (alloc1 == SWIG_NEWOBJ) free((char*)buf1); + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5PartFileIsValid(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + H5PartFile *arg1 = (H5PartFile *) 0 ; + int result; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:H5PartFileIsValid",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_H5PartFile, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "H5PartFileIsValid" "', argument " "1"" of type '" "H5PartFile *""'"); + } + arg1 = (H5PartFile *)(argp1); + result = (int)H5PartFileIsValid(arg1); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5PartCloseFile(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + H5PartFile *arg1 = (H5PartFile *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:H5PartCloseFile",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_H5PartFile, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "H5PartCloseFile" "', argument " "1"" of type '" "H5PartFile *""'"); + } + arg1 = (H5PartFile *)(argp1); + H5PartCloseFile(arg1); + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5PartSetNumParticles(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + H5PartFile *arg1 = (H5PartFile *) 0 ; + long long arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + long long val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:H5PartSetNumParticles",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_H5PartFile, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "H5PartSetNumParticles" "', argument " "1"" of type '" "H5PartFile *""'"); + } + arg1 = (H5PartFile *)(argp1); + ecode2 = SWIG_AsVal_long_SS_long(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "H5PartSetNumParticles" "', argument " "2"" of type '" "long long""'"); + } + arg2 = (long long)(val2); + H5PartSetNumParticles(arg1,arg2); + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5PartWriteDataFloat64(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + H5PartFile *arg1 = (H5PartFile *) 0 ; + char *arg2 = (char *) 0 ; + double *arg3 = (double *) 0 ; + int result; + void *argp1 = 0 ; + int res1 = 0 ; + int res2 ; + char *buf2 = 0 ; + int alloc2 = 0 ; + void *argp3 = 0 ; + int res3 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OOO:H5PartWriteDataFloat64",&obj0,&obj1,&obj2)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_H5PartFile, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "H5PartWriteDataFloat64" "', argument " "1"" of type '" "H5PartFile *""'"); + } + arg1 = (H5PartFile *)(argp1); + res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "H5PartWriteDataFloat64" "', argument " "2"" of type '" "char *""'"); + } + arg2 = buf2; + res3 = SWIG_ConvertPtr(obj2, &argp3,SWIGTYPE_p_double, 0 | 0 ); + if (!SWIG_IsOK(res3)) { + SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "H5PartWriteDataFloat64" "', argument " "3"" of type '" "double *""'"); + } + arg3 = (double *)(argp3); + result = (int)H5PartWriteDataFloat64(arg1,arg2,arg3); + resultobj = SWIG_From_int((int)(result)); + if (alloc2 == SWIG_NEWOBJ) free((char*)buf2); + return resultobj; +fail: + if (alloc2 == SWIG_NEWOBJ) free((char*)buf2); + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5PartWriteDataInt64(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + H5PartFile *arg1 = (H5PartFile *) 0 ; + char *arg2 = (char *) 0 ; + long long *arg3 = (long long *) 0 ; + int result; + void *argp1 = 0 ; + int res1 = 0 ; + int res2 ; + char *buf2 = 0 ; + int alloc2 = 0 ; + void *argp3 = 0 ; + int res3 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OOO:H5PartWriteDataInt64",&obj0,&obj1,&obj2)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_H5PartFile, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "H5PartWriteDataInt64" "', argument " "1"" of type '" "H5PartFile *""'"); + } + arg1 = (H5PartFile *)(argp1); + res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "H5PartWriteDataInt64" "', argument " "2"" of type '" "char *""'"); + } + arg2 = buf2; + res3 = SWIG_ConvertPtr(obj2, &argp3,SWIGTYPE_p_long_long, 0 | 0 ); + if (!SWIG_IsOK(res3)) { + SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "H5PartWriteDataInt64" "', argument " "3"" of type '" "long long *""'"); + } + arg3 = (long long *)(argp3); + result = (int)H5PartWriteDataInt64(arg1,arg2,arg3); + resultobj = SWIG_From_int((int)(result)); + if (alloc2 == SWIG_NEWOBJ) free((char*)buf2); + return resultobj; +fail: + if (alloc2 == SWIG_NEWOBJ) free((char*)buf2); + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5PartSetStep(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + H5PartFile *arg1 = (H5PartFile *) 0 ; + int arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:H5PartSetStep",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_H5PartFile, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "H5PartSetStep" "', argument " "1"" of type '" "H5PartFile *""'"); + } + arg1 = (H5PartFile *)(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "H5PartSetStep" "', argument " "2"" of type '" "int""'"); + } + arg2 = (int)(val2); + H5PartSetStep(arg1,arg2); + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5PartGetNumSteps(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + H5PartFile *arg1 = (H5PartFile *) 0 ; + int result; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:H5PartGetNumSteps",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_H5PartFile, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "H5PartGetNumSteps" "', argument " "1"" of type '" "H5PartFile *""'"); + } + arg1 = (H5PartFile *)(argp1); + result = (int)H5PartGetNumSteps(arg1); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5PartGetNumDatasets(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + H5PartFile *arg1 = (H5PartFile *) 0 ; + int result; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:H5PartGetNumDatasets",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_H5PartFile, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "H5PartGetNumDatasets" "', argument " "1"" of type '" "H5PartFile *""'"); + } + arg1 = (H5PartFile *)(argp1); + result = (int)H5PartGetNumDatasets(arg1); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5PartGetDatasetName__SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + H5PartFile *arg1 = (H5PartFile *) 0 ; + int arg2 ; + char *arg3 = (char *) 0 ; + int arg4 ; + int result; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + int res3 ; + char *buf3 = 0 ; + int alloc3 = 0 ; + int val4 ; + int ecode4 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + PyObject * obj3 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OOOO:H5PartGetDatasetName",&obj0,&obj1,&obj2,&obj3)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_H5PartFile, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "H5PartGetDatasetName" "', argument " "1"" of type '" "H5PartFile *""'"); + } + arg1 = (H5PartFile *)(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "H5PartGetDatasetName" "', argument " "2"" of type '" "int""'"); + } + arg2 = (int)(val2); + res3 = SWIG_AsCharPtrAndSize(obj2, &buf3, NULL, &alloc3); + if (!SWIG_IsOK(res3)) { + SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "H5PartGetDatasetName" "', argument " "3"" of type '" "char *""'"); + } + arg3 = buf3; + ecode4 = SWIG_AsVal_int(obj3, &val4); + if (!SWIG_IsOK(ecode4)) { + SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "H5PartGetDatasetName" "', argument " "4"" of type '" "int""'"); + } + arg4 = (int)(val4); + result = (int)H5PartGetDatasetName(arg1,arg2,arg3,arg4); + resultobj = SWIG_From_int((int)(result)); + if (alloc3 == SWIG_NEWOBJ) free((char*)buf3); + return resultobj; +fail: + if (alloc3 == SWIG_NEWOBJ) free((char*)buf3); + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5PartGetDatasetInfo__SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + H5PartFile *arg1 = (H5PartFile *) 0 ; + int arg2 ; + char *arg3 = (char *) 0 ; + size_t arg4 ; + hid_t *arg5 = (hid_t *) 0 ; + long long *arg6 = (long long *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + int res3 ; + char *buf3 = 0 ; + int alloc3 = 0 ; + size_t val4 ; + int ecode4 = 0 ; + void *argp5 = 0 ; + int res5 = 0 ; + void *argp6 = 0 ; + int res6 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + PyObject * obj3 = 0 ; + PyObject * obj4 = 0 ; + PyObject * obj5 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OOOOOO:H5PartGetDatasetInfo",&obj0,&obj1,&obj2,&obj3,&obj4,&obj5)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_H5PartFile, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "H5PartGetDatasetInfo" "', argument " "1"" of type '" "H5PartFile *""'"); + } + arg1 = (H5PartFile *)(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "H5PartGetDatasetInfo" "', argument " "2"" of type '" "int""'"); + } + arg2 = (int)(val2); + res3 = SWIG_AsCharPtrAndSize(obj2, &buf3, NULL, &alloc3); + if (!SWIG_IsOK(res3)) { + SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "H5PartGetDatasetInfo" "', argument " "3"" of type '" "char *""'"); + } + arg3 = buf3; + ecode4 = SWIG_AsVal_size_t(obj3, &val4); + if (!SWIG_IsOK(ecode4)) { + SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "H5PartGetDatasetInfo" "', argument " "4"" of type '" "size_t""'"); + } + arg4 = (size_t)(val4); + res5 = SWIG_ConvertPtr(obj4, &argp5,SWIGTYPE_p_int, 0 | 0 ); + if (!SWIG_IsOK(res5)) { + SWIG_exception_fail(SWIG_ArgError(res5), "in method '" "H5PartGetDatasetInfo" "', argument " "5"" of type '" "hid_t *""'"); + } + arg5 = (hid_t *)(argp5); + res6 = SWIG_ConvertPtr(obj5, &argp6,SWIGTYPE_p_long_long, 0 | 0 ); + if (!SWIG_IsOK(res6)) { + SWIG_exception_fail(SWIG_ArgError(res6), "in method '" "H5PartGetDatasetInfo" "', argument " "6"" of type '" "long long *""'"); + } + arg6 = (long long *)(argp6); + H5PartGetDatasetInfo(arg1,arg2,arg3,arg4,arg5,arg6); + resultobj = SWIG_Py_Void(); + if (alloc3 == SWIG_NEWOBJ) free((char*)buf3); + return resultobj; +fail: + if (alloc3 == SWIG_NEWOBJ) free((char*)buf3); + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5PartNormType(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + hid_t arg1 ; + hid_t result; + int val1 ; + int ecode1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:H5PartNormType",&obj0)) SWIG_fail; + ecode1 = SWIG_AsVal_int(obj0, &val1); + if (!SWIG_IsOK(ecode1)) { + SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "H5PartNormType" "', argument " "1"" of type '" "hid_t""'"); + } + arg1 = (hid_t)(val1); + result = (hid_t)H5PartNormType(arg1); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5PartGetNumParticles(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + H5PartFile *arg1 = (H5PartFile *) 0 ; + long long result; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:H5PartGetNumParticles",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_H5PartFile, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "H5PartGetNumParticles" "', argument " "1"" of type '" "H5PartFile *""'"); + } + arg1 = (H5PartFile *)(argp1); + result = (long long)H5PartGetNumParticles(arg1); + resultobj = SWIG_From_long_SS_long((long long)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5PartSetView(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + H5PartFile *arg1 = (H5PartFile *) 0 ; + long long arg2 ; + long long arg3 ; + void *argp1 = 0 ; + int res1 = 0 ; + long long val2 ; + int ecode2 = 0 ; + long long val3 ; + int ecode3 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OOO:H5PartSetView",&obj0,&obj1,&obj2)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_H5PartFile, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "H5PartSetView" "', argument " "1"" of type '" "H5PartFile *""'"); + } + arg1 = (H5PartFile *)(argp1); + ecode2 = SWIG_AsVal_long_SS_long(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "H5PartSetView" "', argument " "2"" of type '" "long long""'"); + } + arg2 = (long long)(val2); + ecode3 = SWIG_AsVal_long_SS_long(obj2, &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "H5PartSetView" "', argument " "3"" of type '" "long long""'"); + } + arg3 = (long long)(val3); + H5PartSetView(arg1,arg2,arg3); + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5PartGetView(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + H5PartFile *arg1 = (H5PartFile *) 0 ; + long long *arg2 = (long long *) 0 ; + long long *arg3 = (long long *) 0 ; + int result; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + void *argp3 = 0 ; + int res3 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OOO:H5PartGetView",&obj0,&obj1,&obj2)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_H5PartFile, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "H5PartGetView" "', argument " "1"" of type '" "H5PartFile *""'"); + } + arg1 = (H5PartFile *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_long_long, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "H5PartGetView" "', argument " "2"" of type '" "long long *""'"); + } + arg2 = (long long *)(argp2); + res3 = SWIG_ConvertPtr(obj2, &argp3,SWIGTYPE_p_long_long, 0 | 0 ); + if (!SWIG_IsOK(res3)) { + SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "H5PartGetView" "', argument " "3"" of type '" "long long *""'"); + } + arg3 = (long long *)(argp3); + result = (int)H5PartGetView(arg1,arg2,arg3); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5PartSetCanonicalView(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + H5PartFile *arg1 = (H5PartFile *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:H5PartSetCanonicalView",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_H5PartFile, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "H5PartSetCanonicalView" "', argument " "1"" of type '" "H5PartFile *""'"); + } + arg1 = (H5PartFile *)(argp1); + H5PartSetCanonicalView(arg1); + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5PartReadDataFloat64(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + H5PartFile *arg1 = (H5PartFile *) 0 ; + char *arg2 = (char *) 0 ; + double *arg3 = (double *) 0 ; + int result; + void *argp1 = 0 ; + int res1 = 0 ; + int res2 ; + char *buf2 = 0 ; + int alloc2 = 0 ; + void *argp3 = 0 ; + int res3 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OOO:H5PartReadDataFloat64",&obj0,&obj1,&obj2)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_H5PartFile, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "H5PartReadDataFloat64" "', argument " "1"" of type '" "H5PartFile *""'"); + } + arg1 = (H5PartFile *)(argp1); + res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "H5PartReadDataFloat64" "', argument " "2"" of type '" "char *""'"); + } + arg2 = buf2; + res3 = SWIG_ConvertPtr(obj2, &argp3,SWIGTYPE_p_double, 0 | 0 ); + if (!SWIG_IsOK(res3)) { + SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "H5PartReadDataFloat64" "', argument " "3"" of type '" "double *""'"); + } + arg3 = (double *)(argp3); + result = (int)H5PartReadDataFloat64(arg1,arg2,arg3); + resultobj = SWIG_From_int((int)(result)); + if (alloc2 == SWIG_NEWOBJ) free((char*)buf2); + return resultobj; +fail: + if (alloc2 == SWIG_NEWOBJ) free((char*)buf2); + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5PartReadDataInt64(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + H5PartFile *arg1 = (H5PartFile *) 0 ; + char *arg2 = (char *) 0 ; + long long *arg3 = (long long *) 0 ; + int result; + void *argp1 = 0 ; + int res1 = 0 ; + int res2 ; + char *buf2 = 0 ; + int alloc2 = 0 ; + void *argp3 = 0 ; + int res3 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OOO:H5PartReadDataInt64",&obj0,&obj1,&obj2)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_H5PartFile, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "H5PartReadDataInt64" "', argument " "1"" of type '" "H5PartFile *""'"); + } + arg1 = (H5PartFile *)(argp1); + res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "H5PartReadDataInt64" "', argument " "2"" of type '" "char *""'"); + } + arg2 = buf2; + res3 = SWIG_ConvertPtr(obj2, &argp3,SWIGTYPE_p_long_long, 0 | 0 ); + if (!SWIG_IsOK(res3)) { + SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "H5PartReadDataInt64" "', argument " "3"" of type '" "long long *""'"); + } + arg3 = (long long *)(argp3); + result = (int)H5PartReadDataInt64(arg1,arg2,arg3); + resultobj = SWIG_From_int((int)(result)); + if (alloc2 == SWIG_NEWOBJ) free((char*)buf2); + return resultobj; +fail: + if (alloc2 == SWIG_NEWOBJ) free((char*)buf2); + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5PartReadParticleStep(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + H5PartFile *arg1 = (H5PartFile *) 0 ; + int arg2 ; + double *arg3 = (double *) 0 ; + double *arg4 = (double *) 0 ; + double *arg5 = (double *) 0 ; + double *arg6 = (double *) 0 ; + double *arg7 = (double *) 0 ; + double *arg8 = (double *) 0 ; + long long *arg9 = (long long *) 0 ; + int result; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + void *argp3 = 0 ; + int res3 = 0 ; + void *argp4 = 0 ; + int res4 = 0 ; + void *argp5 = 0 ; + int res5 = 0 ; + void *argp6 = 0 ; + int res6 = 0 ; + void *argp7 = 0 ; + int res7 = 0 ; + void *argp8 = 0 ; + int res8 = 0 ; + void *argp9 = 0 ; + int res9 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + PyObject * obj3 = 0 ; + PyObject * obj4 = 0 ; + PyObject * obj5 = 0 ; + PyObject * obj6 = 0 ; + PyObject * obj7 = 0 ; + PyObject * obj8 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OOOOOOOOO:H5PartReadParticleStep",&obj0,&obj1,&obj2,&obj3,&obj4,&obj5,&obj6,&obj7,&obj8)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_H5PartFile, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "H5PartReadParticleStep" "', argument " "1"" of type '" "H5PartFile *""'"); + } + arg1 = (H5PartFile *)(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "H5PartReadParticleStep" "', argument " "2"" of type '" "int""'"); + } + arg2 = (int)(val2); + res3 = SWIG_ConvertPtr(obj2, &argp3,SWIGTYPE_p_double, 0 | 0 ); + if (!SWIG_IsOK(res3)) { + SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "H5PartReadParticleStep" "', argument " "3"" of type '" "double *""'"); + } + arg3 = (double *)(argp3); + res4 = SWIG_ConvertPtr(obj3, &argp4,SWIGTYPE_p_double, 0 | 0 ); + if (!SWIG_IsOK(res4)) { + SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "H5PartReadParticleStep" "', argument " "4"" of type '" "double *""'"); + } + arg4 = (double *)(argp4); + res5 = SWIG_ConvertPtr(obj4, &argp5,SWIGTYPE_p_double, 0 | 0 ); + if (!SWIG_IsOK(res5)) { + SWIG_exception_fail(SWIG_ArgError(res5), "in method '" "H5PartReadParticleStep" "', argument " "5"" of type '" "double *""'"); + } + arg5 = (double *)(argp5); + res6 = SWIG_ConvertPtr(obj5, &argp6,SWIGTYPE_p_double, 0 | 0 ); + if (!SWIG_IsOK(res6)) { + SWIG_exception_fail(SWIG_ArgError(res6), "in method '" "H5PartReadParticleStep" "', argument " "6"" of type '" "double *""'"); + } + arg6 = (double *)(argp6); + res7 = SWIG_ConvertPtr(obj6, &argp7,SWIGTYPE_p_double, 0 | 0 ); + if (!SWIG_IsOK(res7)) { + SWIG_exception_fail(SWIG_ArgError(res7), "in method '" "H5PartReadParticleStep" "', argument " "7"" of type '" "double *""'"); + } + arg7 = (double *)(argp7); + res8 = SWIG_ConvertPtr(obj7, &argp8,SWIGTYPE_p_double, 0 | 0 ); + if (!SWIG_IsOK(res8)) { + SWIG_exception_fail(SWIG_ArgError(res8), "in method '" "H5PartReadParticleStep" "', argument " "8"" of type '" "double *""'"); + } + arg8 = (double *)(argp8); + res9 = SWIG_ConvertPtr(obj8, &argp9,SWIGTYPE_p_long_long, 0 | 0 ); + if (!SWIG_IsOK(res9)) { + SWIG_exception_fail(SWIG_ArgError(res9), "in method '" "H5PartReadParticleStep" "', argument " "9"" of type '" "long long *""'"); + } + arg9 = (long long *)(argp9); + result = (int)H5PartReadParticleStep(arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5PartWriteStepAttrib(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + H5PartFile *arg1 = (H5PartFile *) 0 ; + char *arg2 = (char *) 0 ; + hid_t arg3 ; + void *arg4 = (void *) 0 ; + int arg5 ; + int result; + void *argp1 = 0 ; + int res1 = 0 ; + int res2 ; + char *buf2 = 0 ; + int alloc2 = 0 ; + int val3 ; + int ecode3 = 0 ; + int res4 ; + int val5 ; + int ecode5 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + PyObject * obj3 = 0 ; + PyObject * obj4 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OOOOO:H5PartWriteStepAttrib",&obj0,&obj1,&obj2,&obj3,&obj4)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_H5PartFile, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "H5PartWriteStepAttrib" "', argument " "1"" of type '" "H5PartFile *""'"); + } + arg1 = (H5PartFile *)(argp1); + res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "H5PartWriteStepAttrib" "', argument " "2"" of type '" "char *""'"); + } + arg2 = buf2; + ecode3 = SWIG_AsVal_int(obj2, &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "H5PartWriteStepAttrib" "', argument " "3"" of type '" "hid_t""'"); + } + arg3 = (hid_t)(val3); + res4 = SWIG_ConvertPtr(obj3,SWIG_as_voidptrptr(&arg4), 0, 0); + if (!SWIG_IsOK(res4)) { + SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "H5PartWriteStepAttrib" "', argument " "4"" of type '" "void *""'"); + } + ecode5 = SWIG_AsVal_int(obj4, &val5); + if (!SWIG_IsOK(ecode5)) { + SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "H5PartWriteStepAttrib" "', argument " "5"" of type '" "int""'"); + } + arg5 = (int)(val5); + result = (int)H5PartWriteStepAttrib(arg1,arg2,arg3,arg4,arg5); + resultobj = SWIG_From_int((int)(result)); + if (alloc2 == SWIG_NEWOBJ) free((char*)buf2); + return resultobj; +fail: + if (alloc2 == SWIG_NEWOBJ) free((char*)buf2); + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5PartWriteFileAttrib(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + H5PartFile *arg1 = (H5PartFile *) 0 ; + char *arg2 = (char *) 0 ; + hid_t arg3 ; + void *arg4 = (void *) 0 ; + int arg5 ; + int result; + void *argp1 = 0 ; + int res1 = 0 ; + int res2 ; + char *buf2 = 0 ; + int alloc2 = 0 ; + int val3 ; + int ecode3 = 0 ; + int res4 ; + int val5 ; + int ecode5 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + PyObject * obj3 = 0 ; + PyObject * obj4 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OOOOO:H5PartWriteFileAttrib",&obj0,&obj1,&obj2,&obj3,&obj4)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_H5PartFile, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "H5PartWriteFileAttrib" "', argument " "1"" of type '" "H5PartFile *""'"); + } + arg1 = (H5PartFile *)(argp1); + res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "H5PartWriteFileAttrib" "', argument " "2"" of type '" "char *""'"); + } + arg2 = buf2; + ecode3 = SWIG_AsVal_int(obj2, &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "H5PartWriteFileAttrib" "', argument " "3"" of type '" "hid_t""'"); + } + arg3 = (hid_t)(val3); + res4 = SWIG_ConvertPtr(obj3,SWIG_as_voidptrptr(&arg4), 0, 0); + if (!SWIG_IsOK(res4)) { + SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "H5PartWriteFileAttrib" "', argument " "4"" of type '" "void *""'"); + } + ecode5 = SWIG_AsVal_int(obj4, &val5); + if (!SWIG_IsOK(ecode5)) { + SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "H5PartWriteFileAttrib" "', argument " "5"" of type '" "int""'"); + } + arg5 = (int)(val5); + result = (int)H5PartWriteFileAttrib(arg1,arg2,arg3,arg4,arg5); + resultobj = SWIG_From_int((int)(result)); + if (alloc2 == SWIG_NEWOBJ) free((char*)buf2); + return resultobj; +fail: + if (alloc2 == SWIG_NEWOBJ) free((char*)buf2); + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5PartWriteAttrib(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + H5PartFile *arg1 = (H5PartFile *) 0 ; + char *arg2 = (char *) 0 ; + hid_t arg3 ; + void *arg4 = (void *) 0 ; + int arg5 ; + int result; + void *argp1 = 0 ; + int res1 = 0 ; + int res2 ; + char *buf2 = 0 ; + int alloc2 = 0 ; + int val3 ; + int ecode3 = 0 ; + int res4 ; + int val5 ; + int ecode5 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + PyObject * obj3 = 0 ; + PyObject * obj4 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OOOOO:H5PartWriteAttrib",&obj0,&obj1,&obj2,&obj3,&obj4)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_H5PartFile, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "H5PartWriteAttrib" "', argument " "1"" of type '" "H5PartFile *""'"); + } + arg1 = (H5PartFile *)(argp1); + res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "H5PartWriteAttrib" "', argument " "2"" of type '" "char *""'"); + } + arg2 = buf2; + ecode3 = SWIG_AsVal_int(obj2, &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "H5PartWriteAttrib" "', argument " "3"" of type '" "hid_t""'"); + } + arg3 = (hid_t)(val3); + res4 = SWIG_ConvertPtr(obj3,SWIG_as_voidptrptr(&arg4), 0, 0); + if (!SWIG_IsOK(res4)) { + SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "H5PartWriteAttrib" "', argument " "4"" of type '" "void *""'"); + } + ecode5 = SWIG_AsVal_int(obj4, &val5); + if (!SWIG_IsOK(ecode5)) { + SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "H5PartWriteAttrib" "', argument " "5"" of type '" "int""'"); + } + arg5 = (int)(val5); + result = (int)H5PartWriteAttrib(arg1,arg2,arg3,arg4,arg5); + resultobj = SWIG_From_int((int)(result)); + if (alloc2 == SWIG_NEWOBJ) free((char*)buf2); + return resultobj; +fail: + if (alloc2 == SWIG_NEWOBJ) free((char*)buf2); + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5PartWriteFileAttribString(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + H5PartFile *arg1 = (H5PartFile *) 0 ; + char *arg2 = (char *) 0 ; + char *arg3 = (char *) 0 ; + int result; + void *argp1 = 0 ; + int res1 = 0 ; + int res2 ; + char *buf2 = 0 ; + int alloc2 = 0 ; + int res3 ; + char *buf3 = 0 ; + int alloc3 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OOO:H5PartWriteFileAttribString",&obj0,&obj1,&obj2)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_H5PartFile, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "H5PartWriteFileAttribString" "', argument " "1"" of type '" "H5PartFile *""'"); + } + arg1 = (H5PartFile *)(argp1); + res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "H5PartWriteFileAttribString" "', argument " "2"" of type '" "char *""'"); + } + arg2 = buf2; + res3 = SWIG_AsCharPtrAndSize(obj2, &buf3, NULL, &alloc3); + if (!SWIG_IsOK(res3)) { + SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "H5PartWriteFileAttribString" "', argument " "3"" of type '" "char *""'"); + } + arg3 = buf3; + result = (int)H5PartWriteFileAttribString(arg1,arg2,arg3); + resultobj = SWIG_From_int((int)(result)); + if (alloc2 == SWIG_NEWOBJ) free((char*)buf2); + if (alloc3 == SWIG_NEWOBJ) free((char*)buf3); + return resultobj; +fail: + if (alloc2 == SWIG_NEWOBJ) free((char*)buf2); + if (alloc3 == SWIG_NEWOBJ) free((char*)buf3); + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5PartWriteStepAttribString(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + H5PartFile *arg1 = (H5PartFile *) 0 ; + char *arg2 = (char *) 0 ; + char *arg3 = (char *) 0 ; + int result; + void *argp1 = 0 ; + int res1 = 0 ; + int res2 ; + char *buf2 = 0 ; + int alloc2 = 0 ; + int res3 ; + char *buf3 = 0 ; + int alloc3 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OOO:H5PartWriteStepAttribString",&obj0,&obj1,&obj2)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_H5PartFile, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "H5PartWriteStepAttribString" "', argument " "1"" of type '" "H5PartFile *""'"); + } + arg1 = (H5PartFile *)(argp1); + res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "H5PartWriteStepAttribString" "', argument " "2"" of type '" "char *""'"); + } + arg2 = buf2; + res3 = SWIG_AsCharPtrAndSize(obj2, &buf3, NULL, &alloc3); + if (!SWIG_IsOK(res3)) { + SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "H5PartWriteStepAttribString" "', argument " "3"" of type '" "char *""'"); + } + arg3 = buf3; + result = (int)H5PartWriteStepAttribString(arg1,arg2,arg3); + resultobj = SWIG_From_int((int)(result)); + if (alloc2 == SWIG_NEWOBJ) free((char*)buf2); + if (alloc3 == SWIG_NEWOBJ) free((char*)buf3); + return resultobj; +fail: + if (alloc2 == SWIG_NEWOBJ) free((char*)buf2); + if (alloc3 == SWIG_NEWOBJ) free((char*)buf3); + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5PartGetNumStepAttribs(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + H5PartFile *arg1 = (H5PartFile *) 0 ; + int result; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:H5PartGetNumStepAttribs",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_H5PartFile, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "H5PartGetNumStepAttribs" "', argument " "1"" of type '" "H5PartFile *""'"); + } + arg1 = (H5PartFile *)(argp1); + result = (int)H5PartGetNumStepAttribs(arg1); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5PartGetNumFileAttribs(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + H5PartFile *arg1 = (H5PartFile *) 0 ; + int result; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:H5PartGetNumFileAttribs",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_H5PartFile, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "H5PartGetNumFileAttribs" "', argument " "1"" of type '" "H5PartFile *""'"); + } + arg1 = (H5PartFile *)(argp1); + result = (int)H5PartGetNumFileAttribs(arg1); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5PartGetStepAttribInfo__SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + H5PartFile *arg1 = (H5PartFile *) 0 ; + int arg2 ; + char *arg3 = (char *) 0 ; + size_t arg4 ; + hid_t *arg5 = (hid_t *) 0 ; + int *arg6 = (int *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + int res3 ; + char *buf3 = 0 ; + int alloc3 = 0 ; + size_t val4 ; + int ecode4 = 0 ; + void *argp5 = 0 ; + int res5 = 0 ; + void *argp6 = 0 ; + int res6 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + PyObject * obj3 = 0 ; + PyObject * obj4 = 0 ; + PyObject * obj5 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OOOOOO:H5PartGetStepAttribInfo",&obj0,&obj1,&obj2,&obj3,&obj4,&obj5)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_H5PartFile, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "H5PartGetStepAttribInfo" "', argument " "1"" of type '" "H5PartFile *""'"); + } + arg1 = (H5PartFile *)(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "H5PartGetStepAttribInfo" "', argument " "2"" of type '" "int""'"); + } + arg2 = (int)(val2); + res3 = SWIG_AsCharPtrAndSize(obj2, &buf3, NULL, &alloc3); + if (!SWIG_IsOK(res3)) { + SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "H5PartGetStepAttribInfo" "', argument " "3"" of type '" "char *""'"); + } + arg3 = buf3; + ecode4 = SWIG_AsVal_size_t(obj3, &val4); + if (!SWIG_IsOK(ecode4)) { + SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "H5PartGetStepAttribInfo" "', argument " "4"" of type '" "size_t""'"); + } + arg4 = (size_t)(val4); + res5 = SWIG_ConvertPtr(obj4, &argp5,SWIGTYPE_p_int, 0 | 0 ); + if (!SWIG_IsOK(res5)) { + SWIG_exception_fail(SWIG_ArgError(res5), "in method '" "H5PartGetStepAttribInfo" "', argument " "5"" of type '" "hid_t *""'"); + } + arg5 = (hid_t *)(argp5); + res6 = SWIG_ConvertPtr(obj5, &argp6,SWIGTYPE_p_int, 0 | 0 ); + if (!SWIG_IsOK(res6)) { + SWIG_exception_fail(SWIG_ArgError(res6), "in method '" "H5PartGetStepAttribInfo" "', argument " "6"" of type '" "int *""'"); + } + arg6 = (int *)(argp6); + H5PartGetStepAttribInfo(arg1,arg2,arg3,arg4,arg5,arg6); + resultobj = SWIG_Py_Void(); + if (alloc3 == SWIG_NEWOBJ) free((char*)buf3); + return resultobj; +fail: + if (alloc3 == SWIG_NEWOBJ) free((char*)buf3); + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5PartGetFileAttribInfo__SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + H5PartFile *arg1 = (H5PartFile *) 0 ; + int arg2 ; + char *arg3 = (char *) 0 ; + size_t arg4 ; + hid_t *arg5 = (hid_t *) 0 ; + int *arg6 = (int *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + int res3 ; + char *buf3 = 0 ; + int alloc3 = 0 ; + size_t val4 ; + int ecode4 = 0 ; + void *argp5 = 0 ; + int res5 = 0 ; + void *argp6 = 0 ; + int res6 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + PyObject * obj3 = 0 ; + PyObject * obj4 = 0 ; + PyObject * obj5 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OOOOOO:H5PartGetFileAttribInfo",&obj0,&obj1,&obj2,&obj3,&obj4,&obj5)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_H5PartFile, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "H5PartGetFileAttribInfo" "', argument " "1"" of type '" "H5PartFile *""'"); + } + arg1 = (H5PartFile *)(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "H5PartGetFileAttribInfo" "', argument " "2"" of type '" "int""'"); + } + arg2 = (int)(val2); + res3 = SWIG_AsCharPtrAndSize(obj2, &buf3, NULL, &alloc3); + if (!SWIG_IsOK(res3)) { + SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "H5PartGetFileAttribInfo" "', argument " "3"" of type '" "char *""'"); + } + arg3 = buf3; + ecode4 = SWIG_AsVal_size_t(obj3, &val4); + if (!SWIG_IsOK(ecode4)) { + SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "H5PartGetFileAttribInfo" "', argument " "4"" of type '" "size_t""'"); + } + arg4 = (size_t)(val4); + res5 = SWIG_ConvertPtr(obj4, &argp5,SWIGTYPE_p_int, 0 | 0 ); + if (!SWIG_IsOK(res5)) { + SWIG_exception_fail(SWIG_ArgError(res5), "in method '" "H5PartGetFileAttribInfo" "', argument " "5"" of type '" "hid_t *""'"); + } + arg5 = (hid_t *)(argp5); + res6 = SWIG_ConvertPtr(obj5, &argp6,SWIGTYPE_p_int, 0 | 0 ); + if (!SWIG_IsOK(res6)) { + SWIG_exception_fail(SWIG_ArgError(res6), "in method '" "H5PartGetFileAttribInfo" "', argument " "6"" of type '" "int *""'"); + } + arg6 = (int *)(argp6); + H5PartGetFileAttribInfo(arg1,arg2,arg3,arg4,arg5,arg6); + resultobj = SWIG_Py_Void(); + if (alloc3 == SWIG_NEWOBJ) free((char*)buf3); + return resultobj; +fail: + if (alloc3 == SWIG_NEWOBJ) free((char*)buf3); + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5PartReadStepAttrib(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + H5PartFile *arg1 = (H5PartFile *) 0 ; + char *arg2 = (char *) 0 ; + void *arg3 = (void *) 0 ; + int result; + void *argp1 = 0 ; + int res1 = 0 ; + int res2 ; + char *buf2 = 0 ; + int alloc2 = 0 ; + int res3 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OOO:H5PartReadStepAttrib",&obj0,&obj1,&obj2)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_H5PartFile, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "H5PartReadStepAttrib" "', argument " "1"" of type '" "H5PartFile *""'"); + } + arg1 = (H5PartFile *)(argp1); + res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "H5PartReadStepAttrib" "', argument " "2"" of type '" "char *""'"); + } + arg2 = buf2; + res3 = SWIG_ConvertPtr(obj2,SWIG_as_voidptrptr(&arg3), 0, 0); + if (!SWIG_IsOK(res3)) { + SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "H5PartReadStepAttrib" "', argument " "3"" of type '" "void *""'"); + } + result = (int)H5PartReadStepAttrib(arg1,arg2,arg3); + resultobj = SWIG_From_int((int)(result)); + if (alloc2 == SWIG_NEWOBJ) free((char*)buf2); + return resultobj; +fail: + if (alloc2 == SWIG_NEWOBJ) free((char*)buf2); + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5PartReadAttrib(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + H5PartFile *arg1 = (H5PartFile *) 0 ; + char *arg2 = (char *) 0 ; + void *arg3 = (void *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + int res2 ; + char *buf2 = 0 ; + int alloc2 = 0 ; + int res3 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OOO:H5PartReadAttrib",&obj0,&obj1,&obj2)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_H5PartFile, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "H5PartReadAttrib" "', argument " "1"" of type '" "H5PartFile *""'"); + } + arg1 = (H5PartFile *)(argp1); + res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "H5PartReadAttrib" "', argument " "2"" of type '" "char *""'"); + } + arg2 = buf2; + res3 = SWIG_ConvertPtr(obj2,SWIG_as_voidptrptr(&arg3), 0, 0); + if (!SWIG_IsOK(res3)) { + SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "H5PartReadAttrib" "', argument " "3"" of type '" "void *""'"); + } + H5PartReadAttrib(arg1,arg2,arg3); + resultobj = SWIG_Py_Void(); + if (alloc2 == SWIG_NEWOBJ) free((char*)buf2); + return resultobj; +fail: + if (alloc2 == SWIG_NEWOBJ) free((char*)buf2); + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5PartReadFileAttrib(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + H5PartFile *arg1 = (H5PartFile *) 0 ; + char *arg2 = (char *) 0 ; + void *arg3 = (void *) 0 ; + int result; + void *argp1 = 0 ; + int res1 = 0 ; + int res2 ; + char *buf2 = 0 ; + int alloc2 = 0 ; + int res3 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OOO:H5PartReadFileAttrib",&obj0,&obj1,&obj2)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_H5PartFile, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "H5PartReadFileAttrib" "', argument " "1"" of type '" "H5PartFile *""'"); + } + arg1 = (H5PartFile *)(argp1); + res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "H5PartReadFileAttrib" "', argument " "2"" of type '" "char *""'"); + } + arg2 = buf2; + res3 = SWIG_ConvertPtr(obj2,SWIG_as_voidptrptr(&arg3), 0, 0); + if (!SWIG_IsOK(res3)) { + SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "H5PartReadFileAttrib" "', argument " "3"" of type '" "void *""'"); + } + result = (int)H5PartReadFileAttrib(arg1,arg2,arg3); + resultobj = SWIG_From_int((int)(result)); + if (alloc2 == SWIG_NEWOBJ) free((char*)buf2); + return resultobj; +fail: + if (alloc2 == SWIG_NEWOBJ) free((char*)buf2); + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5PartStashFile(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + H5PartFile *arg1 = (H5PartFile *) 0 ; + char *arg2 = (char *) 0 ; + int result; + void *argp1 = 0 ; + int res1 = 0 ; + int res2 ; + char *buf2 = 0 ; + int alloc2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:H5PartStashFile",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_H5PartFile, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "H5PartStashFile" "', argument " "1"" of type '" "H5PartFile *""'"); + } + arg1 = (H5PartFile *)(argp1); + res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "H5PartStashFile" "', argument " "2"" of type '" "char *""'"); + } + arg2 = buf2; + result = (int)H5PartStashFile(arg1,arg2); + resultobj = SWIG_From_int((int)(result)); + if (alloc2 == SWIG_NEWOBJ) free((char*)buf2); + return resultobj; +fail: + if (alloc2 == SWIG_NEWOBJ) free((char*)buf2); + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5PartUnstashFile(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + H5PartFile *arg1 = (H5PartFile *) 0 ; + char *arg2 = (char *) 0 ; + char *arg3 = (char *) 0 ; + int result; + void *argp1 = 0 ; + int res1 = 0 ; + int res2 ; + char *buf2 = 0 ; + int alloc2 = 0 ; + int res3 ; + char *buf3 = 0 ; + int alloc3 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OOO:H5PartUnstashFile",&obj0,&obj1,&obj2)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_H5PartFile, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "H5PartUnstashFile" "', argument " "1"" of type '" "H5PartFile *""'"); + } + arg1 = (H5PartFile *)(argp1); + res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "H5PartUnstashFile" "', argument " "2"" of type '" "char *""'"); + } + arg2 = buf2; + res3 = SWIG_AsCharPtrAndSize(obj2, &buf3, NULL, &alloc3); + if (!SWIG_IsOK(res3)) { + SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "H5PartUnstashFile" "', argument " "3"" of type '" "char *""'"); + } + arg3 = buf3; + result = (int)H5PartUnstashFile(arg1,arg2,arg3); + resultobj = SWIG_From_int((int)(result)); + if (alloc2 == SWIG_NEWOBJ) free((char*)buf2); + if (alloc3 == SWIG_NEWOBJ) free((char*)buf3); + return resultobj; +fail: + if (alloc2 == SWIG_NEWOBJ) free((char*)buf2); + if (alloc3 == SWIG_NEWOBJ) free((char*)buf3); + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5PartGetNumStashFiles(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + H5PartFile *arg1 = (H5PartFile *) 0 ; + int result; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:H5PartGetNumStashFiles",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_H5PartFile, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "H5PartGetNumStashFiles" "', argument " "1"" of type '" "H5PartFile *""'"); + } + arg1 = (H5PartFile *)(argp1); + result = (int)H5PartGetNumStashFiles(arg1); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5PartFileGetStashFileName(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + H5PartFile *arg1 = (H5PartFile *) 0 ; + int arg2 ; + char *arg3 = (char *) 0 ; + int arg4 ; + int result; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + int res3 ; + char *buf3 = 0 ; + int alloc3 = 0 ; + int val4 ; + int ecode4 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + PyObject * obj3 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OOOO:H5PartFileGetStashFileName",&obj0,&obj1,&obj2,&obj3)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_H5PartFile, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "H5PartFileGetStashFileName" "', argument " "1"" of type '" "H5PartFile *""'"); + } + arg1 = (H5PartFile *)(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "H5PartFileGetStashFileName" "', argument " "2"" of type '" "int""'"); + } + arg2 = (int)(val2); + res3 = SWIG_AsCharPtrAndSize(obj2, &buf3, NULL, &alloc3); + if (!SWIG_IsOK(res3)) { + SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "H5PartFileGetStashFileName" "', argument " "3"" of type '" "char *""'"); + } + arg3 = buf3; + ecode4 = SWIG_AsVal_int(obj3, &val4); + if (!SWIG_IsOK(ecode4)) { + SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "H5PartFileGetStashFileName" "', argument " "4"" of type '" "int""'"); + } + arg4 = (int)(val4); + result = (int)H5PartFileGetStashFileName(arg1,arg2,arg3,arg4); + resultobj = SWIG_From_int((int)(result)); + if (alloc3 == SWIG_NEWOBJ) free((char*)buf3); + return resultobj; +fail: + if (alloc3 == SWIG_NEWOBJ) free((char*)buf3); + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5T_cdata_t_command_set(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + H5T_cdata_t *arg1 = (H5T_cdata_t *) 0 ; + H5T_cmd_t arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:H5T_cdata_t_command_set",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_H5T_cdata_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "H5T_cdata_t_command_set" "', argument " "1"" of type '" "H5T_cdata_t *""'"); + } + arg1 = (H5T_cdata_t *)(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "H5T_cdata_t_command_set" "', argument " "2"" of type '" "H5T_cmd_t""'"); + } + arg2 = (H5T_cmd_t)(val2); + if (arg1) (arg1)->command = arg2; + + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5T_cdata_t_command_get(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + H5T_cdata_t *arg1 = (H5T_cdata_t *) 0 ; + H5T_cmd_t result; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:H5T_cdata_t_command_get",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_H5T_cdata_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "H5T_cdata_t_command_get" "', argument " "1"" of type '" "H5T_cdata_t *""'"); + } + arg1 = (H5T_cdata_t *)(argp1); + result = (H5T_cmd_t) ((arg1)->command); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5T_cdata_t_need_bkg_set(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + H5T_cdata_t *arg1 = (H5T_cdata_t *) 0 ; + H5T_bkg_t arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:H5T_cdata_t_need_bkg_set",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_H5T_cdata_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "H5T_cdata_t_need_bkg_set" "', argument " "1"" of type '" "H5T_cdata_t *""'"); + } + arg1 = (H5T_cdata_t *)(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "H5T_cdata_t_need_bkg_set" "', argument " "2"" of type '" "H5T_bkg_t""'"); + } + arg2 = (H5T_bkg_t)(val2); + if (arg1) (arg1)->need_bkg = arg2; + + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5T_cdata_t_need_bkg_get(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + H5T_cdata_t *arg1 = (H5T_cdata_t *) 0 ; + H5T_bkg_t result; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:H5T_cdata_t_need_bkg_get",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_H5T_cdata_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "H5T_cdata_t_need_bkg_get" "', argument " "1"" of type '" "H5T_cdata_t *""'"); + } + arg1 = (H5T_cdata_t *)(argp1); + result = (H5T_bkg_t) ((arg1)->need_bkg); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5T_cdata_t_recalc_set(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + H5T_cdata_t *arg1 = (H5T_cdata_t *) 0 ; + hbool_t arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + unsigned int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:H5T_cdata_t_recalc_set",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_H5T_cdata_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "H5T_cdata_t_recalc_set" "', argument " "1"" of type '" "H5T_cdata_t *""'"); + } + arg1 = (H5T_cdata_t *)(argp1); + ecode2 = SWIG_AsVal_unsigned_SS_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "H5T_cdata_t_recalc_set" "', argument " "2"" of type '" "hbool_t""'"); + } + arg2 = (hbool_t)(val2); + if (arg1) (arg1)->recalc = arg2; + + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5T_cdata_t_recalc_get(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + H5T_cdata_t *arg1 = (H5T_cdata_t *) 0 ; + hbool_t result; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:H5T_cdata_t_recalc_get",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_H5T_cdata_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "H5T_cdata_t_recalc_get" "', argument " "1"" of type '" "H5T_cdata_t *""'"); + } + arg1 = (H5T_cdata_t *)(argp1); + result = (hbool_t) ((arg1)->recalc); + resultobj = SWIG_From_unsigned_SS_int((unsigned int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5T_cdata_t_priv_set(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + H5T_cdata_t *arg1 = (H5T_cdata_t *) 0 ; + void *arg2 = (void *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + int res2 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:H5T_cdata_t_priv_set",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_H5T_cdata_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "H5T_cdata_t_priv_set" "', argument " "1"" of type '" "H5T_cdata_t *""'"); + } + arg1 = (H5T_cdata_t *)(argp1); + res2 = SWIG_ConvertPtr(obj1,SWIG_as_voidptrptr(&arg2), 0, SWIG_POINTER_DISOWN); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "H5T_cdata_t_priv_set" "', argument " "2"" of type '" "void *""'"); + } + if (arg1) (arg1)->priv = arg2; + + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5T_cdata_t_priv_get(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + H5T_cdata_t *arg1 = (H5T_cdata_t *) 0 ; + void *result = 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:H5T_cdata_t_priv_get",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_H5T_cdata_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "H5T_cdata_t_priv_get" "', argument " "1"" of type '" "H5T_cdata_t *""'"); + } + arg1 = (H5T_cdata_t *)(argp1); + result = (void *) ((arg1)->priv); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_void, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_new_H5T_cdata_t(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + H5T_cdata_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)":new_H5T_cdata_t")) SWIG_fail; + result = (H5T_cdata_t *)(H5T_cdata_t *) calloc(1, sizeof(H5T_cdata_t)); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_H5T_cdata_t, SWIG_POINTER_NEW | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_delete_H5T_cdata_t(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + H5T_cdata_t *arg1 = (H5T_cdata_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:delete_H5T_cdata_t",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_H5T_cdata_t, SWIG_POINTER_DISOWN | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_H5T_cdata_t" "', argument " "1"" of type '" "H5T_cdata_t *""'"); + } + arg1 = (H5T_cdata_t *)(argp1); + free((char *) arg1); + + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *H5T_cdata_t_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *obj; + if (!PyArg_ParseTuple(args,(char*)"O|swigregister", &obj)) return NULL; + SWIG_TypeNewClientData(SWIGTYPE_p_H5T_cdata_t, SWIG_NewClientData(obj)); + return SWIG_Py_Void(); +} + +SWIGINTERN PyObject *_wrap_hvl_t_len_set(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + hvl_t *arg1 = (hvl_t *) 0 ; + size_t arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + size_t val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:hvl_t_len_set",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_hvl_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "hvl_t_len_set" "', argument " "1"" of type '" "hvl_t *""'"); + } + arg1 = (hvl_t *)(argp1); + ecode2 = SWIG_AsVal_size_t(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "hvl_t_len_set" "', argument " "2"" of type '" "size_t""'"); + } + arg2 = (size_t)(val2); + if (arg1) (arg1)->len = arg2; + + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_hvl_t_len_get(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + hvl_t *arg1 = (hvl_t *) 0 ; + size_t result; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:hvl_t_len_get",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_hvl_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "hvl_t_len_get" "', argument " "1"" of type '" "hvl_t *""'"); + } + arg1 = (hvl_t *)(argp1); + result = ((arg1)->len); + resultobj = SWIG_From_size_t((size_t)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_hvl_t_p_set(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + hvl_t *arg1 = (hvl_t *) 0 ; + void *arg2 = (void *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + int res2 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:hvl_t_p_set",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_hvl_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "hvl_t_p_set" "', argument " "1"" of type '" "hvl_t *""'"); + } + arg1 = (hvl_t *)(argp1); + res2 = SWIG_ConvertPtr(obj1,SWIG_as_voidptrptr(&arg2), 0, SWIG_POINTER_DISOWN); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "hvl_t_p_set" "', argument " "2"" of type '" "void *""'"); + } + if (arg1) (arg1)->p = arg2; + + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_hvl_t_p_get(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + hvl_t *arg1 = (hvl_t *) 0 ; + void *result = 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:hvl_t_p_get",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_hvl_t, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "hvl_t_p_get" "', argument " "1"" of type '" "hvl_t *""'"); + } + arg1 = (hvl_t *)(argp1); + result = (void *) ((arg1)->p); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_void, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_new_hvl_t(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + hvl_t *result = 0 ; + + if (!PyArg_ParseTuple(args,(char *)":new_hvl_t")) SWIG_fail; + result = (hvl_t *)(hvl_t *) calloc(1, sizeof(hvl_t)); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_hvl_t, SWIG_POINTER_NEW | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_delete_hvl_t(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + hvl_t *arg1 = (hvl_t *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:delete_hvl_t",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_hvl_t, SWIG_POINTER_DISOWN | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_hvl_t" "', argument " "1"" of type '" "hvl_t *""'"); + } + arg1 = (hvl_t *)(argp1); + free((char *) arg1); + + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *hvl_t_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *obj; + if (!PyArg_ParseTuple(args,(char*)"O|swigregister", &obj)) return NULL; + SWIG_TypeNewClientData(SWIGTYPE_p_hvl_t, SWIG_NewClientData(obj)); + return SWIG_Py_Void(); +} + +SWIGINTERN int H5T_IEEE_F32BE_g_set(PyObject *_val) { + { + int val; + int res = SWIG_AsVal_int(_val, &val); + if (!SWIG_IsOK(res)) { + SWIG_exception_fail(SWIG_ArgError(res), "in variable '""H5T_IEEE_F32BE_g""' of type '""hid_t""'"); + } + H5T_IEEE_F32BE_g = (hid_t)(val); + } + return 0; +fail: + return 1; +} + + +SWIGINTERN PyObject *H5T_IEEE_F32BE_g_get(void) { + PyObject *pyobj = 0; + + pyobj = SWIG_From_int((int)(H5T_IEEE_F32BE_g)); + return pyobj; +} + + +SWIGINTERN int H5T_IEEE_F32LE_g_set(PyObject *_val) { + { + int val; + int res = SWIG_AsVal_int(_val, &val); + if (!SWIG_IsOK(res)) { + SWIG_exception_fail(SWIG_ArgError(res), "in variable '""H5T_IEEE_F32LE_g""' of type '""hid_t""'"); + } + H5T_IEEE_F32LE_g = (hid_t)(val); + } + return 0; +fail: + return 1; +} + + +SWIGINTERN PyObject *H5T_IEEE_F32LE_g_get(void) { + PyObject *pyobj = 0; + + pyobj = SWIG_From_int((int)(H5T_IEEE_F32LE_g)); + return pyobj; +} + + +SWIGINTERN int H5T_IEEE_F64BE_g_set(PyObject *_val) { + { + int val; + int res = SWIG_AsVal_int(_val, &val); + if (!SWIG_IsOK(res)) { + SWIG_exception_fail(SWIG_ArgError(res), "in variable '""H5T_IEEE_F64BE_g""' of type '""hid_t""'"); + } + H5T_IEEE_F64BE_g = (hid_t)(val); + } + return 0; +fail: + return 1; +} + + +SWIGINTERN PyObject *H5T_IEEE_F64BE_g_get(void) { + PyObject *pyobj = 0; + + pyobj = SWIG_From_int((int)(H5T_IEEE_F64BE_g)); + return pyobj; +} + + +SWIGINTERN int H5T_IEEE_F64LE_g_set(PyObject *_val) { + { + int val; + int res = SWIG_AsVal_int(_val, &val); + if (!SWIG_IsOK(res)) { + SWIG_exception_fail(SWIG_ArgError(res), "in variable '""H5T_IEEE_F64LE_g""' of type '""hid_t""'"); + } + H5T_IEEE_F64LE_g = (hid_t)(val); + } + return 0; +fail: + return 1; +} + + +SWIGINTERN PyObject *H5T_IEEE_F64LE_g_get(void) { + PyObject *pyobj = 0; + + pyobj = SWIG_From_int((int)(H5T_IEEE_F64LE_g)); + return pyobj; +} + + +SWIGINTERN int H5T_STD_I8BE_g_set(PyObject *_val) { + { + int val; + int res = SWIG_AsVal_int(_val, &val); + if (!SWIG_IsOK(res)) { + SWIG_exception_fail(SWIG_ArgError(res), "in variable '""H5T_STD_I8BE_g""' of type '""hid_t""'"); + } + H5T_STD_I8BE_g = (hid_t)(val); + } + return 0; +fail: + return 1; +} + + +SWIGINTERN PyObject *H5T_STD_I8BE_g_get(void) { + PyObject *pyobj = 0; + + pyobj = SWIG_From_int((int)(H5T_STD_I8BE_g)); + return pyobj; +} + + +SWIGINTERN int H5T_STD_I8LE_g_set(PyObject *_val) { + { + int val; + int res = SWIG_AsVal_int(_val, &val); + if (!SWIG_IsOK(res)) { + SWIG_exception_fail(SWIG_ArgError(res), "in variable '""H5T_STD_I8LE_g""' of type '""hid_t""'"); + } + H5T_STD_I8LE_g = (hid_t)(val); + } + return 0; +fail: + return 1; +} + + +SWIGINTERN PyObject *H5T_STD_I8LE_g_get(void) { + PyObject *pyobj = 0; + + pyobj = SWIG_From_int((int)(H5T_STD_I8LE_g)); + return pyobj; +} + + +SWIGINTERN int H5T_STD_I16BE_g_set(PyObject *_val) { + { + int val; + int res = SWIG_AsVal_int(_val, &val); + if (!SWIG_IsOK(res)) { + SWIG_exception_fail(SWIG_ArgError(res), "in variable '""H5T_STD_I16BE_g""' of type '""hid_t""'"); + } + H5T_STD_I16BE_g = (hid_t)(val); + } + return 0; +fail: + return 1; +} + + +SWIGINTERN PyObject *H5T_STD_I16BE_g_get(void) { + PyObject *pyobj = 0; + + pyobj = SWIG_From_int((int)(H5T_STD_I16BE_g)); + return pyobj; +} + + +SWIGINTERN int H5T_STD_I16LE_g_set(PyObject *_val) { + { + int val; + int res = SWIG_AsVal_int(_val, &val); + if (!SWIG_IsOK(res)) { + SWIG_exception_fail(SWIG_ArgError(res), "in variable '""H5T_STD_I16LE_g""' of type '""hid_t""'"); + } + H5T_STD_I16LE_g = (hid_t)(val); + } + return 0; +fail: + return 1; +} + + +SWIGINTERN PyObject *H5T_STD_I16LE_g_get(void) { + PyObject *pyobj = 0; + + pyobj = SWIG_From_int((int)(H5T_STD_I16LE_g)); + return pyobj; +} + + +SWIGINTERN int H5T_STD_I32BE_g_set(PyObject *_val) { + { + int val; + int res = SWIG_AsVal_int(_val, &val); + if (!SWIG_IsOK(res)) { + SWIG_exception_fail(SWIG_ArgError(res), "in variable '""H5T_STD_I32BE_g""' of type '""hid_t""'"); + } + H5T_STD_I32BE_g = (hid_t)(val); + } + return 0; +fail: + return 1; +} + + +SWIGINTERN PyObject *H5T_STD_I32BE_g_get(void) { + PyObject *pyobj = 0; + + pyobj = SWIG_From_int((int)(H5T_STD_I32BE_g)); + return pyobj; +} + + +SWIGINTERN int H5T_STD_I32LE_g_set(PyObject *_val) { + { + int val; + int res = SWIG_AsVal_int(_val, &val); + if (!SWIG_IsOK(res)) { + SWIG_exception_fail(SWIG_ArgError(res), "in variable '""H5T_STD_I32LE_g""' of type '""hid_t""'"); + } + H5T_STD_I32LE_g = (hid_t)(val); + } + return 0; +fail: + return 1; +} + + +SWIGINTERN PyObject *H5T_STD_I32LE_g_get(void) { + PyObject *pyobj = 0; + + pyobj = SWIG_From_int((int)(H5T_STD_I32LE_g)); + return pyobj; +} + + +SWIGINTERN int H5T_STD_I64BE_g_set(PyObject *_val) { + { + int val; + int res = SWIG_AsVal_int(_val, &val); + if (!SWIG_IsOK(res)) { + SWIG_exception_fail(SWIG_ArgError(res), "in variable '""H5T_STD_I64BE_g""' of type '""hid_t""'"); + } + H5T_STD_I64BE_g = (hid_t)(val); + } + return 0; +fail: + return 1; +} + + +SWIGINTERN PyObject *H5T_STD_I64BE_g_get(void) { + PyObject *pyobj = 0; + + pyobj = SWIG_From_int((int)(H5T_STD_I64BE_g)); + return pyobj; +} + + +SWIGINTERN int H5T_STD_I64LE_g_set(PyObject *_val) { + { + int val; + int res = SWIG_AsVal_int(_val, &val); + if (!SWIG_IsOK(res)) { + SWIG_exception_fail(SWIG_ArgError(res), "in variable '""H5T_STD_I64LE_g""' of type '""hid_t""'"); + } + H5T_STD_I64LE_g = (hid_t)(val); + } + return 0; +fail: + return 1; +} + + +SWIGINTERN PyObject *H5T_STD_I64LE_g_get(void) { + PyObject *pyobj = 0; + + pyobj = SWIG_From_int((int)(H5T_STD_I64LE_g)); + return pyobj; +} + + +SWIGINTERN int H5T_STD_U8BE_g_set(PyObject *_val) { + { + int val; + int res = SWIG_AsVal_int(_val, &val); + if (!SWIG_IsOK(res)) { + SWIG_exception_fail(SWIG_ArgError(res), "in variable '""H5T_STD_U8BE_g""' of type '""hid_t""'"); + } + H5T_STD_U8BE_g = (hid_t)(val); + } + return 0; +fail: + return 1; +} + + +SWIGINTERN PyObject *H5T_STD_U8BE_g_get(void) { + PyObject *pyobj = 0; + + pyobj = SWIG_From_int((int)(H5T_STD_U8BE_g)); + return pyobj; +} + + +SWIGINTERN int H5T_STD_U8LE_g_set(PyObject *_val) { + { + int val; + int res = SWIG_AsVal_int(_val, &val); + if (!SWIG_IsOK(res)) { + SWIG_exception_fail(SWIG_ArgError(res), "in variable '""H5T_STD_U8LE_g""' of type '""hid_t""'"); + } + H5T_STD_U8LE_g = (hid_t)(val); + } + return 0; +fail: + return 1; +} + + +SWIGINTERN PyObject *H5T_STD_U8LE_g_get(void) { + PyObject *pyobj = 0; + + pyobj = SWIG_From_int((int)(H5T_STD_U8LE_g)); + return pyobj; +} + + +SWIGINTERN int H5T_STD_U16BE_g_set(PyObject *_val) { + { + int val; + int res = SWIG_AsVal_int(_val, &val); + if (!SWIG_IsOK(res)) { + SWIG_exception_fail(SWIG_ArgError(res), "in variable '""H5T_STD_U16BE_g""' of type '""hid_t""'"); + } + H5T_STD_U16BE_g = (hid_t)(val); + } + return 0; +fail: + return 1; +} + + +SWIGINTERN PyObject *H5T_STD_U16BE_g_get(void) { + PyObject *pyobj = 0; + + pyobj = SWIG_From_int((int)(H5T_STD_U16BE_g)); + return pyobj; +} + + +SWIGINTERN int H5T_STD_U16LE_g_set(PyObject *_val) { + { + int val; + int res = SWIG_AsVal_int(_val, &val); + if (!SWIG_IsOK(res)) { + SWIG_exception_fail(SWIG_ArgError(res), "in variable '""H5T_STD_U16LE_g""' of type '""hid_t""'"); + } + H5T_STD_U16LE_g = (hid_t)(val); + } + return 0; +fail: + return 1; +} + + +SWIGINTERN PyObject *H5T_STD_U16LE_g_get(void) { + PyObject *pyobj = 0; + + pyobj = SWIG_From_int((int)(H5T_STD_U16LE_g)); + return pyobj; +} + + +SWIGINTERN int H5T_STD_U32BE_g_set(PyObject *_val) { + { + int val; + int res = SWIG_AsVal_int(_val, &val); + if (!SWIG_IsOK(res)) { + SWIG_exception_fail(SWIG_ArgError(res), "in variable '""H5T_STD_U32BE_g""' of type '""hid_t""'"); + } + H5T_STD_U32BE_g = (hid_t)(val); + } + return 0; +fail: + return 1; +} + + +SWIGINTERN PyObject *H5T_STD_U32BE_g_get(void) { + PyObject *pyobj = 0; + + pyobj = SWIG_From_int((int)(H5T_STD_U32BE_g)); + return pyobj; +} + + +SWIGINTERN int H5T_STD_U32LE_g_set(PyObject *_val) { + { + int val; + int res = SWIG_AsVal_int(_val, &val); + if (!SWIG_IsOK(res)) { + SWIG_exception_fail(SWIG_ArgError(res), "in variable '""H5T_STD_U32LE_g""' of type '""hid_t""'"); + } + H5T_STD_U32LE_g = (hid_t)(val); + } + return 0; +fail: + return 1; +} + + +SWIGINTERN PyObject *H5T_STD_U32LE_g_get(void) { + PyObject *pyobj = 0; + + pyobj = SWIG_From_int((int)(H5T_STD_U32LE_g)); + return pyobj; +} + + +SWIGINTERN int H5T_STD_U64BE_g_set(PyObject *_val) { + { + int val; + int res = SWIG_AsVal_int(_val, &val); + if (!SWIG_IsOK(res)) { + SWIG_exception_fail(SWIG_ArgError(res), "in variable '""H5T_STD_U64BE_g""' of type '""hid_t""'"); + } + H5T_STD_U64BE_g = (hid_t)(val); + } + return 0; +fail: + return 1; +} + + +SWIGINTERN PyObject *H5T_STD_U64BE_g_get(void) { + PyObject *pyobj = 0; + + pyobj = SWIG_From_int((int)(H5T_STD_U64BE_g)); + return pyobj; +} + + +SWIGINTERN int H5T_STD_U64LE_g_set(PyObject *_val) { + { + int val; + int res = SWIG_AsVal_int(_val, &val); + if (!SWIG_IsOK(res)) { + SWIG_exception_fail(SWIG_ArgError(res), "in variable '""H5T_STD_U64LE_g""' of type '""hid_t""'"); + } + H5T_STD_U64LE_g = (hid_t)(val); + } + return 0; +fail: + return 1; +} + + +SWIGINTERN PyObject *H5T_STD_U64LE_g_get(void) { + PyObject *pyobj = 0; + + pyobj = SWIG_From_int((int)(H5T_STD_U64LE_g)); + return pyobj; +} + + +SWIGINTERN int H5T_STD_B8BE_g_set(PyObject *_val) { + { + int val; + int res = SWIG_AsVal_int(_val, &val); + if (!SWIG_IsOK(res)) { + SWIG_exception_fail(SWIG_ArgError(res), "in variable '""H5T_STD_B8BE_g""' of type '""hid_t""'"); + } + H5T_STD_B8BE_g = (hid_t)(val); + } + return 0; +fail: + return 1; +} + + +SWIGINTERN PyObject *H5T_STD_B8BE_g_get(void) { + PyObject *pyobj = 0; + + pyobj = SWIG_From_int((int)(H5T_STD_B8BE_g)); + return pyobj; +} + + +SWIGINTERN int H5T_STD_B8LE_g_set(PyObject *_val) { + { + int val; + int res = SWIG_AsVal_int(_val, &val); + if (!SWIG_IsOK(res)) { + SWIG_exception_fail(SWIG_ArgError(res), "in variable '""H5T_STD_B8LE_g""' of type '""hid_t""'"); + } + H5T_STD_B8LE_g = (hid_t)(val); + } + return 0; +fail: + return 1; +} + + +SWIGINTERN PyObject *H5T_STD_B8LE_g_get(void) { + PyObject *pyobj = 0; + + pyobj = SWIG_From_int((int)(H5T_STD_B8LE_g)); + return pyobj; +} + + +SWIGINTERN int H5T_STD_B16BE_g_set(PyObject *_val) { + { + int val; + int res = SWIG_AsVal_int(_val, &val); + if (!SWIG_IsOK(res)) { + SWIG_exception_fail(SWIG_ArgError(res), "in variable '""H5T_STD_B16BE_g""' of type '""hid_t""'"); + } + H5T_STD_B16BE_g = (hid_t)(val); + } + return 0; +fail: + return 1; +} + + +SWIGINTERN PyObject *H5T_STD_B16BE_g_get(void) { + PyObject *pyobj = 0; + + pyobj = SWIG_From_int((int)(H5T_STD_B16BE_g)); + return pyobj; +} + + +SWIGINTERN int H5T_STD_B16LE_g_set(PyObject *_val) { + { + int val; + int res = SWIG_AsVal_int(_val, &val); + if (!SWIG_IsOK(res)) { + SWIG_exception_fail(SWIG_ArgError(res), "in variable '""H5T_STD_B16LE_g""' of type '""hid_t""'"); + } + H5T_STD_B16LE_g = (hid_t)(val); + } + return 0; +fail: + return 1; +} + + +SWIGINTERN PyObject *H5T_STD_B16LE_g_get(void) { + PyObject *pyobj = 0; + + pyobj = SWIG_From_int((int)(H5T_STD_B16LE_g)); + return pyobj; +} + + +SWIGINTERN int H5T_STD_B32BE_g_set(PyObject *_val) { + { + int val; + int res = SWIG_AsVal_int(_val, &val); + if (!SWIG_IsOK(res)) { + SWIG_exception_fail(SWIG_ArgError(res), "in variable '""H5T_STD_B32BE_g""' of type '""hid_t""'"); + } + H5T_STD_B32BE_g = (hid_t)(val); + } + return 0; +fail: + return 1; +} + + +SWIGINTERN PyObject *H5T_STD_B32BE_g_get(void) { + PyObject *pyobj = 0; + + pyobj = SWIG_From_int((int)(H5T_STD_B32BE_g)); + return pyobj; +} + + +SWIGINTERN int H5T_STD_B32LE_g_set(PyObject *_val) { + { + int val; + int res = SWIG_AsVal_int(_val, &val); + if (!SWIG_IsOK(res)) { + SWIG_exception_fail(SWIG_ArgError(res), "in variable '""H5T_STD_B32LE_g""' of type '""hid_t""'"); + } + H5T_STD_B32LE_g = (hid_t)(val); + } + return 0; +fail: + return 1; +} + + +SWIGINTERN PyObject *H5T_STD_B32LE_g_get(void) { + PyObject *pyobj = 0; + + pyobj = SWIG_From_int((int)(H5T_STD_B32LE_g)); + return pyobj; +} + + +SWIGINTERN int H5T_STD_B64BE_g_set(PyObject *_val) { + { + int val; + int res = SWIG_AsVal_int(_val, &val); + if (!SWIG_IsOK(res)) { + SWIG_exception_fail(SWIG_ArgError(res), "in variable '""H5T_STD_B64BE_g""' of type '""hid_t""'"); + } + H5T_STD_B64BE_g = (hid_t)(val); + } + return 0; +fail: + return 1; +} + + +SWIGINTERN PyObject *H5T_STD_B64BE_g_get(void) { + PyObject *pyobj = 0; + + pyobj = SWIG_From_int((int)(H5T_STD_B64BE_g)); + return pyobj; +} + + +SWIGINTERN int H5T_STD_B64LE_g_set(PyObject *_val) { + { + int val; + int res = SWIG_AsVal_int(_val, &val); + if (!SWIG_IsOK(res)) { + SWIG_exception_fail(SWIG_ArgError(res), "in variable '""H5T_STD_B64LE_g""' of type '""hid_t""'"); + } + H5T_STD_B64LE_g = (hid_t)(val); + } + return 0; +fail: + return 1; +} + + +SWIGINTERN PyObject *H5T_STD_B64LE_g_get(void) { + PyObject *pyobj = 0; + + pyobj = SWIG_From_int((int)(H5T_STD_B64LE_g)); + return pyobj; +} + + +SWIGINTERN int H5T_STD_REF_OBJ_g_set(PyObject *_val) { + { + int val; + int res = SWIG_AsVal_int(_val, &val); + if (!SWIG_IsOK(res)) { + SWIG_exception_fail(SWIG_ArgError(res), "in variable '""H5T_STD_REF_OBJ_g""' of type '""hid_t""'"); + } + H5T_STD_REF_OBJ_g = (hid_t)(val); + } + return 0; +fail: + return 1; +} + + +SWIGINTERN PyObject *H5T_STD_REF_OBJ_g_get(void) { + PyObject *pyobj = 0; + + pyobj = SWIG_From_int((int)(H5T_STD_REF_OBJ_g)); + return pyobj; +} + + +SWIGINTERN int H5T_STD_REF_DSETREG_g_set(PyObject *_val) { + { + int val; + int res = SWIG_AsVal_int(_val, &val); + if (!SWIG_IsOK(res)) { + SWIG_exception_fail(SWIG_ArgError(res), "in variable '""H5T_STD_REF_DSETREG_g""' of type '""hid_t""'"); + } + H5T_STD_REF_DSETREG_g = (hid_t)(val); + } + return 0; +fail: + return 1; +} + + +SWIGINTERN PyObject *H5T_STD_REF_DSETREG_g_get(void) { + PyObject *pyobj = 0; + + pyobj = SWIG_From_int((int)(H5T_STD_REF_DSETREG_g)); + return pyobj; +} + + +SWIGINTERN int H5T_UNIX_D32BE_g_set(PyObject *_val) { + { + int val; + int res = SWIG_AsVal_int(_val, &val); + if (!SWIG_IsOK(res)) { + SWIG_exception_fail(SWIG_ArgError(res), "in variable '""H5T_UNIX_D32BE_g""' of type '""hid_t""'"); + } + H5T_UNIX_D32BE_g = (hid_t)(val); + } + return 0; +fail: + return 1; +} + + +SWIGINTERN PyObject *H5T_UNIX_D32BE_g_get(void) { + PyObject *pyobj = 0; + + pyobj = SWIG_From_int((int)(H5T_UNIX_D32BE_g)); + return pyobj; +} + + +SWIGINTERN int H5T_UNIX_D32LE_g_set(PyObject *_val) { + { + int val; + int res = SWIG_AsVal_int(_val, &val); + if (!SWIG_IsOK(res)) { + SWIG_exception_fail(SWIG_ArgError(res), "in variable '""H5T_UNIX_D32LE_g""' of type '""hid_t""'"); + } + H5T_UNIX_D32LE_g = (hid_t)(val); + } + return 0; +fail: + return 1; +} + + +SWIGINTERN PyObject *H5T_UNIX_D32LE_g_get(void) { + PyObject *pyobj = 0; + + pyobj = SWIG_From_int((int)(H5T_UNIX_D32LE_g)); + return pyobj; +} + + +SWIGINTERN int H5T_UNIX_D64BE_g_set(PyObject *_val) { + { + int val; + int res = SWIG_AsVal_int(_val, &val); + if (!SWIG_IsOK(res)) { + SWIG_exception_fail(SWIG_ArgError(res), "in variable '""H5T_UNIX_D64BE_g""' of type '""hid_t""'"); + } + H5T_UNIX_D64BE_g = (hid_t)(val); + } + return 0; +fail: + return 1; +} + + +SWIGINTERN PyObject *H5T_UNIX_D64BE_g_get(void) { + PyObject *pyobj = 0; + + pyobj = SWIG_From_int((int)(H5T_UNIX_D64BE_g)); + return pyobj; +} + + +SWIGINTERN int H5T_UNIX_D64LE_g_set(PyObject *_val) { + { + int val; + int res = SWIG_AsVal_int(_val, &val); + if (!SWIG_IsOK(res)) { + SWIG_exception_fail(SWIG_ArgError(res), "in variable '""H5T_UNIX_D64LE_g""' of type '""hid_t""'"); + } + H5T_UNIX_D64LE_g = (hid_t)(val); + } + return 0; +fail: + return 1; +} + + +SWIGINTERN PyObject *H5T_UNIX_D64LE_g_get(void) { + PyObject *pyobj = 0; + + pyobj = SWIG_From_int((int)(H5T_UNIX_D64LE_g)); + return pyobj; +} + + +SWIGINTERN int H5T_C_S1_g_set(PyObject *_val) { + { + int val; + int res = SWIG_AsVal_int(_val, &val); + if (!SWIG_IsOK(res)) { + SWIG_exception_fail(SWIG_ArgError(res), "in variable '""H5T_C_S1_g""' of type '""hid_t""'"); + } + H5T_C_S1_g = (hid_t)(val); + } + return 0; +fail: + return 1; +} + + +SWIGINTERN PyObject *H5T_C_S1_g_get(void) { + PyObject *pyobj = 0; + + pyobj = SWIG_From_int((int)(H5T_C_S1_g)); + return pyobj; +} + + +SWIGINTERN int H5T_FORTRAN_S1_g_set(PyObject *_val) { + { + int val; + int res = SWIG_AsVal_int(_val, &val); + if (!SWIG_IsOK(res)) { + SWIG_exception_fail(SWIG_ArgError(res), "in variable '""H5T_FORTRAN_S1_g""' of type '""hid_t""'"); + } + H5T_FORTRAN_S1_g = (hid_t)(val); + } + return 0; +fail: + return 1; +} + + +SWIGINTERN PyObject *H5T_FORTRAN_S1_g_get(void) { + PyObject *pyobj = 0; + + pyobj = SWIG_From_int((int)(H5T_FORTRAN_S1_g)); + return pyobj; +} + + +SWIGINTERN int H5T_NATIVE_SCHAR_g_set(PyObject *_val) { + { + int val; + int res = SWIG_AsVal_int(_val, &val); + if (!SWIG_IsOK(res)) { + SWIG_exception_fail(SWIG_ArgError(res), "in variable '""H5T_NATIVE_SCHAR_g""' of type '""hid_t""'"); + } + H5T_NATIVE_SCHAR_g = (hid_t)(val); + } + return 0; +fail: + return 1; +} + + +SWIGINTERN PyObject *H5T_NATIVE_SCHAR_g_get(void) { + PyObject *pyobj = 0; + + pyobj = SWIG_From_int((int)(H5T_NATIVE_SCHAR_g)); + return pyobj; +} + + +SWIGINTERN int H5T_NATIVE_UCHAR_g_set(PyObject *_val) { + { + int val; + int res = SWIG_AsVal_int(_val, &val); + if (!SWIG_IsOK(res)) { + SWIG_exception_fail(SWIG_ArgError(res), "in variable '""H5T_NATIVE_UCHAR_g""' of type '""hid_t""'"); + } + H5T_NATIVE_UCHAR_g = (hid_t)(val); + } + return 0; +fail: + return 1; +} + + +SWIGINTERN PyObject *H5T_NATIVE_UCHAR_g_get(void) { + PyObject *pyobj = 0; + + pyobj = SWIG_From_int((int)(H5T_NATIVE_UCHAR_g)); + return pyobj; +} + + +SWIGINTERN int H5T_NATIVE_SHORT_g_set(PyObject *_val) { + { + int val; + int res = SWIG_AsVal_int(_val, &val); + if (!SWIG_IsOK(res)) { + SWIG_exception_fail(SWIG_ArgError(res), "in variable '""H5T_NATIVE_SHORT_g""' of type '""hid_t""'"); + } + H5T_NATIVE_SHORT_g = (hid_t)(val); + } + return 0; +fail: + return 1; +} + + +SWIGINTERN PyObject *H5T_NATIVE_SHORT_g_get(void) { + PyObject *pyobj = 0; + + pyobj = SWIG_From_int((int)(H5T_NATIVE_SHORT_g)); + return pyobj; +} + + +SWIGINTERN int H5T_NATIVE_USHORT_g_set(PyObject *_val) { + { + int val; + int res = SWIG_AsVal_int(_val, &val); + if (!SWIG_IsOK(res)) { + SWIG_exception_fail(SWIG_ArgError(res), "in variable '""H5T_NATIVE_USHORT_g""' of type '""hid_t""'"); + } + H5T_NATIVE_USHORT_g = (hid_t)(val); + } + return 0; +fail: + return 1; +} + + +SWIGINTERN PyObject *H5T_NATIVE_USHORT_g_get(void) { + PyObject *pyobj = 0; + + pyobj = SWIG_From_int((int)(H5T_NATIVE_USHORT_g)); + return pyobj; +} + + +SWIGINTERN int H5T_NATIVE_INT_g_set(PyObject *_val) { + { + int val; + int res = SWIG_AsVal_int(_val, &val); + if (!SWIG_IsOK(res)) { + SWIG_exception_fail(SWIG_ArgError(res), "in variable '""H5T_NATIVE_INT_g""' of type '""hid_t""'"); + } + H5T_NATIVE_INT_g = (hid_t)(val); + } + return 0; +fail: + return 1; +} + + +SWIGINTERN PyObject *H5T_NATIVE_INT_g_get(void) { + PyObject *pyobj = 0; + + pyobj = SWIG_From_int((int)(H5T_NATIVE_INT_g)); + return pyobj; +} + + +SWIGINTERN int H5T_NATIVE_UINT_g_set(PyObject *_val) { + { + int val; + int res = SWIG_AsVal_int(_val, &val); + if (!SWIG_IsOK(res)) { + SWIG_exception_fail(SWIG_ArgError(res), "in variable '""H5T_NATIVE_UINT_g""' of type '""hid_t""'"); + } + H5T_NATIVE_UINT_g = (hid_t)(val); + } + return 0; +fail: + return 1; +} + + +SWIGINTERN PyObject *H5T_NATIVE_UINT_g_get(void) { + PyObject *pyobj = 0; + + pyobj = SWIG_From_int((int)(H5T_NATIVE_UINT_g)); + return pyobj; +} + + +SWIGINTERN int H5T_NATIVE_LONG_g_set(PyObject *_val) { + { + int val; + int res = SWIG_AsVal_int(_val, &val); + if (!SWIG_IsOK(res)) { + SWIG_exception_fail(SWIG_ArgError(res), "in variable '""H5T_NATIVE_LONG_g""' of type '""hid_t""'"); + } + H5T_NATIVE_LONG_g = (hid_t)(val); + } + return 0; +fail: + return 1; +} + + +SWIGINTERN PyObject *H5T_NATIVE_LONG_g_get(void) { + PyObject *pyobj = 0; + + pyobj = SWIG_From_int((int)(H5T_NATIVE_LONG_g)); + return pyobj; +} + + +SWIGINTERN int H5T_NATIVE_ULONG_g_set(PyObject *_val) { + { + int val; + int res = SWIG_AsVal_int(_val, &val); + if (!SWIG_IsOK(res)) { + SWIG_exception_fail(SWIG_ArgError(res), "in variable '""H5T_NATIVE_ULONG_g""' of type '""hid_t""'"); + } + H5T_NATIVE_ULONG_g = (hid_t)(val); + } + return 0; +fail: + return 1; +} + + +SWIGINTERN PyObject *H5T_NATIVE_ULONG_g_get(void) { + PyObject *pyobj = 0; + + pyobj = SWIG_From_int((int)(H5T_NATIVE_ULONG_g)); + return pyobj; +} + + +SWIGINTERN int H5T_NATIVE_LLONG_g_set(PyObject *_val) { + { + int val; + int res = SWIG_AsVal_int(_val, &val); + if (!SWIG_IsOK(res)) { + SWIG_exception_fail(SWIG_ArgError(res), "in variable '""H5T_NATIVE_LLONG_g""' of type '""hid_t""'"); + } + H5T_NATIVE_LLONG_g = (hid_t)(val); + } + return 0; +fail: + return 1; +} + + +SWIGINTERN PyObject *H5T_NATIVE_LLONG_g_get(void) { + PyObject *pyobj = 0; + + pyobj = SWIG_From_int((int)(H5T_NATIVE_LLONG_g)); + return pyobj; +} + + +SWIGINTERN int H5T_NATIVE_ULLONG_g_set(PyObject *_val) { + { + int val; + int res = SWIG_AsVal_int(_val, &val); + if (!SWIG_IsOK(res)) { + SWIG_exception_fail(SWIG_ArgError(res), "in variable '""H5T_NATIVE_ULLONG_g""' of type '""hid_t""'"); + } + H5T_NATIVE_ULLONG_g = (hid_t)(val); + } + return 0; +fail: + return 1; +} + + +SWIGINTERN PyObject *H5T_NATIVE_ULLONG_g_get(void) { + PyObject *pyobj = 0; + + pyobj = SWIG_From_int((int)(H5T_NATIVE_ULLONG_g)); + return pyobj; +} + + +SWIGINTERN int H5T_NATIVE_FLOAT_g_set(PyObject *_val) { + { + int val; + int res = SWIG_AsVal_int(_val, &val); + if (!SWIG_IsOK(res)) { + SWIG_exception_fail(SWIG_ArgError(res), "in variable '""H5T_NATIVE_FLOAT_g""' of type '""hid_t""'"); + } + H5T_NATIVE_FLOAT_g = (hid_t)(val); + } + return 0; +fail: + return 1; +} + + +SWIGINTERN PyObject *H5T_NATIVE_FLOAT_g_get(void) { + PyObject *pyobj = 0; + + pyobj = SWIG_From_int((int)(H5T_NATIVE_FLOAT_g)); + return pyobj; +} + + +SWIGINTERN int H5T_NATIVE_DOUBLE_g_set(PyObject *_val) { + { + int val; + int res = SWIG_AsVal_int(_val, &val); + if (!SWIG_IsOK(res)) { + SWIG_exception_fail(SWIG_ArgError(res), "in variable '""H5T_NATIVE_DOUBLE_g""' of type '""hid_t""'"); + } + H5T_NATIVE_DOUBLE_g = (hid_t)(val); + } + return 0; +fail: + return 1; +} + + +SWIGINTERN PyObject *H5T_NATIVE_DOUBLE_g_get(void) { + PyObject *pyobj = 0; + + pyobj = SWIG_From_int((int)(H5T_NATIVE_DOUBLE_g)); + return pyobj; +} + + +SWIGINTERN int H5T_NATIVE_LDOUBLE_g_set(PyObject *_val) { + { + int val; + int res = SWIG_AsVal_int(_val, &val); + if (!SWIG_IsOK(res)) { + SWIG_exception_fail(SWIG_ArgError(res), "in variable '""H5T_NATIVE_LDOUBLE_g""' of type '""hid_t""'"); + } + H5T_NATIVE_LDOUBLE_g = (hid_t)(val); + } + return 0; +fail: + return 1; +} + + +SWIGINTERN PyObject *H5T_NATIVE_LDOUBLE_g_get(void) { + PyObject *pyobj = 0; + + pyobj = SWIG_From_int((int)(H5T_NATIVE_LDOUBLE_g)); + return pyobj; +} + + +SWIGINTERN int H5T_NATIVE_B8_g_set(PyObject *_val) { + { + int val; + int res = SWIG_AsVal_int(_val, &val); + if (!SWIG_IsOK(res)) { + SWIG_exception_fail(SWIG_ArgError(res), "in variable '""H5T_NATIVE_B8_g""' of type '""hid_t""'"); + } + H5T_NATIVE_B8_g = (hid_t)(val); + } + return 0; +fail: + return 1; +} + + +SWIGINTERN PyObject *H5T_NATIVE_B8_g_get(void) { + PyObject *pyobj = 0; + + pyobj = SWIG_From_int((int)(H5T_NATIVE_B8_g)); + return pyobj; +} + + +SWIGINTERN int H5T_NATIVE_B16_g_set(PyObject *_val) { + { + int val; + int res = SWIG_AsVal_int(_val, &val); + if (!SWIG_IsOK(res)) { + SWIG_exception_fail(SWIG_ArgError(res), "in variable '""H5T_NATIVE_B16_g""' of type '""hid_t""'"); + } + H5T_NATIVE_B16_g = (hid_t)(val); + } + return 0; +fail: + return 1; +} + + +SWIGINTERN PyObject *H5T_NATIVE_B16_g_get(void) { + PyObject *pyobj = 0; + + pyobj = SWIG_From_int((int)(H5T_NATIVE_B16_g)); + return pyobj; +} + + +SWIGINTERN int H5T_NATIVE_B32_g_set(PyObject *_val) { + { + int val; + int res = SWIG_AsVal_int(_val, &val); + if (!SWIG_IsOK(res)) { + SWIG_exception_fail(SWIG_ArgError(res), "in variable '""H5T_NATIVE_B32_g""' of type '""hid_t""'"); + } + H5T_NATIVE_B32_g = (hid_t)(val); + } + return 0; +fail: + return 1; +} + + +SWIGINTERN PyObject *H5T_NATIVE_B32_g_get(void) { + PyObject *pyobj = 0; + + pyobj = SWIG_From_int((int)(H5T_NATIVE_B32_g)); + return pyobj; +} + + +SWIGINTERN int H5T_NATIVE_B64_g_set(PyObject *_val) { + { + int val; + int res = SWIG_AsVal_int(_val, &val); + if (!SWIG_IsOK(res)) { + SWIG_exception_fail(SWIG_ArgError(res), "in variable '""H5T_NATIVE_B64_g""' of type '""hid_t""'"); + } + H5T_NATIVE_B64_g = (hid_t)(val); + } + return 0; +fail: + return 1; +} + + +SWIGINTERN PyObject *H5T_NATIVE_B64_g_get(void) { + PyObject *pyobj = 0; + + pyobj = SWIG_From_int((int)(H5T_NATIVE_B64_g)); + return pyobj; +} + + +SWIGINTERN int H5T_NATIVE_OPAQUE_g_set(PyObject *_val) { + { + int val; + int res = SWIG_AsVal_int(_val, &val); + if (!SWIG_IsOK(res)) { + SWIG_exception_fail(SWIG_ArgError(res), "in variable '""H5T_NATIVE_OPAQUE_g""' of type '""hid_t""'"); + } + H5T_NATIVE_OPAQUE_g = (hid_t)(val); + } + return 0; +fail: + return 1; +} + + +SWIGINTERN PyObject *H5T_NATIVE_OPAQUE_g_get(void) { + PyObject *pyobj = 0; + + pyobj = SWIG_From_int((int)(H5T_NATIVE_OPAQUE_g)); + return pyobj; +} + + +SWIGINTERN int H5T_NATIVE_HADDR_g_set(PyObject *_val) { + { + int val; + int res = SWIG_AsVal_int(_val, &val); + if (!SWIG_IsOK(res)) { + SWIG_exception_fail(SWIG_ArgError(res), "in variable '""H5T_NATIVE_HADDR_g""' of type '""hid_t""'"); + } + H5T_NATIVE_HADDR_g = (hid_t)(val); + } + return 0; +fail: + return 1; +} + + +SWIGINTERN PyObject *H5T_NATIVE_HADDR_g_get(void) { + PyObject *pyobj = 0; + + pyobj = SWIG_From_int((int)(H5T_NATIVE_HADDR_g)); + return pyobj; +} + + +SWIGINTERN int H5T_NATIVE_HSIZE_g_set(PyObject *_val) { + { + int val; + int res = SWIG_AsVal_int(_val, &val); + if (!SWIG_IsOK(res)) { + SWIG_exception_fail(SWIG_ArgError(res), "in variable '""H5T_NATIVE_HSIZE_g""' of type '""hid_t""'"); + } + H5T_NATIVE_HSIZE_g = (hid_t)(val); + } + return 0; +fail: + return 1; +} + + +SWIGINTERN PyObject *H5T_NATIVE_HSIZE_g_get(void) { + PyObject *pyobj = 0; + + pyobj = SWIG_From_int((int)(H5T_NATIVE_HSIZE_g)); + return pyobj; +} + + +SWIGINTERN int H5T_NATIVE_HSSIZE_g_set(PyObject *_val) { + { + int val; + int res = SWIG_AsVal_int(_val, &val); + if (!SWIG_IsOK(res)) { + SWIG_exception_fail(SWIG_ArgError(res), "in variable '""H5T_NATIVE_HSSIZE_g""' of type '""hid_t""'"); + } + H5T_NATIVE_HSSIZE_g = (hid_t)(val); + } + return 0; +fail: + return 1; +} + + +SWIGINTERN PyObject *H5T_NATIVE_HSSIZE_g_get(void) { + PyObject *pyobj = 0; + + pyobj = SWIG_From_int((int)(H5T_NATIVE_HSSIZE_g)); + return pyobj; +} + + +SWIGINTERN int H5T_NATIVE_HERR_g_set(PyObject *_val) { + { + int val; + int res = SWIG_AsVal_int(_val, &val); + if (!SWIG_IsOK(res)) { + SWIG_exception_fail(SWIG_ArgError(res), "in variable '""H5T_NATIVE_HERR_g""' of type '""hid_t""'"); + } + H5T_NATIVE_HERR_g = (hid_t)(val); + } + return 0; +fail: + return 1; +} + + +SWIGINTERN PyObject *H5T_NATIVE_HERR_g_get(void) { + PyObject *pyobj = 0; + + pyobj = SWIG_From_int((int)(H5T_NATIVE_HERR_g)); + return pyobj; +} + + +SWIGINTERN int H5T_NATIVE_HBOOL_g_set(PyObject *_val) { + { + int val; + int res = SWIG_AsVal_int(_val, &val); + if (!SWIG_IsOK(res)) { + SWIG_exception_fail(SWIG_ArgError(res), "in variable '""H5T_NATIVE_HBOOL_g""' of type '""hid_t""'"); + } + H5T_NATIVE_HBOOL_g = (hid_t)(val); + } + return 0; +fail: + return 1; +} + + +SWIGINTERN PyObject *H5T_NATIVE_HBOOL_g_get(void) { + PyObject *pyobj = 0; + + pyobj = SWIG_From_int((int)(H5T_NATIVE_HBOOL_g)); + return pyobj; +} + + +SWIGINTERN int H5T_NATIVE_INT8_g_set(PyObject *_val) { + { + int val; + int res = SWIG_AsVal_int(_val, &val); + if (!SWIG_IsOK(res)) { + SWIG_exception_fail(SWIG_ArgError(res), "in variable '""H5T_NATIVE_INT8_g""' of type '""hid_t""'"); + } + H5T_NATIVE_INT8_g = (hid_t)(val); + } + return 0; +fail: + return 1; +} + + +SWIGINTERN PyObject *H5T_NATIVE_INT8_g_get(void) { + PyObject *pyobj = 0; + + pyobj = SWIG_From_int((int)(H5T_NATIVE_INT8_g)); + return pyobj; +} + + +SWIGINTERN int H5T_NATIVE_UINT8_g_set(PyObject *_val) { + { + int val; + int res = SWIG_AsVal_int(_val, &val); + if (!SWIG_IsOK(res)) { + SWIG_exception_fail(SWIG_ArgError(res), "in variable '""H5T_NATIVE_UINT8_g""' of type '""hid_t""'"); + } + H5T_NATIVE_UINT8_g = (hid_t)(val); + } + return 0; +fail: + return 1; +} + + +SWIGINTERN PyObject *H5T_NATIVE_UINT8_g_get(void) { + PyObject *pyobj = 0; + + pyobj = SWIG_From_int((int)(H5T_NATIVE_UINT8_g)); + return pyobj; +} + + +SWIGINTERN int H5T_NATIVE_INT_LEAST8_g_set(PyObject *_val) { + { + int val; + int res = SWIG_AsVal_int(_val, &val); + if (!SWIG_IsOK(res)) { + SWIG_exception_fail(SWIG_ArgError(res), "in variable '""H5T_NATIVE_INT_LEAST8_g""' of type '""hid_t""'"); + } + H5T_NATIVE_INT_LEAST8_g = (hid_t)(val); + } + return 0; +fail: + return 1; +} + + +SWIGINTERN PyObject *H5T_NATIVE_INT_LEAST8_g_get(void) { + PyObject *pyobj = 0; + + pyobj = SWIG_From_int((int)(H5T_NATIVE_INT_LEAST8_g)); + return pyobj; +} + + +SWIGINTERN int H5T_NATIVE_UINT_LEAST8_g_set(PyObject *_val) { + { + int val; + int res = SWIG_AsVal_int(_val, &val); + if (!SWIG_IsOK(res)) { + SWIG_exception_fail(SWIG_ArgError(res), "in variable '""H5T_NATIVE_UINT_LEAST8_g""' of type '""hid_t""'"); + } + H5T_NATIVE_UINT_LEAST8_g = (hid_t)(val); + } + return 0; +fail: + return 1; +} + + +SWIGINTERN PyObject *H5T_NATIVE_UINT_LEAST8_g_get(void) { + PyObject *pyobj = 0; + + pyobj = SWIG_From_int((int)(H5T_NATIVE_UINT_LEAST8_g)); + return pyobj; +} + + +SWIGINTERN int H5T_NATIVE_INT_FAST8_g_set(PyObject *_val) { + { + int val; + int res = SWIG_AsVal_int(_val, &val); + if (!SWIG_IsOK(res)) { + SWIG_exception_fail(SWIG_ArgError(res), "in variable '""H5T_NATIVE_INT_FAST8_g""' of type '""hid_t""'"); + } + H5T_NATIVE_INT_FAST8_g = (hid_t)(val); + } + return 0; +fail: + return 1; +} + + +SWIGINTERN PyObject *H5T_NATIVE_INT_FAST8_g_get(void) { + PyObject *pyobj = 0; + + pyobj = SWIG_From_int((int)(H5T_NATIVE_INT_FAST8_g)); + return pyobj; +} + + +SWIGINTERN int H5T_NATIVE_UINT_FAST8_g_set(PyObject *_val) { + { + int val; + int res = SWIG_AsVal_int(_val, &val); + if (!SWIG_IsOK(res)) { + SWIG_exception_fail(SWIG_ArgError(res), "in variable '""H5T_NATIVE_UINT_FAST8_g""' of type '""hid_t""'"); + } + H5T_NATIVE_UINT_FAST8_g = (hid_t)(val); + } + return 0; +fail: + return 1; +} + + +SWIGINTERN PyObject *H5T_NATIVE_UINT_FAST8_g_get(void) { + PyObject *pyobj = 0; + + pyobj = SWIG_From_int((int)(H5T_NATIVE_UINT_FAST8_g)); + return pyobj; +} + + +SWIGINTERN int H5T_NATIVE_INT16_g_set(PyObject *_val) { + { + int val; + int res = SWIG_AsVal_int(_val, &val); + if (!SWIG_IsOK(res)) { + SWIG_exception_fail(SWIG_ArgError(res), "in variable '""H5T_NATIVE_INT16_g""' of type '""hid_t""'"); + } + H5T_NATIVE_INT16_g = (hid_t)(val); + } + return 0; +fail: + return 1; +} + + +SWIGINTERN PyObject *H5T_NATIVE_INT16_g_get(void) { + PyObject *pyobj = 0; + + pyobj = SWIG_From_int((int)(H5T_NATIVE_INT16_g)); + return pyobj; +} + + +SWIGINTERN int H5T_NATIVE_UINT16_g_set(PyObject *_val) { + { + int val; + int res = SWIG_AsVal_int(_val, &val); + if (!SWIG_IsOK(res)) { + SWIG_exception_fail(SWIG_ArgError(res), "in variable '""H5T_NATIVE_UINT16_g""' of type '""hid_t""'"); + } + H5T_NATIVE_UINT16_g = (hid_t)(val); + } + return 0; +fail: + return 1; +} + + +SWIGINTERN PyObject *H5T_NATIVE_UINT16_g_get(void) { + PyObject *pyobj = 0; + + pyobj = SWIG_From_int((int)(H5T_NATIVE_UINT16_g)); + return pyobj; +} + + +SWIGINTERN int H5T_NATIVE_INT_LEAST16_g_set(PyObject *_val) { + { + int val; + int res = SWIG_AsVal_int(_val, &val); + if (!SWIG_IsOK(res)) { + SWIG_exception_fail(SWIG_ArgError(res), "in variable '""H5T_NATIVE_INT_LEAST16_g""' of type '""hid_t""'"); + } + H5T_NATIVE_INT_LEAST16_g = (hid_t)(val); + } + return 0; +fail: + return 1; +} + + +SWIGINTERN PyObject *H5T_NATIVE_INT_LEAST16_g_get(void) { + PyObject *pyobj = 0; + + pyobj = SWIG_From_int((int)(H5T_NATIVE_INT_LEAST16_g)); + return pyobj; +} + + +SWIGINTERN int H5T_NATIVE_UINT_LEAST16_g_set(PyObject *_val) { + { + int val; + int res = SWIG_AsVal_int(_val, &val); + if (!SWIG_IsOK(res)) { + SWIG_exception_fail(SWIG_ArgError(res), "in variable '""H5T_NATIVE_UINT_LEAST16_g""' of type '""hid_t""'"); + } + H5T_NATIVE_UINT_LEAST16_g = (hid_t)(val); + } + return 0; +fail: + return 1; +} + + +SWIGINTERN PyObject *H5T_NATIVE_UINT_LEAST16_g_get(void) { + PyObject *pyobj = 0; + + pyobj = SWIG_From_int((int)(H5T_NATIVE_UINT_LEAST16_g)); + return pyobj; +} + + +SWIGINTERN int H5T_NATIVE_INT_FAST16_g_set(PyObject *_val) { + { + int val; + int res = SWIG_AsVal_int(_val, &val); + if (!SWIG_IsOK(res)) { + SWIG_exception_fail(SWIG_ArgError(res), "in variable '""H5T_NATIVE_INT_FAST16_g""' of type '""hid_t""'"); + } + H5T_NATIVE_INT_FAST16_g = (hid_t)(val); + } + return 0; +fail: + return 1; +} + + +SWIGINTERN PyObject *H5T_NATIVE_INT_FAST16_g_get(void) { + PyObject *pyobj = 0; + + pyobj = SWIG_From_int((int)(H5T_NATIVE_INT_FAST16_g)); + return pyobj; +} + + +SWIGINTERN int H5T_NATIVE_UINT_FAST16_g_set(PyObject *_val) { + { + int val; + int res = SWIG_AsVal_int(_val, &val); + if (!SWIG_IsOK(res)) { + SWIG_exception_fail(SWIG_ArgError(res), "in variable '""H5T_NATIVE_UINT_FAST16_g""' of type '""hid_t""'"); + } + H5T_NATIVE_UINT_FAST16_g = (hid_t)(val); + } + return 0; +fail: + return 1; +} + + +SWIGINTERN PyObject *H5T_NATIVE_UINT_FAST16_g_get(void) { + PyObject *pyobj = 0; + + pyobj = SWIG_From_int((int)(H5T_NATIVE_UINT_FAST16_g)); + return pyobj; +} + + +SWIGINTERN int H5T_NATIVE_INT32_g_set(PyObject *_val) { + { + int val; + int res = SWIG_AsVal_int(_val, &val); + if (!SWIG_IsOK(res)) { + SWIG_exception_fail(SWIG_ArgError(res), "in variable '""H5T_NATIVE_INT32_g""' of type '""hid_t""'"); + } + H5T_NATIVE_INT32_g = (hid_t)(val); + } + return 0; +fail: + return 1; +} + + +SWIGINTERN PyObject *H5T_NATIVE_INT32_g_get(void) { + PyObject *pyobj = 0; + + pyobj = SWIG_From_int((int)(H5T_NATIVE_INT32_g)); + return pyobj; +} + + +SWIGINTERN int H5T_NATIVE_UINT32_g_set(PyObject *_val) { + { + int val; + int res = SWIG_AsVal_int(_val, &val); + if (!SWIG_IsOK(res)) { + SWIG_exception_fail(SWIG_ArgError(res), "in variable '""H5T_NATIVE_UINT32_g""' of type '""hid_t""'"); + } + H5T_NATIVE_UINT32_g = (hid_t)(val); + } + return 0; +fail: + return 1; +} + + +SWIGINTERN PyObject *H5T_NATIVE_UINT32_g_get(void) { + PyObject *pyobj = 0; + + pyobj = SWIG_From_int((int)(H5T_NATIVE_UINT32_g)); + return pyobj; +} + + +SWIGINTERN int H5T_NATIVE_INT_LEAST32_g_set(PyObject *_val) { + { + int val; + int res = SWIG_AsVal_int(_val, &val); + if (!SWIG_IsOK(res)) { + SWIG_exception_fail(SWIG_ArgError(res), "in variable '""H5T_NATIVE_INT_LEAST32_g""' of type '""hid_t""'"); + } + H5T_NATIVE_INT_LEAST32_g = (hid_t)(val); + } + return 0; +fail: + return 1; +} + + +SWIGINTERN PyObject *H5T_NATIVE_INT_LEAST32_g_get(void) { + PyObject *pyobj = 0; + + pyobj = SWIG_From_int((int)(H5T_NATIVE_INT_LEAST32_g)); + return pyobj; +} + + +SWIGINTERN int H5T_NATIVE_UINT_LEAST32_g_set(PyObject *_val) { + { + int val; + int res = SWIG_AsVal_int(_val, &val); + if (!SWIG_IsOK(res)) { + SWIG_exception_fail(SWIG_ArgError(res), "in variable '""H5T_NATIVE_UINT_LEAST32_g""' of type '""hid_t""'"); + } + H5T_NATIVE_UINT_LEAST32_g = (hid_t)(val); + } + return 0; +fail: + return 1; +} + + +SWIGINTERN PyObject *H5T_NATIVE_UINT_LEAST32_g_get(void) { + PyObject *pyobj = 0; + + pyobj = SWIG_From_int((int)(H5T_NATIVE_UINT_LEAST32_g)); + return pyobj; +} + + +SWIGINTERN int H5T_NATIVE_INT_FAST32_g_set(PyObject *_val) { + { + int val; + int res = SWIG_AsVal_int(_val, &val); + if (!SWIG_IsOK(res)) { + SWIG_exception_fail(SWIG_ArgError(res), "in variable '""H5T_NATIVE_INT_FAST32_g""' of type '""hid_t""'"); + } + H5T_NATIVE_INT_FAST32_g = (hid_t)(val); + } + return 0; +fail: + return 1; +} + + +SWIGINTERN PyObject *H5T_NATIVE_INT_FAST32_g_get(void) { + PyObject *pyobj = 0; + + pyobj = SWIG_From_int((int)(H5T_NATIVE_INT_FAST32_g)); + return pyobj; +} + + +SWIGINTERN int H5T_NATIVE_UINT_FAST32_g_set(PyObject *_val) { + { + int val; + int res = SWIG_AsVal_int(_val, &val); + if (!SWIG_IsOK(res)) { + SWIG_exception_fail(SWIG_ArgError(res), "in variable '""H5T_NATIVE_UINT_FAST32_g""' of type '""hid_t""'"); + } + H5T_NATIVE_UINT_FAST32_g = (hid_t)(val); + } + return 0; +fail: + return 1; +} + + +SWIGINTERN PyObject *H5T_NATIVE_UINT_FAST32_g_get(void) { + PyObject *pyobj = 0; + + pyobj = SWIG_From_int((int)(H5T_NATIVE_UINT_FAST32_g)); + return pyobj; +} + + +SWIGINTERN int H5T_NATIVE_INT64_g_set(PyObject *_val) { + { + int val; + int res = SWIG_AsVal_int(_val, &val); + if (!SWIG_IsOK(res)) { + SWIG_exception_fail(SWIG_ArgError(res), "in variable '""H5T_NATIVE_INT64_g""' of type '""hid_t""'"); + } + H5T_NATIVE_INT64_g = (hid_t)(val); + } + return 0; +fail: + return 1; +} + + +SWIGINTERN PyObject *H5T_NATIVE_INT64_g_get(void) { + PyObject *pyobj = 0; + + pyobj = SWIG_From_int((int)(H5T_NATIVE_INT64_g)); + return pyobj; +} + + +SWIGINTERN int H5T_NATIVE_UINT64_g_set(PyObject *_val) { + { + int val; + int res = SWIG_AsVal_int(_val, &val); + if (!SWIG_IsOK(res)) { + SWIG_exception_fail(SWIG_ArgError(res), "in variable '""H5T_NATIVE_UINT64_g""' of type '""hid_t""'"); + } + H5T_NATIVE_UINT64_g = (hid_t)(val); + } + return 0; +fail: + return 1; +} + + +SWIGINTERN PyObject *H5T_NATIVE_UINT64_g_get(void) { + PyObject *pyobj = 0; + + pyobj = SWIG_From_int((int)(H5T_NATIVE_UINT64_g)); + return pyobj; +} + + +SWIGINTERN int H5T_NATIVE_INT_LEAST64_g_set(PyObject *_val) { + { + int val; + int res = SWIG_AsVal_int(_val, &val); + if (!SWIG_IsOK(res)) { + SWIG_exception_fail(SWIG_ArgError(res), "in variable '""H5T_NATIVE_INT_LEAST64_g""' of type '""hid_t""'"); + } + H5T_NATIVE_INT_LEAST64_g = (hid_t)(val); + } + return 0; +fail: + return 1; +} + + +SWIGINTERN PyObject *H5T_NATIVE_INT_LEAST64_g_get(void) { + PyObject *pyobj = 0; + + pyobj = SWIG_From_int((int)(H5T_NATIVE_INT_LEAST64_g)); + return pyobj; +} + + +SWIGINTERN int H5T_NATIVE_UINT_LEAST64_g_set(PyObject *_val) { + { + int val; + int res = SWIG_AsVal_int(_val, &val); + if (!SWIG_IsOK(res)) { + SWIG_exception_fail(SWIG_ArgError(res), "in variable '""H5T_NATIVE_UINT_LEAST64_g""' of type '""hid_t""'"); + } + H5T_NATIVE_UINT_LEAST64_g = (hid_t)(val); + } + return 0; +fail: + return 1; +} + + +SWIGINTERN PyObject *H5T_NATIVE_UINT_LEAST64_g_get(void) { + PyObject *pyobj = 0; + + pyobj = SWIG_From_int((int)(H5T_NATIVE_UINT_LEAST64_g)); + return pyobj; +} + + +SWIGINTERN int H5T_NATIVE_INT_FAST64_g_set(PyObject *_val) { + { + int val; + int res = SWIG_AsVal_int(_val, &val); + if (!SWIG_IsOK(res)) { + SWIG_exception_fail(SWIG_ArgError(res), "in variable '""H5T_NATIVE_INT_FAST64_g""' of type '""hid_t""'"); + } + H5T_NATIVE_INT_FAST64_g = (hid_t)(val); + } + return 0; +fail: + return 1; +} + + +SWIGINTERN PyObject *H5T_NATIVE_INT_FAST64_g_get(void) { + PyObject *pyobj = 0; + + pyobj = SWIG_From_int((int)(H5T_NATIVE_INT_FAST64_g)); + return pyobj; +} + + +SWIGINTERN int H5T_NATIVE_UINT_FAST64_g_set(PyObject *_val) { + { + int val; + int res = SWIG_AsVal_int(_val, &val); + if (!SWIG_IsOK(res)) { + SWIG_exception_fail(SWIG_ArgError(res), "in variable '""H5T_NATIVE_UINT_FAST64_g""' of type '""hid_t""'"); + } + H5T_NATIVE_UINT_FAST64_g = (hid_t)(val); + } + return 0; +fail: + return 1; +} + + +SWIGINTERN PyObject *H5T_NATIVE_UINT_FAST64_g_get(void) { + PyObject *pyobj = 0; + + pyobj = SWIG_From_int((int)(H5T_NATIVE_UINT_FAST64_g)); + return pyobj; +} + + +SWIGINTERN PyObject *_wrap_H5Topen(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + hid_t arg1 ; + char *arg2 = (char *) 0 ; + hid_t result; + int val1 ; + int ecode1 = 0 ; + int res2 ; + char *buf2 = 0 ; + int alloc2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:H5Topen",&obj0,&obj1)) SWIG_fail; + ecode1 = SWIG_AsVal_int(obj0, &val1); + if (!SWIG_IsOK(ecode1)) { + SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "H5Topen" "', argument " "1"" of type '" "hid_t""'"); + } + arg1 = (hid_t)(val1); + res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "H5Topen" "', argument " "2"" of type '" "char const *""'"); + } + arg2 = buf2; + result = (hid_t)H5Topen(arg1,(char const *)arg2); + resultobj = SWIG_From_int((int)(result)); + if (alloc2 == SWIG_NEWOBJ) free((char*)buf2); + return resultobj; +fail: + if (alloc2 == SWIG_NEWOBJ) free((char*)buf2); + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5Tcreate(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + H5T_class_t arg1 ; + size_t arg2 ; + hid_t result; + int val1 ; + int ecode1 = 0 ; + size_t val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:H5Tcreate",&obj0,&obj1)) SWIG_fail; + ecode1 = SWIG_AsVal_int(obj0, &val1); + if (!SWIG_IsOK(ecode1)) { + SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "H5Tcreate" "', argument " "1"" of type '" "H5T_class_t""'"); + } + arg1 = (H5T_class_t)(val1); + ecode2 = SWIG_AsVal_size_t(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "H5Tcreate" "', argument " "2"" of type '" "size_t""'"); + } + arg2 = (size_t)(val2); + result = (hid_t)H5Tcreate(arg1,arg2); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5Tcopy(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + hid_t arg1 ; + hid_t result; + int val1 ; + int ecode1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:H5Tcopy",&obj0)) SWIG_fail; + ecode1 = SWIG_AsVal_int(obj0, &val1); + if (!SWIG_IsOK(ecode1)) { + SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "H5Tcopy" "', argument " "1"" of type '" "hid_t""'"); + } + arg1 = (hid_t)(val1); + result = (hid_t)H5Tcopy(arg1); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5Tclose(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + hid_t arg1 ; + herr_t result; + int val1 ; + int ecode1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:H5Tclose",&obj0)) SWIG_fail; + ecode1 = SWIG_AsVal_int(obj0, &val1); + if (!SWIG_IsOK(ecode1)) { + SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "H5Tclose" "', argument " "1"" of type '" "hid_t""'"); + } + arg1 = (hid_t)(val1); + result = (herr_t)H5Tclose(arg1); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5Tequal(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + hid_t arg1 ; + hid_t arg2 ; + htri_t result; + int val1 ; + int ecode1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:H5Tequal",&obj0,&obj1)) SWIG_fail; + ecode1 = SWIG_AsVal_int(obj0, &val1); + if (!SWIG_IsOK(ecode1)) { + SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "H5Tequal" "', argument " "1"" of type '" "hid_t""'"); + } + arg1 = (hid_t)(val1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "H5Tequal" "', argument " "2"" of type '" "hid_t""'"); + } + arg2 = (hid_t)(val2); + result = (htri_t)H5Tequal(arg1,arg2); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5Tlock(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + hid_t arg1 ; + herr_t result; + int val1 ; + int ecode1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:H5Tlock",&obj0)) SWIG_fail; + ecode1 = SWIG_AsVal_int(obj0, &val1); + if (!SWIG_IsOK(ecode1)) { + SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "H5Tlock" "', argument " "1"" of type '" "hid_t""'"); + } + arg1 = (hid_t)(val1); + result = (herr_t)H5Tlock(arg1); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5Tcommit(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + hid_t arg1 ; + char *arg2 = (char *) 0 ; + hid_t arg3 ; + herr_t result; + int val1 ; + int ecode1 = 0 ; + int res2 ; + char *buf2 = 0 ; + int alloc2 = 0 ; + int val3 ; + int ecode3 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OOO:H5Tcommit",&obj0,&obj1,&obj2)) SWIG_fail; + ecode1 = SWIG_AsVal_int(obj0, &val1); + if (!SWIG_IsOK(ecode1)) { + SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "H5Tcommit" "', argument " "1"" of type '" "hid_t""'"); + } + arg1 = (hid_t)(val1); + res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "H5Tcommit" "', argument " "2"" of type '" "char const *""'"); + } + arg2 = buf2; + ecode3 = SWIG_AsVal_int(obj2, &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "H5Tcommit" "', argument " "3"" of type '" "hid_t""'"); + } + arg3 = (hid_t)(val3); + result = (herr_t)H5Tcommit(arg1,(char const *)arg2,arg3); + resultobj = SWIG_From_int((int)(result)); + if (alloc2 == SWIG_NEWOBJ) free((char*)buf2); + return resultobj; +fail: + if (alloc2 == SWIG_NEWOBJ) free((char*)buf2); + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5Tcommitted(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + hid_t arg1 ; + htri_t result; + int val1 ; + int ecode1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:H5Tcommitted",&obj0)) SWIG_fail; + ecode1 = SWIG_AsVal_int(obj0, &val1); + if (!SWIG_IsOK(ecode1)) { + SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "H5Tcommitted" "', argument " "1"" of type '" "hid_t""'"); + } + arg1 = (hid_t)(val1); + result = (htri_t)H5Tcommitted(arg1); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5Tinsert(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + hid_t arg1 ; + char *arg2 = (char *) 0 ; + size_t arg3 ; + hid_t arg4 ; + herr_t result; + int val1 ; + int ecode1 = 0 ; + int res2 ; + char *buf2 = 0 ; + int alloc2 = 0 ; + size_t val3 ; + int ecode3 = 0 ; + int val4 ; + int ecode4 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + PyObject * obj3 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OOOO:H5Tinsert",&obj0,&obj1,&obj2,&obj3)) SWIG_fail; + ecode1 = SWIG_AsVal_int(obj0, &val1); + if (!SWIG_IsOK(ecode1)) { + SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "H5Tinsert" "', argument " "1"" of type '" "hid_t""'"); + } + arg1 = (hid_t)(val1); + res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "H5Tinsert" "', argument " "2"" of type '" "char const *""'"); + } + arg2 = buf2; + ecode3 = SWIG_AsVal_size_t(obj2, &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "H5Tinsert" "', argument " "3"" of type '" "size_t""'"); + } + arg3 = (size_t)(val3); + ecode4 = SWIG_AsVal_int(obj3, &val4); + if (!SWIG_IsOK(ecode4)) { + SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "H5Tinsert" "', argument " "4"" of type '" "hid_t""'"); + } + arg4 = (hid_t)(val4); + result = (herr_t)H5Tinsert(arg1,(char const *)arg2,arg3,arg4); + resultobj = SWIG_From_int((int)(result)); + if (alloc2 == SWIG_NEWOBJ) free((char*)buf2); + return resultobj; +fail: + if (alloc2 == SWIG_NEWOBJ) free((char*)buf2); + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5Tpack(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + hid_t arg1 ; + herr_t result; + int val1 ; + int ecode1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:H5Tpack",&obj0)) SWIG_fail; + ecode1 = SWIG_AsVal_int(obj0, &val1); + if (!SWIG_IsOK(ecode1)) { + SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "H5Tpack" "', argument " "1"" of type '" "hid_t""'"); + } + arg1 = (hid_t)(val1); + result = (herr_t)H5Tpack(arg1); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5Tenum_create(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + hid_t arg1 ; + hid_t result; + int val1 ; + int ecode1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:H5Tenum_create",&obj0)) SWIG_fail; + ecode1 = SWIG_AsVal_int(obj0, &val1); + if (!SWIG_IsOK(ecode1)) { + SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "H5Tenum_create" "', argument " "1"" of type '" "hid_t""'"); + } + arg1 = (hid_t)(val1); + result = (hid_t)H5Tenum_create(arg1); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5Tenum_insert(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + hid_t arg1 ; + char *arg2 = (char *) 0 ; + void *arg3 = (void *) 0 ; + herr_t result; + int val1 ; + int ecode1 = 0 ; + int res2 ; + char *buf2 = 0 ; + int alloc2 = 0 ; + int res3 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OOO:H5Tenum_insert",&obj0,&obj1,&obj2)) SWIG_fail; + ecode1 = SWIG_AsVal_int(obj0, &val1); + if (!SWIG_IsOK(ecode1)) { + SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "H5Tenum_insert" "', argument " "1"" of type '" "hid_t""'"); + } + arg1 = (hid_t)(val1); + res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "H5Tenum_insert" "', argument " "2"" of type '" "char const *""'"); + } + arg2 = buf2; + res3 = SWIG_ConvertPtr(obj2,SWIG_as_voidptrptr(&arg3), 0, 0); + if (!SWIG_IsOK(res3)) { + SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "H5Tenum_insert" "', argument " "3"" of type '" "void const *""'"); + } + result = (herr_t)H5Tenum_insert(arg1,(char const *)arg2,(void const *)arg3); + resultobj = SWIG_From_int((int)(result)); + if (alloc2 == SWIG_NEWOBJ) free((char*)buf2); + return resultobj; +fail: + if (alloc2 == SWIG_NEWOBJ) free((char*)buf2); + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5Tenum_nameof(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + hid_t arg1 ; + void *arg2 = (void *) 0 ; + char *arg3 = (char *) 0 ; + size_t arg4 ; + herr_t result; + int val1 ; + int ecode1 = 0 ; + int res2 ; + int res3 ; + char *buf3 = 0 ; + int alloc3 = 0 ; + size_t val4 ; + int ecode4 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + PyObject * obj3 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OOOO:H5Tenum_nameof",&obj0,&obj1,&obj2,&obj3)) SWIG_fail; + ecode1 = SWIG_AsVal_int(obj0, &val1); + if (!SWIG_IsOK(ecode1)) { + SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "H5Tenum_nameof" "', argument " "1"" of type '" "hid_t""'"); + } + arg1 = (hid_t)(val1); + res2 = SWIG_ConvertPtr(obj1,SWIG_as_voidptrptr(&arg2), 0, 0); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "H5Tenum_nameof" "', argument " "2"" of type '" "void const *""'"); + } + res3 = SWIG_AsCharPtrAndSize(obj2, &buf3, NULL, &alloc3); + if (!SWIG_IsOK(res3)) { + SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "H5Tenum_nameof" "', argument " "3"" of type '" "char *""'"); + } + arg3 = buf3; + ecode4 = SWIG_AsVal_size_t(obj3, &val4); + if (!SWIG_IsOK(ecode4)) { + SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "H5Tenum_nameof" "', argument " "4"" of type '" "size_t""'"); + } + arg4 = (size_t)(val4); + result = (herr_t)H5Tenum_nameof(arg1,(void const *)arg2,arg3,arg4); + resultobj = SWIG_From_int((int)(result)); + if (alloc3 == SWIG_NEWOBJ) free((char*)buf3); + return resultobj; +fail: + if (alloc3 == SWIG_NEWOBJ) free((char*)buf3); + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5Tenum_valueof(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + hid_t arg1 ; + char *arg2 = (char *) 0 ; + void *arg3 = (void *) 0 ; + herr_t result; + int val1 ; + int ecode1 = 0 ; + int res2 ; + char *buf2 = 0 ; + int alloc2 = 0 ; + int res3 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OOO:H5Tenum_valueof",&obj0,&obj1,&obj2)) SWIG_fail; + ecode1 = SWIG_AsVal_int(obj0, &val1); + if (!SWIG_IsOK(ecode1)) { + SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "H5Tenum_valueof" "', argument " "1"" of type '" "hid_t""'"); + } + arg1 = (hid_t)(val1); + res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "H5Tenum_valueof" "', argument " "2"" of type '" "char const *""'"); + } + arg2 = buf2; + res3 = SWIG_ConvertPtr(obj2,SWIG_as_voidptrptr(&arg3), 0, 0); + if (!SWIG_IsOK(res3)) { + SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "H5Tenum_valueof" "', argument " "3"" of type '" "void *""'"); + } + result = (herr_t)H5Tenum_valueof(arg1,(char const *)arg2,arg3); + resultobj = SWIG_From_int((int)(result)); + if (alloc2 == SWIG_NEWOBJ) free((char*)buf2); + return resultobj; +fail: + if (alloc2 == SWIG_NEWOBJ) free((char*)buf2); + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5Tvlen_create(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + hid_t arg1 ; + hid_t result; + int val1 ; + int ecode1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:H5Tvlen_create",&obj0)) SWIG_fail; + ecode1 = SWIG_AsVal_int(obj0, &val1); + if (!SWIG_IsOK(ecode1)) { + SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "H5Tvlen_create" "', argument " "1"" of type '" "hid_t""'"); + } + arg1 = (hid_t)(val1); + result = (hid_t)H5Tvlen_create(arg1); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5Tarray_create(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + hid_t arg1 ; + int arg2 ; + hsize_t *arg3 ; + int *arg4 ; + hid_t result; + int val1 ; + int ecode1 = 0 ; + int val2 ; + int ecode2 = 0 ; + void *argp3 = 0 ; + int res3 = 0 ; + void *argp4 = 0 ; + int res4 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + PyObject * obj3 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OOOO:H5Tarray_create",&obj0,&obj1,&obj2,&obj3)) SWIG_fail; + ecode1 = SWIG_AsVal_int(obj0, &val1); + if (!SWIG_IsOK(ecode1)) { + SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "H5Tarray_create" "', argument " "1"" of type '" "hid_t""'"); + } + arg1 = (hid_t)(val1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "H5Tarray_create" "', argument " "2"" of type '" "int""'"); + } + arg2 = (int)(val2); + res3 = SWIG_ConvertPtr(obj2, &argp3,SWIGTYPE_p_unsigned_long_long, 0 | 0 ); + if (!SWIG_IsOK(res3)) { + SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "H5Tarray_create" "', argument " "3"" of type '" "hsize_t const []""'"); + } + arg3 = (hsize_t *)(argp3); + res4 = SWIG_ConvertPtr(obj3, &argp4,SWIGTYPE_p_int, 0 | 0 ); + if (!SWIG_IsOK(res4)) { + SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "H5Tarray_create" "', argument " "4"" of type '" "int const []""'"); + } + arg4 = (int *)(argp4); + result = (hid_t)H5Tarray_create(arg1,arg2,(unsigned long long const (*))arg3,(int const (*))arg4); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5Tget_array_ndims(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + hid_t arg1 ; + int result; + int val1 ; + int ecode1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:H5Tget_array_ndims",&obj0)) SWIG_fail; + ecode1 = SWIG_AsVal_int(obj0, &val1); + if (!SWIG_IsOK(ecode1)) { + SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "H5Tget_array_ndims" "', argument " "1"" of type '" "hid_t""'"); + } + arg1 = (hid_t)(val1); + result = (int)H5Tget_array_ndims(arg1); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5Tget_array_dims(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + hid_t arg1 ; + hsize_t *arg2 ; + int *arg3 ; + int result; + int val1 ; + int ecode1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + void *argp3 = 0 ; + int res3 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OOO:H5Tget_array_dims",&obj0,&obj1,&obj2)) SWIG_fail; + ecode1 = SWIG_AsVal_int(obj0, &val1); + if (!SWIG_IsOK(ecode1)) { + SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "H5Tget_array_dims" "', argument " "1"" of type '" "hid_t""'"); + } + arg1 = (hid_t)(val1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_unsigned_long_long, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "H5Tget_array_dims" "', argument " "2"" of type '" "hsize_t []""'"); + } + arg2 = (hsize_t *)(argp2); + res3 = SWIG_ConvertPtr(obj2, &argp3,SWIGTYPE_p_int, 0 | 0 ); + if (!SWIG_IsOK(res3)) { + SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "H5Tget_array_dims" "', argument " "3"" of type '" "int []""'"); + } + arg3 = (int *)(argp3); + result = (int)H5Tget_array_dims(arg1,arg2,arg3); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5Tset_tag(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + hid_t arg1 ; + char *arg2 = (char *) 0 ; + herr_t result; + int val1 ; + int ecode1 = 0 ; + int res2 ; + char *buf2 = 0 ; + int alloc2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:H5Tset_tag",&obj0,&obj1)) SWIG_fail; + ecode1 = SWIG_AsVal_int(obj0, &val1); + if (!SWIG_IsOK(ecode1)) { + SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "H5Tset_tag" "', argument " "1"" of type '" "hid_t""'"); + } + arg1 = (hid_t)(val1); + res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "H5Tset_tag" "', argument " "2"" of type '" "char const *""'"); + } + arg2 = buf2; + result = (herr_t)H5Tset_tag(arg1,(char const *)arg2); + resultobj = SWIG_From_int((int)(result)); + if (alloc2 == SWIG_NEWOBJ) free((char*)buf2); + return resultobj; +fail: + if (alloc2 == SWIG_NEWOBJ) free((char*)buf2); + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5Tget_tag(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + hid_t arg1 ; + char *result = 0 ; + int val1 ; + int ecode1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:H5Tget_tag",&obj0)) SWIG_fail; + ecode1 = SWIG_AsVal_int(obj0, &val1); + if (!SWIG_IsOK(ecode1)) { + SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "H5Tget_tag" "', argument " "1"" of type '" "hid_t""'"); + } + arg1 = (hid_t)(val1); + result = (char *)H5Tget_tag(arg1); + resultobj = SWIG_FromCharPtr(result); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5Tget_super(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + hid_t arg1 ; + hid_t result; + int val1 ; + int ecode1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:H5Tget_super",&obj0)) SWIG_fail; + ecode1 = SWIG_AsVal_int(obj0, &val1); + if (!SWIG_IsOK(ecode1)) { + SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "H5Tget_super" "', argument " "1"" of type '" "hid_t""'"); + } + arg1 = (hid_t)(val1); + result = (hid_t)H5Tget_super(arg1); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5Tget_class(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + hid_t arg1 ; + H5T_class_t result; + int val1 ; + int ecode1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:H5Tget_class",&obj0)) SWIG_fail; + ecode1 = SWIG_AsVal_int(obj0, &val1); + if (!SWIG_IsOK(ecode1)) { + SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "H5Tget_class" "', argument " "1"" of type '" "hid_t""'"); + } + arg1 = (hid_t)(val1); + result = (H5T_class_t)H5Tget_class(arg1); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5Tdetect_class(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + hid_t arg1 ; + H5T_class_t arg2 ; + htri_t result; + int val1 ; + int ecode1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:H5Tdetect_class",&obj0,&obj1)) SWIG_fail; + ecode1 = SWIG_AsVal_int(obj0, &val1); + if (!SWIG_IsOK(ecode1)) { + SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "H5Tdetect_class" "', argument " "1"" of type '" "hid_t""'"); + } + arg1 = (hid_t)(val1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "H5Tdetect_class" "', argument " "2"" of type '" "H5T_class_t""'"); + } + arg2 = (H5T_class_t)(val2); + result = (htri_t)H5Tdetect_class(arg1,arg2); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5Tget_size(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + hid_t arg1 ; + size_t result; + int val1 ; + int ecode1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:H5Tget_size",&obj0)) SWIG_fail; + ecode1 = SWIG_AsVal_int(obj0, &val1); + if (!SWIG_IsOK(ecode1)) { + SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "H5Tget_size" "', argument " "1"" of type '" "hid_t""'"); + } + arg1 = (hid_t)(val1); + result = H5Tget_size(arg1); + resultobj = SWIG_From_size_t((size_t)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5Tget_order(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + hid_t arg1 ; + H5T_order_t result; + int val1 ; + int ecode1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:H5Tget_order",&obj0)) SWIG_fail; + ecode1 = SWIG_AsVal_int(obj0, &val1); + if (!SWIG_IsOK(ecode1)) { + SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "H5Tget_order" "', argument " "1"" of type '" "hid_t""'"); + } + arg1 = (hid_t)(val1); + result = (H5T_order_t)H5Tget_order(arg1); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5Tget_precision(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + hid_t arg1 ; + size_t result; + int val1 ; + int ecode1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:H5Tget_precision",&obj0)) SWIG_fail; + ecode1 = SWIG_AsVal_int(obj0, &val1); + if (!SWIG_IsOK(ecode1)) { + SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "H5Tget_precision" "', argument " "1"" of type '" "hid_t""'"); + } + arg1 = (hid_t)(val1); + result = H5Tget_precision(arg1); + resultobj = SWIG_From_size_t((size_t)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5Tget_offset(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + hid_t arg1 ; + int result; + int val1 ; + int ecode1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:H5Tget_offset",&obj0)) SWIG_fail; + ecode1 = SWIG_AsVal_int(obj0, &val1); + if (!SWIG_IsOK(ecode1)) { + SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "H5Tget_offset" "', argument " "1"" of type '" "hid_t""'"); + } + arg1 = (hid_t)(val1); + result = (int)H5Tget_offset(arg1); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5Tget_pad(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + hid_t arg1 ; + H5T_pad_t *arg2 = (H5T_pad_t *) 0 ; + H5T_pad_t *arg3 = (H5T_pad_t *) 0 ; + herr_t result; + int val1 ; + int ecode1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + void *argp3 = 0 ; + int res3 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OOO:H5Tget_pad",&obj0,&obj1,&obj2)) SWIG_fail; + ecode1 = SWIG_AsVal_int(obj0, &val1); + if (!SWIG_IsOK(ecode1)) { + SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "H5Tget_pad" "', argument " "1"" of type '" "hid_t""'"); + } + arg1 = (hid_t)(val1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_H5T_pad_t, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "H5Tget_pad" "', argument " "2"" of type '" "H5T_pad_t *""'"); + } + arg2 = (H5T_pad_t *)(argp2); + res3 = SWIG_ConvertPtr(obj2, &argp3,SWIGTYPE_p_H5T_pad_t, 0 | 0 ); + if (!SWIG_IsOK(res3)) { + SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "H5Tget_pad" "', argument " "3"" of type '" "H5T_pad_t *""'"); + } + arg3 = (H5T_pad_t *)(argp3); + result = (herr_t)H5Tget_pad(arg1,arg2,arg3); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5Tget_sign(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + hid_t arg1 ; + H5T_sign_t result; + int val1 ; + int ecode1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:H5Tget_sign",&obj0)) SWIG_fail; + ecode1 = SWIG_AsVal_int(obj0, &val1); + if (!SWIG_IsOK(ecode1)) { + SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "H5Tget_sign" "', argument " "1"" of type '" "hid_t""'"); + } + arg1 = (hid_t)(val1); + result = (H5T_sign_t)H5Tget_sign(arg1); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5Tget_fields(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + hid_t arg1 ; + size_t *arg2 = (size_t *) 0 ; + size_t *arg3 = (size_t *) 0 ; + size_t *arg4 = (size_t *) 0 ; + size_t *arg5 = (size_t *) 0 ; + size_t *arg6 = (size_t *) 0 ; + herr_t result; + int val1 ; + int ecode1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + void *argp3 = 0 ; + int res3 = 0 ; + void *argp4 = 0 ; + int res4 = 0 ; + void *argp5 = 0 ; + int res5 = 0 ; + void *argp6 = 0 ; + int res6 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + PyObject * obj3 = 0 ; + PyObject * obj4 = 0 ; + PyObject * obj5 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OOOOOO:H5Tget_fields",&obj0,&obj1,&obj2,&obj3,&obj4,&obj5)) SWIG_fail; + ecode1 = SWIG_AsVal_int(obj0, &val1); + if (!SWIG_IsOK(ecode1)) { + SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "H5Tget_fields" "', argument " "1"" of type '" "hid_t""'"); + } + arg1 = (hid_t)(val1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_size_t, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "H5Tget_fields" "', argument " "2"" of type '" "size_t *""'"); + } + arg2 = (size_t *)(argp2); + res3 = SWIG_ConvertPtr(obj2, &argp3,SWIGTYPE_p_size_t, 0 | 0 ); + if (!SWIG_IsOK(res3)) { + SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "H5Tget_fields" "', argument " "3"" of type '" "size_t *""'"); + } + arg3 = (size_t *)(argp3); + res4 = SWIG_ConvertPtr(obj3, &argp4,SWIGTYPE_p_size_t, 0 | 0 ); + if (!SWIG_IsOK(res4)) { + SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "H5Tget_fields" "', argument " "4"" of type '" "size_t *""'"); + } + arg4 = (size_t *)(argp4); + res5 = SWIG_ConvertPtr(obj4, &argp5,SWIGTYPE_p_size_t, 0 | 0 ); + if (!SWIG_IsOK(res5)) { + SWIG_exception_fail(SWIG_ArgError(res5), "in method '" "H5Tget_fields" "', argument " "5"" of type '" "size_t *""'"); + } + arg5 = (size_t *)(argp5); + res6 = SWIG_ConvertPtr(obj5, &argp6,SWIGTYPE_p_size_t, 0 | 0 ); + if (!SWIG_IsOK(res6)) { + SWIG_exception_fail(SWIG_ArgError(res6), "in method '" "H5Tget_fields" "', argument " "6"" of type '" "size_t *""'"); + } + arg6 = (size_t *)(argp6); + result = (herr_t)H5Tget_fields(arg1,arg2,arg3,arg4,arg5,arg6); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5Tget_ebias(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + hid_t arg1 ; + size_t result; + int val1 ; + int ecode1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:H5Tget_ebias",&obj0)) SWIG_fail; + ecode1 = SWIG_AsVal_int(obj0, &val1); + if (!SWIG_IsOK(ecode1)) { + SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "H5Tget_ebias" "', argument " "1"" of type '" "hid_t""'"); + } + arg1 = (hid_t)(val1); + result = H5Tget_ebias(arg1); + resultobj = SWIG_From_size_t((size_t)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5Tget_norm(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + hid_t arg1 ; + H5T_norm_t result; + int val1 ; + int ecode1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:H5Tget_norm",&obj0)) SWIG_fail; + ecode1 = SWIG_AsVal_int(obj0, &val1); + if (!SWIG_IsOK(ecode1)) { + SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "H5Tget_norm" "', argument " "1"" of type '" "hid_t""'"); + } + arg1 = (hid_t)(val1); + result = (H5T_norm_t)H5Tget_norm(arg1); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5Tget_inpad(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + hid_t arg1 ; + H5T_pad_t result; + int val1 ; + int ecode1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:H5Tget_inpad",&obj0)) SWIG_fail; + ecode1 = SWIG_AsVal_int(obj0, &val1); + if (!SWIG_IsOK(ecode1)) { + SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "H5Tget_inpad" "', argument " "1"" of type '" "hid_t""'"); + } + arg1 = (hid_t)(val1); + result = (H5T_pad_t)H5Tget_inpad(arg1); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5Tget_strpad(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + hid_t arg1 ; + H5T_str_t result; + int val1 ; + int ecode1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:H5Tget_strpad",&obj0)) SWIG_fail; + ecode1 = SWIG_AsVal_int(obj0, &val1); + if (!SWIG_IsOK(ecode1)) { + SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "H5Tget_strpad" "', argument " "1"" of type '" "hid_t""'"); + } + arg1 = (hid_t)(val1); + result = (H5T_str_t)H5Tget_strpad(arg1); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5Tget_nmembers(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + hid_t arg1 ; + int result; + int val1 ; + int ecode1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:H5Tget_nmembers",&obj0)) SWIG_fail; + ecode1 = SWIG_AsVal_int(obj0, &val1); + if (!SWIG_IsOK(ecode1)) { + SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "H5Tget_nmembers" "', argument " "1"" of type '" "hid_t""'"); + } + arg1 = (hid_t)(val1); + result = (int)H5Tget_nmembers(arg1); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5Tget_member_name(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + hid_t arg1 ; + unsigned int arg2 ; + char *result = 0 ; + int val1 ; + int ecode1 = 0 ; + unsigned int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:H5Tget_member_name",&obj0,&obj1)) SWIG_fail; + ecode1 = SWIG_AsVal_int(obj0, &val1); + if (!SWIG_IsOK(ecode1)) { + SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "H5Tget_member_name" "', argument " "1"" of type '" "hid_t""'"); + } + arg1 = (hid_t)(val1); + ecode2 = SWIG_AsVal_unsigned_SS_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "H5Tget_member_name" "', argument " "2"" of type '" "unsigned int""'"); + } + arg2 = (unsigned int)(val2); + result = (char *)H5Tget_member_name(arg1,arg2); + resultobj = SWIG_FromCharPtr(result); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5Tget_member_index(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + hid_t arg1 ; + char *arg2 = (char *) 0 ; + int result; + int val1 ; + int ecode1 = 0 ; + int res2 ; + char *buf2 = 0 ; + int alloc2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:H5Tget_member_index",&obj0,&obj1)) SWIG_fail; + ecode1 = SWIG_AsVal_int(obj0, &val1); + if (!SWIG_IsOK(ecode1)) { + SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "H5Tget_member_index" "', argument " "1"" of type '" "hid_t""'"); + } + arg1 = (hid_t)(val1); + res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "H5Tget_member_index" "', argument " "2"" of type '" "char const *""'"); + } + arg2 = buf2; + result = (int)H5Tget_member_index(arg1,(char const *)arg2); + resultobj = SWIG_From_int((int)(result)); + if (alloc2 == SWIG_NEWOBJ) free((char*)buf2); + return resultobj; +fail: + if (alloc2 == SWIG_NEWOBJ) free((char*)buf2); + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5Tget_member_offset(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + hid_t arg1 ; + unsigned int arg2 ; + size_t result; + int val1 ; + int ecode1 = 0 ; + unsigned int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:H5Tget_member_offset",&obj0,&obj1)) SWIG_fail; + ecode1 = SWIG_AsVal_int(obj0, &val1); + if (!SWIG_IsOK(ecode1)) { + SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "H5Tget_member_offset" "', argument " "1"" of type '" "hid_t""'"); + } + arg1 = (hid_t)(val1); + ecode2 = SWIG_AsVal_unsigned_SS_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "H5Tget_member_offset" "', argument " "2"" of type '" "unsigned int""'"); + } + arg2 = (unsigned int)(val2); + result = H5Tget_member_offset(arg1,arg2); + resultobj = SWIG_From_size_t((size_t)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5Tget_member_class(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + hid_t arg1 ; + unsigned int arg2 ; + H5T_class_t result; + int val1 ; + int ecode1 = 0 ; + unsigned int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:H5Tget_member_class",&obj0,&obj1)) SWIG_fail; + ecode1 = SWIG_AsVal_int(obj0, &val1); + if (!SWIG_IsOK(ecode1)) { + SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "H5Tget_member_class" "', argument " "1"" of type '" "hid_t""'"); + } + arg1 = (hid_t)(val1); + ecode2 = SWIG_AsVal_unsigned_SS_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "H5Tget_member_class" "', argument " "2"" of type '" "unsigned int""'"); + } + arg2 = (unsigned int)(val2); + result = (H5T_class_t)H5Tget_member_class(arg1,arg2); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5Tget_member_type(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + hid_t arg1 ; + unsigned int arg2 ; + hid_t result; + int val1 ; + int ecode1 = 0 ; + unsigned int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:H5Tget_member_type",&obj0,&obj1)) SWIG_fail; + ecode1 = SWIG_AsVal_int(obj0, &val1); + if (!SWIG_IsOK(ecode1)) { + SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "H5Tget_member_type" "', argument " "1"" of type '" "hid_t""'"); + } + arg1 = (hid_t)(val1); + ecode2 = SWIG_AsVal_unsigned_SS_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "H5Tget_member_type" "', argument " "2"" of type '" "unsigned int""'"); + } + arg2 = (unsigned int)(val2); + result = (hid_t)H5Tget_member_type(arg1,arg2); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5Tget_member_value(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + hid_t arg1 ; + unsigned int arg2 ; + void *arg3 = (void *) 0 ; + herr_t result; + int val1 ; + int ecode1 = 0 ; + unsigned int val2 ; + int ecode2 = 0 ; + int res3 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OOO:H5Tget_member_value",&obj0,&obj1,&obj2)) SWIG_fail; + ecode1 = SWIG_AsVal_int(obj0, &val1); + if (!SWIG_IsOK(ecode1)) { + SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "H5Tget_member_value" "', argument " "1"" of type '" "hid_t""'"); + } + arg1 = (hid_t)(val1); + ecode2 = SWIG_AsVal_unsigned_SS_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "H5Tget_member_value" "', argument " "2"" of type '" "unsigned int""'"); + } + arg2 = (unsigned int)(val2); + res3 = SWIG_ConvertPtr(obj2,SWIG_as_voidptrptr(&arg3), 0, 0); + if (!SWIG_IsOK(res3)) { + SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "H5Tget_member_value" "', argument " "3"" of type '" "void *""'"); + } + result = (herr_t)H5Tget_member_value(arg1,arg2,arg3); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5Tget_cset(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + hid_t arg1 ; + H5T_cset_t result; + int val1 ; + int ecode1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:H5Tget_cset",&obj0)) SWIG_fail; + ecode1 = SWIG_AsVal_int(obj0, &val1); + if (!SWIG_IsOK(ecode1)) { + SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "H5Tget_cset" "', argument " "1"" of type '" "hid_t""'"); + } + arg1 = (hid_t)(val1); + result = (H5T_cset_t)H5Tget_cset(arg1); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5Tis_variable_str(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + hid_t arg1 ; + htri_t result; + int val1 ; + int ecode1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:H5Tis_variable_str",&obj0)) SWIG_fail; + ecode1 = SWIG_AsVal_int(obj0, &val1); + if (!SWIG_IsOK(ecode1)) { + SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "H5Tis_variable_str" "', argument " "1"" of type '" "hid_t""'"); + } + arg1 = (hid_t)(val1); + result = (htri_t)H5Tis_variable_str(arg1); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5Tget_native_type(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + hid_t arg1 ; + H5T_direction_t arg2 ; + hid_t result; + int val1 ; + int ecode1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:H5Tget_native_type",&obj0,&obj1)) SWIG_fail; + ecode1 = SWIG_AsVal_int(obj0, &val1); + if (!SWIG_IsOK(ecode1)) { + SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "H5Tget_native_type" "', argument " "1"" of type '" "hid_t""'"); + } + arg1 = (hid_t)(val1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "H5Tget_native_type" "', argument " "2"" of type '" "H5T_direction_t""'"); + } + arg2 = (H5T_direction_t)(val2); + result = (hid_t)H5Tget_native_type(arg1,arg2); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5Tset_size(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + hid_t arg1 ; + size_t arg2 ; + herr_t result; + int val1 ; + int ecode1 = 0 ; + size_t val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:H5Tset_size",&obj0,&obj1)) SWIG_fail; + ecode1 = SWIG_AsVal_int(obj0, &val1); + if (!SWIG_IsOK(ecode1)) { + SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "H5Tset_size" "', argument " "1"" of type '" "hid_t""'"); + } + arg1 = (hid_t)(val1); + ecode2 = SWIG_AsVal_size_t(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "H5Tset_size" "', argument " "2"" of type '" "size_t""'"); + } + arg2 = (size_t)(val2); + result = (herr_t)H5Tset_size(arg1,arg2); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5Tset_order(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + hid_t arg1 ; + H5T_order_t arg2 ; + herr_t result; + int val1 ; + int ecode1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:H5Tset_order",&obj0,&obj1)) SWIG_fail; + ecode1 = SWIG_AsVal_int(obj0, &val1); + if (!SWIG_IsOK(ecode1)) { + SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "H5Tset_order" "', argument " "1"" of type '" "hid_t""'"); + } + arg1 = (hid_t)(val1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "H5Tset_order" "', argument " "2"" of type '" "H5T_order_t""'"); + } + arg2 = (H5T_order_t)(val2); + result = (herr_t)H5Tset_order(arg1,arg2); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5Tset_precision(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + hid_t arg1 ; + size_t arg2 ; + herr_t result; + int val1 ; + int ecode1 = 0 ; + size_t val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:H5Tset_precision",&obj0,&obj1)) SWIG_fail; + ecode1 = SWIG_AsVal_int(obj0, &val1); + if (!SWIG_IsOK(ecode1)) { + SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "H5Tset_precision" "', argument " "1"" of type '" "hid_t""'"); + } + arg1 = (hid_t)(val1); + ecode2 = SWIG_AsVal_size_t(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "H5Tset_precision" "', argument " "2"" of type '" "size_t""'"); + } + arg2 = (size_t)(val2); + result = (herr_t)H5Tset_precision(arg1,arg2); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5Tset_offset(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + hid_t arg1 ; + size_t arg2 ; + herr_t result; + int val1 ; + int ecode1 = 0 ; + size_t val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:H5Tset_offset",&obj0,&obj1)) SWIG_fail; + ecode1 = SWIG_AsVal_int(obj0, &val1); + if (!SWIG_IsOK(ecode1)) { + SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "H5Tset_offset" "', argument " "1"" of type '" "hid_t""'"); + } + arg1 = (hid_t)(val1); + ecode2 = SWIG_AsVal_size_t(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "H5Tset_offset" "', argument " "2"" of type '" "size_t""'"); + } + arg2 = (size_t)(val2); + result = (herr_t)H5Tset_offset(arg1,arg2); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5Tset_pad(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + hid_t arg1 ; + H5T_pad_t arg2 ; + H5T_pad_t arg3 ; + herr_t result; + int val1 ; + int ecode1 = 0 ; + int val2 ; + int ecode2 = 0 ; + int val3 ; + int ecode3 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OOO:H5Tset_pad",&obj0,&obj1,&obj2)) SWIG_fail; + ecode1 = SWIG_AsVal_int(obj0, &val1); + if (!SWIG_IsOK(ecode1)) { + SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "H5Tset_pad" "', argument " "1"" of type '" "hid_t""'"); + } + arg1 = (hid_t)(val1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "H5Tset_pad" "', argument " "2"" of type '" "H5T_pad_t""'"); + } + arg2 = (H5T_pad_t)(val2); + ecode3 = SWIG_AsVal_int(obj2, &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "H5Tset_pad" "', argument " "3"" of type '" "H5T_pad_t""'"); + } + arg3 = (H5T_pad_t)(val3); + result = (herr_t)H5Tset_pad(arg1,arg2,arg3); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5Tset_sign(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + hid_t arg1 ; + H5T_sign_t arg2 ; + herr_t result; + int val1 ; + int ecode1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:H5Tset_sign",&obj0,&obj1)) SWIG_fail; + ecode1 = SWIG_AsVal_int(obj0, &val1); + if (!SWIG_IsOK(ecode1)) { + SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "H5Tset_sign" "', argument " "1"" of type '" "hid_t""'"); + } + arg1 = (hid_t)(val1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "H5Tset_sign" "', argument " "2"" of type '" "H5T_sign_t""'"); + } + arg2 = (H5T_sign_t)(val2); + result = (herr_t)H5Tset_sign(arg1,arg2); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5Tset_fields(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + hid_t arg1 ; + size_t arg2 ; + size_t arg3 ; + size_t arg4 ; + size_t arg5 ; + size_t arg6 ; + herr_t result; + int val1 ; + int ecode1 = 0 ; + size_t val2 ; + int ecode2 = 0 ; + size_t val3 ; + int ecode3 = 0 ; + size_t val4 ; + int ecode4 = 0 ; + size_t val5 ; + int ecode5 = 0 ; + size_t val6 ; + int ecode6 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + PyObject * obj3 = 0 ; + PyObject * obj4 = 0 ; + PyObject * obj5 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OOOOOO:H5Tset_fields",&obj0,&obj1,&obj2,&obj3,&obj4,&obj5)) SWIG_fail; + ecode1 = SWIG_AsVal_int(obj0, &val1); + if (!SWIG_IsOK(ecode1)) { + SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "H5Tset_fields" "', argument " "1"" of type '" "hid_t""'"); + } + arg1 = (hid_t)(val1); + ecode2 = SWIG_AsVal_size_t(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "H5Tset_fields" "', argument " "2"" of type '" "size_t""'"); + } + arg2 = (size_t)(val2); + ecode3 = SWIG_AsVal_size_t(obj2, &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "H5Tset_fields" "', argument " "3"" of type '" "size_t""'"); + } + arg3 = (size_t)(val3); + ecode4 = SWIG_AsVal_size_t(obj3, &val4); + if (!SWIG_IsOK(ecode4)) { + SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "H5Tset_fields" "', argument " "4"" of type '" "size_t""'"); + } + arg4 = (size_t)(val4); + ecode5 = SWIG_AsVal_size_t(obj4, &val5); + if (!SWIG_IsOK(ecode5)) { + SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "H5Tset_fields" "', argument " "5"" of type '" "size_t""'"); + } + arg5 = (size_t)(val5); + ecode6 = SWIG_AsVal_size_t(obj5, &val6); + if (!SWIG_IsOK(ecode6)) { + SWIG_exception_fail(SWIG_ArgError(ecode6), "in method '" "H5Tset_fields" "', argument " "6"" of type '" "size_t""'"); + } + arg6 = (size_t)(val6); + result = (herr_t)H5Tset_fields(arg1,arg2,arg3,arg4,arg5,arg6); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5Tset_ebias(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + hid_t arg1 ; + size_t arg2 ; + herr_t result; + int val1 ; + int ecode1 = 0 ; + size_t val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:H5Tset_ebias",&obj0,&obj1)) SWIG_fail; + ecode1 = SWIG_AsVal_int(obj0, &val1); + if (!SWIG_IsOK(ecode1)) { + SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "H5Tset_ebias" "', argument " "1"" of type '" "hid_t""'"); + } + arg1 = (hid_t)(val1); + ecode2 = SWIG_AsVal_size_t(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "H5Tset_ebias" "', argument " "2"" of type '" "size_t""'"); + } + arg2 = (size_t)(val2); + result = (herr_t)H5Tset_ebias(arg1,arg2); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5Tset_norm(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + hid_t arg1 ; + H5T_norm_t arg2 ; + herr_t result; + int val1 ; + int ecode1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:H5Tset_norm",&obj0,&obj1)) SWIG_fail; + ecode1 = SWIG_AsVal_int(obj0, &val1); + if (!SWIG_IsOK(ecode1)) { + SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "H5Tset_norm" "', argument " "1"" of type '" "hid_t""'"); + } + arg1 = (hid_t)(val1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "H5Tset_norm" "', argument " "2"" of type '" "H5T_norm_t""'"); + } + arg2 = (H5T_norm_t)(val2); + result = (herr_t)H5Tset_norm(arg1,arg2); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5Tset_inpad(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + hid_t arg1 ; + H5T_pad_t arg2 ; + herr_t result; + int val1 ; + int ecode1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:H5Tset_inpad",&obj0,&obj1)) SWIG_fail; + ecode1 = SWIG_AsVal_int(obj0, &val1); + if (!SWIG_IsOK(ecode1)) { + SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "H5Tset_inpad" "', argument " "1"" of type '" "hid_t""'"); + } + arg1 = (hid_t)(val1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "H5Tset_inpad" "', argument " "2"" of type '" "H5T_pad_t""'"); + } + arg2 = (H5T_pad_t)(val2); + result = (herr_t)H5Tset_inpad(arg1,arg2); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5Tset_cset(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + hid_t arg1 ; + H5T_cset_t arg2 ; + herr_t result; + int val1 ; + int ecode1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:H5Tset_cset",&obj0,&obj1)) SWIG_fail; + ecode1 = SWIG_AsVal_int(obj0, &val1); + if (!SWIG_IsOK(ecode1)) { + SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "H5Tset_cset" "', argument " "1"" of type '" "hid_t""'"); + } + arg1 = (hid_t)(val1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "H5Tset_cset" "', argument " "2"" of type '" "H5T_cset_t""'"); + } + arg2 = (H5T_cset_t)(val2); + result = (herr_t)H5Tset_cset(arg1,arg2); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5Tset_strpad(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + hid_t arg1 ; + H5T_str_t arg2 ; + herr_t result; + int val1 ; + int ecode1 = 0 ; + int val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:H5Tset_strpad",&obj0,&obj1)) SWIG_fail; + ecode1 = SWIG_AsVal_int(obj0, &val1); + if (!SWIG_IsOK(ecode1)) { + SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "H5Tset_strpad" "', argument " "1"" of type '" "hid_t""'"); + } + arg1 = (hid_t)(val1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "H5Tset_strpad" "', argument " "2"" of type '" "H5T_str_t""'"); + } + arg2 = (H5T_str_t)(val2); + result = (herr_t)H5Tset_strpad(arg1,arg2); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5Tregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + H5T_pers_t arg1 ; + char *arg2 = (char *) 0 ; + hid_t arg3 ; + hid_t arg4 ; + H5T_conv_t arg5 = (H5T_conv_t) 0 ; + herr_t result; + int val1 ; + int ecode1 = 0 ; + int res2 ; + char *buf2 = 0 ; + int alloc2 = 0 ; + int val3 ; + int ecode3 = 0 ; + int val4 ; + int ecode4 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + PyObject * obj3 = 0 ; + PyObject * obj4 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OOOOO:H5Tregister",&obj0,&obj1,&obj2,&obj3,&obj4)) SWIG_fail; + ecode1 = SWIG_AsVal_int(obj0, &val1); + if (!SWIG_IsOK(ecode1)) { + SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "H5Tregister" "', argument " "1"" of type '" "H5T_pers_t""'"); + } + arg1 = (H5T_pers_t)(val1); + res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "H5Tregister" "', argument " "2"" of type '" "char const *""'"); + } + arg2 = buf2; + ecode3 = SWIG_AsVal_int(obj2, &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "H5Tregister" "', argument " "3"" of type '" "hid_t""'"); + } + arg3 = (hid_t)(val3); + ecode4 = SWIG_AsVal_int(obj3, &val4); + if (!SWIG_IsOK(ecode4)) { + SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "H5Tregister" "', argument " "4"" of type '" "hid_t""'"); + } + arg4 = (hid_t)(val4); + { + int res = SWIG_ConvertFunctionPtr(obj4, (void**)(&arg5), SWIGTYPE_p_f_int_int_p_struct_H5T_cdata_t_size_t_size_t_size_t_p_void_p_void_int__int); + if (!SWIG_IsOK(res)) { + SWIG_exception_fail(SWIG_ArgError(res), "in method '" "H5Tregister" "', argument " "5"" of type '" "H5T_conv_t""'"); + } + } + result = (herr_t)H5Tregister(arg1,(char const *)arg2,arg3,arg4,arg5); + resultobj = SWIG_From_int((int)(result)); + if (alloc2 == SWIG_NEWOBJ) free((char*)buf2); + return resultobj; +fail: + if (alloc2 == SWIG_NEWOBJ) free((char*)buf2); + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5Tunregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + H5T_pers_t arg1 ; + char *arg2 = (char *) 0 ; + hid_t arg3 ; + hid_t arg4 ; + H5T_conv_t arg5 = (H5T_conv_t) 0 ; + herr_t result; + int val1 ; + int ecode1 = 0 ; + int res2 ; + char *buf2 = 0 ; + int alloc2 = 0 ; + int val3 ; + int ecode3 = 0 ; + int val4 ; + int ecode4 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + PyObject * obj3 = 0 ; + PyObject * obj4 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OOOOO:H5Tunregister",&obj0,&obj1,&obj2,&obj3,&obj4)) SWIG_fail; + ecode1 = SWIG_AsVal_int(obj0, &val1); + if (!SWIG_IsOK(ecode1)) { + SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "H5Tunregister" "', argument " "1"" of type '" "H5T_pers_t""'"); + } + arg1 = (H5T_pers_t)(val1); + res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "H5Tunregister" "', argument " "2"" of type '" "char const *""'"); + } + arg2 = buf2; + ecode3 = SWIG_AsVal_int(obj2, &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "H5Tunregister" "', argument " "3"" of type '" "hid_t""'"); + } + arg3 = (hid_t)(val3); + ecode4 = SWIG_AsVal_int(obj3, &val4); + if (!SWIG_IsOK(ecode4)) { + SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "H5Tunregister" "', argument " "4"" of type '" "hid_t""'"); + } + arg4 = (hid_t)(val4); + { + int res = SWIG_ConvertFunctionPtr(obj4, (void**)(&arg5), SWIGTYPE_p_f_int_int_p_struct_H5T_cdata_t_size_t_size_t_size_t_p_void_p_void_int__int); + if (!SWIG_IsOK(res)) { + SWIG_exception_fail(SWIG_ArgError(res), "in method '" "H5Tunregister" "', argument " "5"" of type '" "H5T_conv_t""'"); + } + } + result = (herr_t)H5Tunregister(arg1,(char const *)arg2,arg3,arg4,arg5); + resultobj = SWIG_From_int((int)(result)); + if (alloc2 == SWIG_NEWOBJ) free((char*)buf2); + return resultobj; +fail: + if (alloc2 == SWIG_NEWOBJ) free((char*)buf2); + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5Tfind(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + hid_t arg1 ; + hid_t arg2 ; + H5T_cdata_t **arg3 = (H5T_cdata_t **) 0 ; + H5T_conv_t result; + int val1 ; + int ecode1 = 0 ; + int val2 ; + int ecode2 = 0 ; + void *argp3 = 0 ; + int res3 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OOO:H5Tfind",&obj0,&obj1,&obj2)) SWIG_fail; + ecode1 = SWIG_AsVal_int(obj0, &val1); + if (!SWIG_IsOK(ecode1)) { + SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "H5Tfind" "', argument " "1"" of type '" "hid_t""'"); + } + arg1 = (hid_t)(val1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "H5Tfind" "', argument " "2"" of type '" "hid_t""'"); + } + arg2 = (hid_t)(val2); + res3 = SWIG_ConvertPtr(obj2, &argp3,SWIGTYPE_p_p_H5T_cdata_t, 0 | 0 ); + if (!SWIG_IsOK(res3)) { + SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "H5Tfind" "', argument " "3"" of type '" "H5T_cdata_t **""'"); + } + arg3 = (H5T_cdata_t **)(argp3); + result = (H5T_conv_t)H5Tfind(arg1,arg2,arg3); + resultobj = SWIG_NewFunctionPtrObj((void *)(result), SWIGTYPE_p_f_int_int_p_struct_H5T_cdata_t_size_t_size_t_size_t_p_void_p_void_int__int); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5Tconvert(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + hid_t arg1 ; + hid_t arg2 ; + size_t arg3 ; + void *arg4 = (void *) 0 ; + void *arg5 = (void *) 0 ; + hid_t arg6 ; + herr_t result; + int val1 ; + int ecode1 = 0 ; + int val2 ; + int ecode2 = 0 ; + size_t val3 ; + int ecode3 = 0 ; + int res4 ; + int res5 ; + int val6 ; + int ecode6 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + PyObject * obj3 = 0 ; + PyObject * obj4 = 0 ; + PyObject * obj5 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OOOOOO:H5Tconvert",&obj0,&obj1,&obj2,&obj3,&obj4,&obj5)) SWIG_fail; + ecode1 = SWIG_AsVal_int(obj0, &val1); + if (!SWIG_IsOK(ecode1)) { + SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "H5Tconvert" "', argument " "1"" of type '" "hid_t""'"); + } + arg1 = (hid_t)(val1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "H5Tconvert" "', argument " "2"" of type '" "hid_t""'"); + } + arg2 = (hid_t)(val2); + ecode3 = SWIG_AsVal_size_t(obj2, &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "H5Tconvert" "', argument " "3"" of type '" "size_t""'"); + } + arg3 = (size_t)(val3); + res4 = SWIG_ConvertPtr(obj3,SWIG_as_voidptrptr(&arg4), 0, 0); + if (!SWIG_IsOK(res4)) { + SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "H5Tconvert" "', argument " "4"" of type '" "void *""'"); + } + res5 = SWIG_ConvertPtr(obj4,SWIG_as_voidptrptr(&arg5), 0, 0); + if (!SWIG_IsOK(res5)) { + SWIG_exception_fail(SWIG_ArgError(res5), "in method '" "H5Tconvert" "', argument " "5"" of type '" "void *""'"); + } + ecode6 = SWIG_AsVal_int(obj5, &val6); + if (!SWIG_IsOK(ecode6)) { + SWIG_exception_fail(SWIG_ArgError(ecode6), "in method '" "H5Tconvert" "', argument " "6"" of type '" "hid_t""'"); + } + arg6 = (hid_t)(val6); + result = (herr_t)H5Tconvert(arg1,arg2,arg3,arg4,arg5,arg6); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5Tget_overflow(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + H5T_overflow_t result; + + if (!PyArg_ParseTuple(args,(char *)":H5Tget_overflow")) SWIG_fail; + result = (H5T_overflow_t)H5Tget_overflow(); + resultobj = SWIG_NewFunctionPtrObj((void *)(result), SWIGTYPE_p_f_int_int_p_void_p_void__int); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5Tset_overflow(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + H5T_overflow_t arg1 = (H5T_overflow_t) 0 ; + herr_t result; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:H5Tset_overflow",&obj0)) SWIG_fail; + { + int res = SWIG_ConvertFunctionPtr(obj0, (void**)(&arg1), SWIGTYPE_p_f_int_int_p_void_p_void__int); + if (!SWIG_IsOK(res)) { + SWIG_exception_fail(SWIG_ArgError(res), "in method '" "H5Tset_overflow" "', argument " "1"" of type '" "H5T_overflow_t""'"); + } + } + result = (herr_t)H5Tset_overflow(arg1); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5open(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + herr_t result; + + if (!PyArg_ParseTuple(args,(char *)":H5open")) SWIG_fail; + result = (herr_t)H5open(); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5close(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + herr_t result; + + if (!PyArg_ParseTuple(args,(char *)":H5close")) SWIG_fail; + result = (herr_t)H5close(); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5dont_atexit(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + herr_t result; + + if (!PyArg_ParseTuple(args,(char *)":H5dont_atexit")) SWIG_fail; + result = (herr_t)H5dont_atexit(); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5garbage_collect(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + herr_t result; + + if (!PyArg_ParseTuple(args,(char *)":H5garbage_collect")) SWIG_fail; + result = (herr_t)H5garbage_collect(); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5set_free_list_limits(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + int arg1 ; + int arg2 ; + int arg3 ; + int arg4 ; + int arg5 ; + int arg6 ; + herr_t result; + int val1 ; + int ecode1 = 0 ; + int val2 ; + int ecode2 = 0 ; + int val3 ; + int ecode3 = 0 ; + int val4 ; + int ecode4 = 0 ; + int val5 ; + int ecode5 = 0 ; + int val6 ; + int ecode6 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + PyObject * obj3 = 0 ; + PyObject * obj4 = 0 ; + PyObject * obj5 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OOOOOO:H5set_free_list_limits",&obj0,&obj1,&obj2,&obj3,&obj4,&obj5)) SWIG_fail; + ecode1 = SWIG_AsVal_int(obj0, &val1); + if (!SWIG_IsOK(ecode1)) { + SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "H5set_free_list_limits" "', argument " "1"" of type '" "int""'"); + } + arg1 = (int)(val1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "H5set_free_list_limits" "', argument " "2"" of type '" "int""'"); + } + arg2 = (int)(val2); + ecode3 = SWIG_AsVal_int(obj2, &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "H5set_free_list_limits" "', argument " "3"" of type '" "int""'"); + } + arg3 = (int)(val3); + ecode4 = SWIG_AsVal_int(obj3, &val4); + if (!SWIG_IsOK(ecode4)) { + SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "H5set_free_list_limits" "', argument " "4"" of type '" "int""'"); + } + arg4 = (int)(val4); + ecode5 = SWIG_AsVal_int(obj4, &val5); + if (!SWIG_IsOK(ecode5)) { + SWIG_exception_fail(SWIG_ArgError(ecode5), "in method '" "H5set_free_list_limits" "', argument " "5"" of type '" "int""'"); + } + arg5 = (int)(val5); + ecode6 = SWIG_AsVal_int(obj5, &val6); + if (!SWIG_IsOK(ecode6)) { + SWIG_exception_fail(SWIG_ArgError(ecode6), "in method '" "H5set_free_list_limits" "', argument " "6"" of type '" "int""'"); + } + arg6 = (int)(val6); + result = (herr_t)H5set_free_list_limits(arg1,arg2,arg3,arg4,arg5,arg6); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5get_libversion(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + unsigned int *arg1 = (unsigned int *) 0 ; + unsigned int *arg2 = (unsigned int *) 0 ; + unsigned int *arg3 = (unsigned int *) 0 ; + herr_t result; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + void *argp3 = 0 ; + int res3 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OOO:H5get_libversion",&obj0,&obj1,&obj2)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_unsigned_int, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "H5get_libversion" "', argument " "1"" of type '" "unsigned int *""'"); + } + arg1 = (unsigned int *)(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_unsigned_int, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "H5get_libversion" "', argument " "2"" of type '" "unsigned int *""'"); + } + arg2 = (unsigned int *)(argp2); + res3 = SWIG_ConvertPtr(obj2, &argp3,SWIGTYPE_p_unsigned_int, 0 | 0 ); + if (!SWIG_IsOK(res3)) { + SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "H5get_libversion" "', argument " "3"" of type '" "unsigned int *""'"); + } + arg3 = (unsigned int *)(argp3); + result = (herr_t)H5get_libversion(arg1,arg2,arg3); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5check_version(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + unsigned int arg1 ; + unsigned int arg2 ; + unsigned int arg3 ; + herr_t result; + unsigned int val1 ; + int ecode1 = 0 ; + unsigned int val2 ; + int ecode2 = 0 ; + unsigned int val3 ; + int ecode3 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OOO:H5check_version",&obj0,&obj1,&obj2)) SWIG_fail; + ecode1 = SWIG_AsVal_unsigned_SS_int(obj0, &val1); + if (!SWIG_IsOK(ecode1)) { + SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "H5check_version" "', argument " "1"" of type '" "unsigned int""'"); + } + arg1 = (unsigned int)(val1); + ecode2 = SWIG_AsVal_unsigned_SS_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "H5check_version" "', argument " "2"" of type '" "unsigned int""'"); + } + arg2 = (unsigned int)(val2); + ecode3 = SWIG_AsVal_unsigned_SS_int(obj2, &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "H5check_version" "', argument " "3"" of type '" "unsigned int""'"); + } + arg3 = (unsigned int)(val3); + result = (herr_t)H5check_version(arg1,arg2,arg3); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5Iget_type(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + hid_t arg1 ; + H5I_type_t result; + int val1 ; + int ecode1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:H5Iget_type",&obj0)) SWIG_fail; + ecode1 = SWIG_AsVal_int(obj0, &val1); + if (!SWIG_IsOK(ecode1)) { + SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "H5Iget_type" "', argument " "1"" of type '" "hid_t""'"); + } + arg1 = (hid_t)(val1); + result = (H5I_type_t)H5Iget_type(arg1); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5Iget_file_id(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + hid_t arg1 ; + hid_t result; + int val1 ; + int ecode1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:H5Iget_file_id",&obj0)) SWIG_fail; + ecode1 = SWIG_AsVal_int(obj0, &val1); + if (!SWIG_IsOK(ecode1)) { + SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "H5Iget_file_id" "', argument " "1"" of type '" "hid_t""'"); + } + arg1 = (hid_t)(val1); + result = (hid_t)H5Iget_file_id(arg1); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5Iget_name(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + hid_t arg1 ; + char *arg2 = (char *) 0 ; + size_t arg3 ; + ssize_t result; + int val1 ; + int ecode1 = 0 ; + int res2 ; + char *buf2 = 0 ; + int alloc2 = 0 ; + size_t val3 ; + int ecode3 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OOO:H5Iget_name",&obj0,&obj1,&obj2)) SWIG_fail; + ecode1 = SWIG_AsVal_int(obj0, &val1); + if (!SWIG_IsOK(ecode1)) { + SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "H5Iget_name" "', argument " "1"" of type '" "hid_t""'"); + } + arg1 = (hid_t)(val1); + res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "H5Iget_name" "', argument " "2"" of type '" "char *""'"); + } + arg2 = buf2; + ecode3 = SWIG_AsVal_size_t(obj2, &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "H5Iget_name" "', argument " "3"" of type '" "size_t""'"); + } + arg3 = (size_t)(val3); + result = H5Iget_name(arg1,arg2,arg3); + resultobj = SWIG_NewPointerObj((ssize_t *)memcpy((ssize_t *)malloc(sizeof(ssize_t)),&result,sizeof(ssize_t)), SWIGTYPE_p_ssize_t, SWIG_POINTER_OWN | 0 ); + if (alloc2 == SWIG_NEWOBJ) free((char*)buf2); + return resultobj; +fail: + if (alloc2 == SWIG_NEWOBJ) free((char*)buf2); + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5Iinc_ref(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + hid_t arg1 ; + int result; + int val1 ; + int ecode1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:H5Iinc_ref",&obj0)) SWIG_fail; + ecode1 = SWIG_AsVal_int(obj0, &val1); + if (!SWIG_IsOK(ecode1)) { + SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "H5Iinc_ref" "', argument " "1"" of type '" "hid_t""'"); + } + arg1 = (hid_t)(val1); + result = (int)H5Iinc_ref(arg1); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5Idec_ref(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + hid_t arg1 ; + int result; + int val1 ; + int ecode1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:H5Idec_ref",&obj0)) SWIG_fail; + ecode1 = SWIG_AsVal_int(obj0, &val1); + if (!SWIG_IsOK(ecode1)) { + SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "H5Idec_ref" "', argument " "1"" of type '" "hid_t""'"); + } + arg1 = (hid_t)(val1); + result = (int)H5Idec_ref(arg1); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5Iget_ref(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + hid_t arg1 ; + int result; + int val1 ; + int ecode1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:H5Iget_ref",&obj0)) SWIG_fail; + ecode1 = SWIG_AsVal_int(obj0, &val1); + if (!SWIG_IsOK(ecode1)) { + SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "H5Iget_ref" "', argument " "1"" of type '" "hid_t""'"); + } + arg1 = (hid_t)(val1); + result = (int)H5Iget_ref(arg1); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5PartGetDatasetName__SWIG_1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + H5PartFile *arg1 = (H5PartFile *) 0 ; + int arg2 ; + char *arg3 = (char *) 0 ; + size_t arg4 ; + int result; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + char temp3[100+1] ; + size_t val4 ; + int ecode4 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + + arg3 = (char *) temp3; + if (!PyArg_ParseTuple(args,(char *)"OOO:H5PartGetDatasetName",&obj0,&obj1,&obj2)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_H5PartFile, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "H5PartGetDatasetName" "', argument " "1"" of type '" "H5PartFile *""'"); + } + arg1 = (H5PartFile *)(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "H5PartGetDatasetName" "', argument " "2"" of type '" "int""'"); + } + arg2 = (int)(val2); + ecode4 = SWIG_AsVal_size_t(obj2, &val4); + if (!SWIG_IsOK(ecode4)) { + SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "H5PartGetDatasetName" "', argument " "4"" of type '" "size_t""'"); + } + arg4 = (size_t)(val4); + result = (int)H5PartGetDatasetName(arg1,arg2,arg3,arg4); + resultobj = SWIG_From_int((int)(result)); + arg3[100] = 0; + resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_FromCharPtr(arg3)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5PartGetDatasetName(PyObject *self, PyObject *args) { + int argc; + PyObject *argv[5]; + int ii; + + if (!PyTuple_Check(args)) SWIG_fail; + argc = PyObject_Length(args); + for (ii = 0; (ii < argc) && (ii < 4); ii++) { + argv[ii] = PyTuple_GET_ITEM(args,ii); + } + if (argc == 3) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_H5PartFile, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + { + int res = SWIG_AsVal_size_t(argv[2], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_H5PartGetDatasetName__SWIG_1(self, args); + } + } + } + } + if (argc == 4) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_H5PartFile, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + int res = SWIG_AsCharPtrAndSize(argv[2], 0, NULL, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_int(argv[3], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_H5PartGetDatasetName__SWIG_0(self, args); + } + } + } + } + } + +fail: + SWIG_SetErrorMsg(PyExc_NotImplementedError,"No matching function for overloaded 'H5PartGetDatasetName'"); + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5PartGetStepAttribInfo__SWIG_1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + H5PartFile *arg1 = (H5PartFile *) 0 ; + int arg2 ; + char *arg3 = (char *) 0 ; + size_t arg4 ; + int *arg5 = (int *) 0 ; + int *arg6 = (int *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + char temp3[100+1] ; + size_t val4 ; + int ecode4 = 0 ; + int temp5 ; + int res5 = SWIG_TMPOBJ ; + int temp6 ; + int res6 = SWIG_TMPOBJ ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + + arg3 = (char *) temp3; + arg5 = &temp5; + arg6 = &temp6; + if (!PyArg_ParseTuple(args,(char *)"OOO:H5PartGetStepAttribInfo",&obj0,&obj1,&obj2)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_H5PartFile, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "H5PartGetStepAttribInfo" "', argument " "1"" of type '" "H5PartFile *""'"); + } + arg1 = (H5PartFile *)(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "H5PartGetStepAttribInfo" "', argument " "2"" of type '" "int""'"); + } + arg2 = (int)(val2); + ecode4 = SWIG_AsVal_size_t(obj2, &val4); + if (!SWIG_IsOK(ecode4)) { + SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "H5PartGetStepAttribInfo" "', argument " "4"" of type '" "size_t""'"); + } + arg4 = (size_t)(val4); + H5PartGetStepAttribInfo(arg1,arg2,arg3,arg4,arg5,arg6); + resultobj = SWIG_Py_Void(); + arg3[100] = 0; + resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_FromCharPtr(arg3)); + if (SWIG_IsTmpObj(res5)) { + resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_From_int((*arg5))); + } else { + int new_flags = SWIG_IsNewObj(res5) ? (SWIG_POINTER_OWN | 0 ) : 0 ; + resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_NewPointerObj((void*)(arg5), SWIGTYPE_p_int, new_flags)); + } + if (SWIG_IsTmpObj(res6)) { + resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_From_int((*arg6))); + } else { + int new_flags = SWIG_IsNewObj(res6) ? (SWIG_POINTER_OWN | 0 ) : 0 ; + resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_NewPointerObj((void*)(arg6), SWIGTYPE_p_int, new_flags)); + } + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5PartGetStepAttribInfo(PyObject *self, PyObject *args) { + int argc; + PyObject *argv[7]; + int ii; + + if (!PyTuple_Check(args)) SWIG_fail; + argc = PyObject_Length(args); + for (ii = 0; (ii < argc) && (ii < 6); ii++) { + argv[ii] = PyTuple_GET_ITEM(args,ii); + } + if (argc == 3) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_H5PartFile, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + { + int res = SWIG_AsVal_size_t(argv[2], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_H5PartGetStepAttribInfo__SWIG_1(self, args); + } + } + } + } + if (argc == 6) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_H5PartFile, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + int res = SWIG_AsCharPtrAndSize(argv[2], 0, NULL, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_size_t(argv[3], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[4], &vptr, SWIGTYPE_p_int, 0); + _v = SWIG_CheckState(res); + if (_v) { + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[5], &vptr, SWIGTYPE_p_int, 0); + _v = SWIG_CheckState(res); + if (_v) { + return _wrap_H5PartGetStepAttribInfo__SWIG_0(self, args); + } + } + } + } + } + } + } + +fail: + SWIG_SetErrorMsg(PyExc_NotImplementedError,"No matching function for overloaded 'H5PartGetStepAttribInfo'"); + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5PartGetFileAttribInfo__SWIG_1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + H5PartFile *arg1 = (H5PartFile *) 0 ; + int arg2 ; + char *arg3 = (char *) 0 ; + size_t arg4 ; + int *arg5 = (int *) 0 ; + int *arg6 = (int *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + char temp3[100+1] ; + size_t val4 ; + int ecode4 = 0 ; + int temp5 ; + int res5 = SWIG_TMPOBJ ; + int temp6 ; + int res6 = SWIG_TMPOBJ ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + + arg3 = (char *) temp3; + arg5 = &temp5; + arg6 = &temp6; + if (!PyArg_ParseTuple(args,(char *)"OOO:H5PartGetFileAttribInfo",&obj0,&obj1,&obj2)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_H5PartFile, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "H5PartGetFileAttribInfo" "', argument " "1"" of type '" "H5PartFile *""'"); + } + arg1 = (H5PartFile *)(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "H5PartGetFileAttribInfo" "', argument " "2"" of type '" "int""'"); + } + arg2 = (int)(val2); + ecode4 = SWIG_AsVal_size_t(obj2, &val4); + if (!SWIG_IsOK(ecode4)) { + SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "H5PartGetFileAttribInfo" "', argument " "4"" of type '" "size_t""'"); + } + arg4 = (size_t)(val4); + H5PartGetFileAttribInfo(arg1,arg2,arg3,arg4,arg5,arg6); + resultobj = SWIG_Py_Void(); + arg3[100] = 0; + resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_FromCharPtr(arg3)); + if (SWIG_IsTmpObj(res5)) { + resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_From_int((*arg5))); + } else { + int new_flags = SWIG_IsNewObj(res5) ? (SWIG_POINTER_OWN | 0 ) : 0 ; + resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_NewPointerObj((void*)(arg5), SWIGTYPE_p_int, new_flags)); + } + if (SWIG_IsTmpObj(res6)) { + resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_From_int((*arg6))); + } else { + int new_flags = SWIG_IsNewObj(res6) ? (SWIG_POINTER_OWN | 0 ) : 0 ; + resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_NewPointerObj((void*)(arg6), SWIGTYPE_p_int, new_flags)); + } + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5PartGetFileAttribInfo(PyObject *self, PyObject *args) { + int argc; + PyObject *argv[7]; + int ii; + + if (!PyTuple_Check(args)) SWIG_fail; + argc = PyObject_Length(args); + for (ii = 0; (ii < argc) && (ii < 6); ii++) { + argv[ii] = PyTuple_GET_ITEM(args,ii); + } + if (argc == 3) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_H5PartFile, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + { + int res = SWIG_AsVal_size_t(argv[2], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_H5PartGetFileAttribInfo__SWIG_1(self, args); + } + } + } + } + if (argc == 6) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_H5PartFile, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + int res = SWIG_AsCharPtrAndSize(argv[2], 0, NULL, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_size_t(argv[3], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[4], &vptr, SWIGTYPE_p_int, 0); + _v = SWIG_CheckState(res); + if (_v) { + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[5], &vptr, SWIGTYPE_p_int, 0); + _v = SWIG_CheckState(res); + if (_v) { + return _wrap_H5PartGetFileAttribInfo__SWIG_0(self, args); + } + } + } + } + } + } + } + +fail: + SWIG_SetErrorMsg(PyExc_NotImplementedError,"No matching function for overloaded 'H5PartGetFileAttribInfo'"); + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5PartGetDatasetInfo__SWIG_1(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + H5PartFile *arg1 = (H5PartFile *) 0 ; + int arg2 ; + char *arg3 = (char *) 0 ; + size_t arg4 ; + int *arg5 = (int *) 0 ; + long long *arg6 = (long long *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + int val2 ; + int ecode2 = 0 ; + char temp3[100+1] ; + size_t val4 ; + int ecode4 = 0 ; + int temp5 ; + int res5 = SWIG_TMPOBJ ; + long long temp6 ; + int res6 = SWIG_TMPOBJ ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + + arg3 = (char *) temp3; + arg5 = &temp5; + arg6 = &temp6; + if (!PyArg_ParseTuple(args,(char *)"OOO:H5PartGetDatasetInfo",&obj0,&obj1,&obj2)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_H5PartFile, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "H5PartGetDatasetInfo" "', argument " "1"" of type '" "H5PartFile *""'"); + } + arg1 = (H5PartFile *)(argp1); + ecode2 = SWIG_AsVal_int(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "H5PartGetDatasetInfo" "', argument " "2"" of type '" "int""'"); + } + arg2 = (int)(val2); + ecode4 = SWIG_AsVal_size_t(obj2, &val4); + if (!SWIG_IsOK(ecode4)) { + SWIG_exception_fail(SWIG_ArgError(ecode4), "in method '" "H5PartGetDatasetInfo" "', argument " "4"" of type '" "size_t""'"); + } + arg4 = (size_t)(val4); + H5PartGetDatasetInfo(arg1,arg2,arg3,arg4,arg5,arg6); + resultobj = SWIG_Py_Void(); + arg3[100] = 0; + resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_FromCharPtr(arg3)); + if (SWIG_IsTmpObj(res5)) { + resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_From_int((*arg5))); + } else { + int new_flags = SWIG_IsNewObj(res5) ? (SWIG_POINTER_OWN | 0 ) : 0 ; + resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_NewPointerObj((void*)(arg5), SWIGTYPE_p_int, new_flags)); + } + if (SWIG_IsTmpObj(res6)) { + resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_From_long_SS_long((*arg6))); + } else { + int new_flags = SWIG_IsNewObj(res6) ? (SWIG_POINTER_OWN | 0 ) : 0 ; + resultobj = SWIG_Python_AppendOutput(resultobj, SWIG_NewPointerObj((void*)(arg6), SWIGTYPE_p_long_long, new_flags)); + } + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_H5PartGetDatasetInfo(PyObject *self, PyObject *args) { + int argc; + PyObject *argv[7]; + int ii; + + if (!PyTuple_Check(args)) SWIG_fail; + argc = PyObject_Length(args); + for (ii = 0; (ii < argc) && (ii < 6); ii++) { + argv[ii] = PyTuple_GET_ITEM(args,ii); + } + if (argc == 3) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_H5PartFile, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + { + int res = SWIG_AsVal_size_t(argv[2], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + return _wrap_H5PartGetDatasetInfo__SWIG_1(self, args); + } + } + } + } + if (argc == 6) { + int _v; + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_H5PartFile, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_int(argv[1], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + int res = SWIG_AsCharPtrAndSize(argv[2], 0, NULL, 0); + _v = SWIG_CheckState(res); + if (_v) { + { + int res = SWIG_AsVal_size_t(argv[3], NULL); + _v = SWIG_CheckState(res); + } + if (_v) { + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[4], &vptr, SWIGTYPE_p_int, 0); + _v = SWIG_CheckState(res); + if (_v) { + void *vptr = 0; + int res = SWIG_ConvertPtr(argv[5], &vptr, SWIGTYPE_p_long_long, 0); + _v = SWIG_CheckState(res); + if (_v) { + return _wrap_H5PartGetDatasetInfo__SWIG_0(self, args); + } + } + } + } + } + } + } + +fail: + SWIG_SetErrorMsg(PyExc_NotImplementedError,"No matching function for overloaded 'H5PartGetDatasetInfo'"); + return NULL; +} + + +SWIGINTERN PyObject *_wrap_new_longArray(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + size_t arg1 ; + longArray *result = 0 ; + size_t val1 ; + int ecode1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:new_longArray",&obj0)) SWIG_fail; + ecode1 = SWIG_AsVal_size_t(obj0, &val1); + if (!SWIG_IsOK(ecode1)) { + SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_longArray" "', argument " "1"" of type '" "size_t""'"); + } + arg1 = (size_t)(val1); + result = (longArray *)new_longArray(arg1); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_longArray, SWIG_POINTER_NEW | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_delete_longArray(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + longArray *arg1 = (longArray *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:delete_longArray",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_longArray, SWIG_POINTER_DISOWN | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_longArray" "', argument " "1"" of type '" "longArray *""'"); + } + arg1 = (longArray *)(argp1); + delete_longArray(arg1); + + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_longArray___getitem__(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + longArray *arg1 = (longArray *) 0 ; + size_t arg2 ; + long long result; + void *argp1 = 0 ; + int res1 = 0 ; + size_t val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:longArray___getitem__",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_longArray, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "longArray___getitem__" "', argument " "1"" of type '" "longArray *""'"); + } + arg1 = (longArray *)(argp1); + ecode2 = SWIG_AsVal_size_t(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "longArray___getitem__" "', argument " "2"" of type '" "size_t""'"); + } + arg2 = (size_t)(val2); + result = (long long)longArray___getitem__(arg1,arg2); + resultobj = SWIG_From_long_SS_long((long long)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_longArray___setitem__(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + longArray *arg1 = (longArray *) 0 ; + size_t arg2 ; + long long arg3 ; + void *argp1 = 0 ; + int res1 = 0 ; + size_t val2 ; + int ecode2 = 0 ; + long long val3 ; + int ecode3 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OOO:longArray___setitem__",&obj0,&obj1,&obj2)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_longArray, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "longArray___setitem__" "', argument " "1"" of type '" "longArray *""'"); + } + arg1 = (longArray *)(argp1); + ecode2 = SWIG_AsVal_size_t(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "longArray___setitem__" "', argument " "2"" of type '" "size_t""'"); + } + arg2 = (size_t)(val2); + ecode3 = SWIG_AsVal_long_SS_long(obj2, &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "longArray___setitem__" "', argument " "3"" of type '" "long long""'"); + } + arg3 = (long long)(val3); + longArray___setitem__(arg1,arg2,arg3); + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_longArray_cast(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + longArray *arg1 = (longArray *) 0 ; + long long *result = 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:longArray_cast",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_longArray, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "longArray_cast" "', argument " "1"" of type '" "longArray *""'"); + } + arg1 = (longArray *)(argp1); + result = (long long *)longArray_cast(arg1); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_long_long, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_longArray_frompointer(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + long long *arg1 = (long long *) 0 ; + longArray *result = 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:longArray_frompointer",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_long_long, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "longArray_frompointer" "', argument " "1"" of type '" "long long *""'"); + } + arg1 = (long long *)(argp1); + result = (longArray *)longArray_frompointer(arg1); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_longArray, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *longArray_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *obj; + if (!PyArg_ParseTuple(args,(char*)"O|swigregister", &obj)) return NULL; + SWIG_TypeNewClientData(SWIGTYPE_p_longArray, SWIG_NewClientData(obj)); + return SWIG_Py_Void(); +} + +SWIGINTERN PyObject *_wrap_new_doubleArray(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + size_t arg1 ; + doubleArray *result = 0 ; + size_t val1 ; + int ecode1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:new_doubleArray",&obj0)) SWIG_fail; + ecode1 = SWIG_AsVal_size_t(obj0, &val1); + if (!SWIG_IsOK(ecode1)) { + SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_doubleArray" "', argument " "1"" of type '" "size_t""'"); + } + arg1 = (size_t)(val1); + result = (doubleArray *)new_doubleArray(arg1); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_doubleArray, SWIG_POINTER_NEW | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_delete_doubleArray(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + doubleArray *arg1 = (doubleArray *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:delete_doubleArray",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_doubleArray, SWIG_POINTER_DISOWN | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_doubleArray" "', argument " "1"" of type '" "doubleArray *""'"); + } + arg1 = (doubleArray *)(argp1); + delete_doubleArray(arg1); + + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_doubleArray___getitem__(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + doubleArray *arg1 = (doubleArray *) 0 ; + size_t arg2 ; + double result; + void *argp1 = 0 ; + int res1 = 0 ; + size_t val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:doubleArray___getitem__",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_doubleArray, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "doubleArray___getitem__" "', argument " "1"" of type '" "doubleArray *""'"); + } + arg1 = (doubleArray *)(argp1); + ecode2 = SWIG_AsVal_size_t(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "doubleArray___getitem__" "', argument " "2"" of type '" "size_t""'"); + } + arg2 = (size_t)(val2); + result = (double)doubleArray___getitem__(arg1,arg2); + resultobj = SWIG_From_double((double)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_doubleArray___setitem__(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + doubleArray *arg1 = (doubleArray *) 0 ; + size_t arg2 ; + double arg3 ; + void *argp1 = 0 ; + int res1 = 0 ; + size_t val2 ; + int ecode2 = 0 ; + double val3 ; + int ecode3 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OOO:doubleArray___setitem__",&obj0,&obj1,&obj2)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_doubleArray, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "doubleArray___setitem__" "', argument " "1"" of type '" "doubleArray *""'"); + } + arg1 = (doubleArray *)(argp1); + ecode2 = SWIG_AsVal_size_t(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "doubleArray___setitem__" "', argument " "2"" of type '" "size_t""'"); + } + arg2 = (size_t)(val2); + ecode3 = SWIG_AsVal_double(obj2, &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "doubleArray___setitem__" "', argument " "3"" of type '" "double""'"); + } + arg3 = (double)(val3); + doubleArray___setitem__(arg1,arg2,arg3); + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_doubleArray_cast(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + doubleArray *arg1 = (doubleArray *) 0 ; + double *result = 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:doubleArray_cast",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_doubleArray, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "doubleArray_cast" "', argument " "1"" of type '" "doubleArray *""'"); + } + arg1 = (doubleArray *)(argp1); + result = (double *)doubleArray_cast(arg1); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_double, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_doubleArray_frompointer(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + double *arg1 = (double *) 0 ; + doubleArray *result = 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:doubleArray_frompointer",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_double, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "doubleArray_frompointer" "', argument " "1"" of type '" "double *""'"); + } + arg1 = (double *)(argp1); + result = (doubleArray *)doubleArray_frompointer(arg1); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_doubleArray, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *doubleArray_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *obj; + if (!PyArg_ParseTuple(args,(char*)"O|swigregister", &obj)) return NULL; + SWIG_TypeNewClientData(SWIGTYPE_p_doubleArray, SWIG_NewClientData(obj)); + return SWIG_Py_Void(); +} + +SWIGINTERN PyObject *_wrap_new_charArray(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + size_t arg1 ; + charArray *result = 0 ; + size_t val1 ; + int ecode1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:new_charArray",&obj0)) SWIG_fail; + ecode1 = SWIG_AsVal_size_t(obj0, &val1); + if (!SWIG_IsOK(ecode1)) { + SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_charArray" "', argument " "1"" of type '" "size_t""'"); + } + arg1 = (size_t)(val1); + result = (charArray *)new_charArray(arg1); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_charArray, SWIG_POINTER_NEW | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_delete_charArray(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + charArray *arg1 = (charArray *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:delete_charArray",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_charArray, SWIG_POINTER_DISOWN | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_charArray" "', argument " "1"" of type '" "charArray *""'"); + } + arg1 = (charArray *)(argp1); + delete_charArray(arg1); + + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_charArray___getitem__(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + charArray *arg1 = (charArray *) 0 ; + size_t arg2 ; + char result; + void *argp1 = 0 ; + int res1 = 0 ; + size_t val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:charArray___getitem__",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_charArray, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "charArray___getitem__" "', argument " "1"" of type '" "charArray *""'"); + } + arg1 = (charArray *)(argp1); + ecode2 = SWIG_AsVal_size_t(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "charArray___getitem__" "', argument " "2"" of type '" "size_t""'"); + } + arg2 = (size_t)(val2); + result = (char)charArray___getitem__(arg1,arg2); + resultobj = SWIG_From_char((char)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_charArray___setitem__(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + charArray *arg1 = (charArray *) 0 ; + size_t arg2 ; + char arg3 ; + void *argp1 = 0 ; + int res1 = 0 ; + size_t val2 ; + int ecode2 = 0 ; + char val3 ; + int ecode3 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OOO:charArray___setitem__",&obj0,&obj1,&obj2)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_charArray, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "charArray___setitem__" "', argument " "1"" of type '" "charArray *""'"); + } + arg1 = (charArray *)(argp1); + ecode2 = SWIG_AsVal_size_t(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "charArray___setitem__" "', argument " "2"" of type '" "size_t""'"); + } + arg2 = (size_t)(val2); + ecode3 = SWIG_AsVal_char(obj2, &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "charArray___setitem__" "', argument " "3"" of type '" "char""'"); + } + arg3 = (char)(val3); + charArray___setitem__(arg1,arg2,arg3); + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_charArray_cast(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + charArray *arg1 = (charArray *) 0 ; + char *result = 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:charArray_cast",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_charArray, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "charArray_cast" "', argument " "1"" of type '" "charArray *""'"); + } + arg1 = (charArray *)(argp1); + result = (char *)charArray_cast(arg1); + resultobj = SWIG_FromCharPtr(result); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_charArray_frompointer(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + char *arg1 = (char *) 0 ; + charArray *result = 0 ; + int res1 ; + char *buf1 = 0 ; + int alloc1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:charArray_frompointer",&obj0)) SWIG_fail; + res1 = SWIG_AsCharPtrAndSize(obj0, &buf1, NULL, &alloc1); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "charArray_frompointer" "', argument " "1"" of type '" "char *""'"); + } + arg1 = buf1; + result = (charArray *)charArray_frompointer(arg1); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_charArray, 0 | 0 ); + if (alloc1 == SWIG_NEWOBJ) free((char*)buf1); + return resultobj; +fail: + if (alloc1 == SWIG_NEWOBJ) free((char*)buf1); + return NULL; +} + + +SWIGINTERN PyObject *charArray_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *obj; + if (!PyArg_ParseTuple(args,(char*)"O|swigregister", &obj)) return NULL; + SWIG_TypeNewClientData(SWIGTYPE_p_charArray, SWIG_NewClientData(obj)); + return SWIG_Py_Void(); +} + +SWIGINTERN PyObject *_wrap_new_hid_tArray(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + size_t arg1 ; + hid_tArray *result = 0 ; + size_t val1 ; + int ecode1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:new_hid_tArray",&obj0)) SWIG_fail; + ecode1 = SWIG_AsVal_size_t(obj0, &val1); + if (!SWIG_IsOK(ecode1)) { + SWIG_exception_fail(SWIG_ArgError(ecode1), "in method '" "new_hid_tArray" "', argument " "1"" of type '" "size_t""'"); + } + arg1 = (size_t)(val1); + result = (hid_tArray *)new_hid_tArray(arg1); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_hid_tArray, SWIG_POINTER_NEW | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_delete_hid_tArray(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + hid_tArray *arg1 = (hid_tArray *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:delete_hid_tArray",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_hid_tArray, SWIG_POINTER_DISOWN | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_hid_tArray" "', argument " "1"" of type '" "hid_tArray *""'"); + } + arg1 = (hid_tArray *)(argp1); + delete_hid_tArray(arg1); + + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_hid_tArray___getitem__(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + hid_tArray *arg1 = (hid_tArray *) 0 ; + size_t arg2 ; + hid_t result; + void *argp1 = 0 ; + int res1 = 0 ; + size_t val2 ; + int ecode2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:hid_tArray___getitem__",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_hid_tArray, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "hid_tArray___getitem__" "', argument " "1"" of type '" "hid_tArray *""'"); + } + arg1 = (hid_tArray *)(argp1); + ecode2 = SWIG_AsVal_size_t(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "hid_tArray___getitem__" "', argument " "2"" of type '" "size_t""'"); + } + arg2 = (size_t)(val2); + result = (hid_t)hid_tArray___getitem__(arg1,arg2); + resultobj = SWIG_From_int((int)(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_hid_tArray___setitem__(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + hid_tArray *arg1 = (hid_tArray *) 0 ; + size_t arg2 ; + hid_t arg3 ; + void *argp1 = 0 ; + int res1 = 0 ; + size_t val2 ; + int ecode2 = 0 ; + int val3 ; + int ecode3 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + PyObject * obj2 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OOO:hid_tArray___setitem__",&obj0,&obj1,&obj2)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_hid_tArray, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "hid_tArray___setitem__" "', argument " "1"" of type '" "hid_tArray *""'"); + } + arg1 = (hid_tArray *)(argp1); + ecode2 = SWIG_AsVal_size_t(obj1, &val2); + if (!SWIG_IsOK(ecode2)) { + SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "hid_tArray___setitem__" "', argument " "2"" of type '" "size_t""'"); + } + arg2 = (size_t)(val2); + ecode3 = SWIG_AsVal_int(obj2, &val3); + if (!SWIG_IsOK(ecode3)) { + SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "hid_tArray___setitem__" "', argument " "3"" of type '" "hid_t""'"); + } + arg3 = (hid_t)(val3); + hid_tArray___setitem__(arg1,arg2,arg3); + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_hid_tArray_cast(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + hid_tArray *arg1 = (hid_tArray *) 0 ; + hid_t *result = 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:hid_tArray_cast",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_hid_tArray, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "hid_tArray_cast" "', argument " "1"" of type '" "hid_tArray *""'"); + } + arg1 = (hid_tArray *)(argp1); + result = (hid_t *)hid_tArray_cast(arg1); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_int, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_hid_tArray_frompointer(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + hid_t *arg1 = (hid_t *) 0 ; + hid_tArray *result = 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:hid_tArray_frompointer",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_int, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "hid_tArray_frompointer" "', argument " "1"" of type '" "hid_t *""'"); + } + arg1 = (hid_t *)(argp1); + result = (hid_tArray *)hid_tArray_frompointer(arg1); + resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_hid_tArray, 0 | 0 ); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *hid_tArray_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *obj; + if (!PyArg_ParseTuple(args,(char*)"O|swigregister", &obj)) return NULL; + SWIG_TypeNewClientData(SWIGTYPE_p_hid_tArray, SWIG_NewClientData(obj)); + return SWIG_Py_Void(); +} + +static PyMethodDef SwigMethods[] = { + { (char *)"H5PartFile_file_set", _wrap_H5PartFile_file_set, METH_VARARGS, NULL}, + { (char *)"H5PartFile_file_get", _wrap_H5PartFile_file_get, METH_VARARGS, NULL}, + { (char *)"H5PartFile_timestep_set", _wrap_H5PartFile_timestep_set, METH_VARARGS, NULL}, + { (char *)"H5PartFile_timestep_get", _wrap_H5PartFile_timestep_get, METH_VARARGS, NULL}, + { (char *)"H5PartFile_timegroup_set", _wrap_H5PartFile_timegroup_set, METH_VARARGS, NULL}, + { (char *)"H5PartFile_timegroup_get", _wrap_H5PartFile_timegroup_get, METH_VARARGS, NULL}, + { (char *)"H5PartFile_properties_set", _wrap_H5PartFile_properties_set, METH_VARARGS, NULL}, + { (char *)"H5PartFile_properties_get", _wrap_H5PartFile_properties_get, METH_VARARGS, NULL}, + { (char *)"H5PartFile_nparticles_set", _wrap_H5PartFile_nparticles_set, METH_VARARGS, NULL}, + { (char *)"H5PartFile_nparticles_get", _wrap_H5PartFile_nparticles_get, METH_VARARGS, NULL}, + { (char *)"H5PartFile_shape_set", _wrap_H5PartFile_shape_set, METH_VARARGS, NULL}, + { (char *)"H5PartFile_shape_get", _wrap_H5PartFile_shape_get, METH_VARARGS, NULL}, + { (char *)"H5PartFile_mode_set", _wrap_H5PartFile_mode_set, METH_VARARGS, NULL}, + { (char *)"H5PartFile_mode_get", _wrap_H5PartFile_mode_get, METH_VARARGS, NULL}, + { (char *)"H5PartFile_maxstep_set", _wrap_H5PartFile_maxstep_set, METH_VARARGS, NULL}, + { (char *)"H5PartFile_maxstep_get", _wrap_H5PartFile_maxstep_get, METH_VARARGS, NULL}, + { (char *)"H5PartFile_xfer_prop_set", _wrap_H5PartFile_xfer_prop_set, METH_VARARGS, NULL}, + { (char *)"H5PartFile_xfer_prop_get", _wrap_H5PartFile_xfer_prop_get, METH_VARARGS, NULL}, + { (char *)"H5PartFile_create_prop_set", _wrap_H5PartFile_create_prop_set, METH_VARARGS, NULL}, + { (char *)"H5PartFile_create_prop_get", _wrap_H5PartFile_create_prop_get, METH_VARARGS, NULL}, + { (char *)"H5PartFile_access_prop_set", _wrap_H5PartFile_access_prop_set, METH_VARARGS, NULL}, + { (char *)"H5PartFile_access_prop_get", _wrap_H5PartFile_access_prop_get, METH_VARARGS, NULL}, + { (char *)"H5PartFile_diskshape_set", _wrap_H5PartFile_diskshape_set, METH_VARARGS, NULL}, + { (char *)"H5PartFile_diskshape_get", _wrap_H5PartFile_diskshape_get, METH_VARARGS, NULL}, + { (char *)"H5PartFile_memshape_set", _wrap_H5PartFile_memshape_set, METH_VARARGS, NULL}, + { (char *)"H5PartFile_memshape_get", _wrap_H5PartFile_memshape_get, METH_VARARGS, NULL}, + { (char *)"H5PartFile_viewstart_set", _wrap_H5PartFile_viewstart_set, METH_VARARGS, NULL}, + { (char *)"H5PartFile_viewstart_get", _wrap_H5PartFile_viewstart_get, METH_VARARGS, NULL}, + { (char *)"H5PartFile_viewend_set", _wrap_H5PartFile_viewend_set, METH_VARARGS, NULL}, + { (char *)"H5PartFile_viewend_get", _wrap_H5PartFile_viewend_get, METH_VARARGS, NULL}, + { (char *)"new_H5PartFile", _wrap_new_H5PartFile, METH_VARARGS, NULL}, + { (char *)"delete_H5PartFile", _wrap_delete_H5PartFile, METH_VARARGS, NULL}, + { (char *)"H5PartFile_swigregister", H5PartFile_swigregister, METH_VARARGS, NULL}, + { (char *)"H5PartOpenFile", _wrap_H5PartOpenFile, METH_VARARGS, NULL}, + { (char *)"H5PartFileIsValid", _wrap_H5PartFileIsValid, METH_VARARGS, NULL}, + { (char *)"H5PartCloseFile", _wrap_H5PartCloseFile, METH_VARARGS, NULL}, + { (char *)"H5PartSetNumParticles", _wrap_H5PartSetNumParticles, METH_VARARGS, NULL}, + { (char *)"H5PartWriteDataFloat64", _wrap_H5PartWriteDataFloat64, METH_VARARGS, NULL}, + { (char *)"H5PartWriteDataInt64", _wrap_H5PartWriteDataInt64, METH_VARARGS, NULL}, + { (char *)"H5PartSetStep", _wrap_H5PartSetStep, METH_VARARGS, NULL}, + { (char *)"H5PartGetNumSteps", _wrap_H5PartGetNumSteps, METH_VARARGS, NULL}, + { (char *)"H5PartGetNumDatasets", _wrap_H5PartGetNumDatasets, METH_VARARGS, NULL}, + { (char *)"H5PartNormType", _wrap_H5PartNormType, METH_VARARGS, NULL}, + { (char *)"H5PartGetNumParticles", _wrap_H5PartGetNumParticles, METH_VARARGS, NULL}, + { (char *)"H5PartSetView", _wrap_H5PartSetView, METH_VARARGS, NULL}, + { (char *)"H5PartGetView", _wrap_H5PartGetView, METH_VARARGS, NULL}, + { (char *)"H5PartSetCanonicalView", _wrap_H5PartSetCanonicalView, METH_VARARGS, NULL}, + { (char *)"H5PartReadDataFloat64", _wrap_H5PartReadDataFloat64, METH_VARARGS, NULL}, + { (char *)"H5PartReadDataInt64", _wrap_H5PartReadDataInt64, METH_VARARGS, NULL}, + { (char *)"H5PartReadParticleStep", _wrap_H5PartReadParticleStep, METH_VARARGS, NULL}, + { (char *)"H5PartWriteStepAttrib", _wrap_H5PartWriteStepAttrib, METH_VARARGS, NULL}, + { (char *)"H5PartWriteFileAttrib", _wrap_H5PartWriteFileAttrib, METH_VARARGS, NULL}, + { (char *)"H5PartWriteAttrib", _wrap_H5PartWriteAttrib, METH_VARARGS, NULL}, + { (char *)"H5PartWriteFileAttribString", _wrap_H5PartWriteFileAttribString, METH_VARARGS, NULL}, + { (char *)"H5PartWriteStepAttribString", _wrap_H5PartWriteStepAttribString, METH_VARARGS, NULL}, + { (char *)"H5PartGetNumStepAttribs", _wrap_H5PartGetNumStepAttribs, METH_VARARGS, NULL}, + { (char *)"H5PartGetNumFileAttribs", _wrap_H5PartGetNumFileAttribs, METH_VARARGS, NULL}, + { (char *)"H5PartReadStepAttrib", _wrap_H5PartReadStepAttrib, METH_VARARGS, NULL}, + { (char *)"H5PartReadAttrib", _wrap_H5PartReadAttrib, METH_VARARGS, NULL}, + { (char *)"H5PartReadFileAttrib", _wrap_H5PartReadFileAttrib, METH_VARARGS, NULL}, + { (char *)"H5PartStashFile", _wrap_H5PartStashFile, METH_VARARGS, NULL}, + { (char *)"H5PartUnstashFile", _wrap_H5PartUnstashFile, METH_VARARGS, NULL}, + { (char *)"H5PartGetNumStashFiles", _wrap_H5PartGetNumStashFiles, METH_VARARGS, NULL}, + { (char *)"H5PartFileGetStashFileName", _wrap_H5PartFileGetStashFileName, METH_VARARGS, NULL}, + { (char *)"H5T_cdata_t_command_set", _wrap_H5T_cdata_t_command_set, METH_VARARGS, NULL}, + { (char *)"H5T_cdata_t_command_get", _wrap_H5T_cdata_t_command_get, METH_VARARGS, NULL}, + { (char *)"H5T_cdata_t_need_bkg_set", _wrap_H5T_cdata_t_need_bkg_set, METH_VARARGS, NULL}, + { (char *)"H5T_cdata_t_need_bkg_get", _wrap_H5T_cdata_t_need_bkg_get, METH_VARARGS, NULL}, + { (char *)"H5T_cdata_t_recalc_set", _wrap_H5T_cdata_t_recalc_set, METH_VARARGS, NULL}, + { (char *)"H5T_cdata_t_recalc_get", _wrap_H5T_cdata_t_recalc_get, METH_VARARGS, NULL}, + { (char *)"H5T_cdata_t_priv_set", _wrap_H5T_cdata_t_priv_set, METH_VARARGS, NULL}, + { (char *)"H5T_cdata_t_priv_get", _wrap_H5T_cdata_t_priv_get, METH_VARARGS, NULL}, + { (char *)"new_H5T_cdata_t", _wrap_new_H5T_cdata_t, METH_VARARGS, NULL}, + { (char *)"delete_H5T_cdata_t", _wrap_delete_H5T_cdata_t, METH_VARARGS, NULL}, + { (char *)"H5T_cdata_t_swigregister", H5T_cdata_t_swigregister, METH_VARARGS, NULL}, + { (char *)"hvl_t_len_set", _wrap_hvl_t_len_set, METH_VARARGS, NULL}, + { (char *)"hvl_t_len_get", _wrap_hvl_t_len_get, METH_VARARGS, NULL}, + { (char *)"hvl_t_p_set", _wrap_hvl_t_p_set, METH_VARARGS, NULL}, + { (char *)"hvl_t_p_get", _wrap_hvl_t_p_get, METH_VARARGS, NULL}, + { (char *)"new_hvl_t", _wrap_new_hvl_t, METH_VARARGS, NULL}, + { (char *)"delete_hvl_t", _wrap_delete_hvl_t, METH_VARARGS, NULL}, + { (char *)"hvl_t_swigregister", hvl_t_swigregister, METH_VARARGS, NULL}, + { (char *)"H5Topen", _wrap_H5Topen, METH_VARARGS, NULL}, + { (char *)"H5Tcreate", _wrap_H5Tcreate, METH_VARARGS, NULL}, + { (char *)"H5Tcopy", _wrap_H5Tcopy, METH_VARARGS, NULL}, + { (char *)"H5Tclose", _wrap_H5Tclose, METH_VARARGS, NULL}, + { (char *)"H5Tequal", _wrap_H5Tequal, METH_VARARGS, NULL}, + { (char *)"H5Tlock", _wrap_H5Tlock, METH_VARARGS, NULL}, + { (char *)"H5Tcommit", _wrap_H5Tcommit, METH_VARARGS, NULL}, + { (char *)"H5Tcommitted", _wrap_H5Tcommitted, METH_VARARGS, NULL}, + { (char *)"H5Tinsert", _wrap_H5Tinsert, METH_VARARGS, NULL}, + { (char *)"H5Tpack", _wrap_H5Tpack, METH_VARARGS, NULL}, + { (char *)"H5Tenum_create", _wrap_H5Tenum_create, METH_VARARGS, NULL}, + { (char *)"H5Tenum_insert", _wrap_H5Tenum_insert, METH_VARARGS, NULL}, + { (char *)"H5Tenum_nameof", _wrap_H5Tenum_nameof, METH_VARARGS, NULL}, + { (char *)"H5Tenum_valueof", _wrap_H5Tenum_valueof, METH_VARARGS, NULL}, + { (char *)"H5Tvlen_create", _wrap_H5Tvlen_create, METH_VARARGS, NULL}, + { (char *)"H5Tarray_create", _wrap_H5Tarray_create, METH_VARARGS, NULL}, + { (char *)"H5Tget_array_ndims", _wrap_H5Tget_array_ndims, METH_VARARGS, NULL}, + { (char *)"H5Tget_array_dims", _wrap_H5Tget_array_dims, METH_VARARGS, NULL}, + { (char *)"H5Tset_tag", _wrap_H5Tset_tag, METH_VARARGS, NULL}, + { (char *)"H5Tget_tag", _wrap_H5Tget_tag, METH_VARARGS, NULL}, + { (char *)"H5Tget_super", _wrap_H5Tget_super, METH_VARARGS, NULL}, + { (char *)"H5Tget_class", _wrap_H5Tget_class, METH_VARARGS, NULL}, + { (char *)"H5Tdetect_class", _wrap_H5Tdetect_class, METH_VARARGS, NULL}, + { (char *)"H5Tget_size", _wrap_H5Tget_size, METH_VARARGS, NULL}, + { (char *)"H5Tget_order", _wrap_H5Tget_order, METH_VARARGS, NULL}, + { (char *)"H5Tget_precision", _wrap_H5Tget_precision, METH_VARARGS, NULL}, + { (char *)"H5Tget_offset", _wrap_H5Tget_offset, METH_VARARGS, NULL}, + { (char *)"H5Tget_pad", _wrap_H5Tget_pad, METH_VARARGS, NULL}, + { (char *)"H5Tget_sign", _wrap_H5Tget_sign, METH_VARARGS, NULL}, + { (char *)"H5Tget_fields", _wrap_H5Tget_fields, METH_VARARGS, NULL}, + { (char *)"H5Tget_ebias", _wrap_H5Tget_ebias, METH_VARARGS, NULL}, + { (char *)"H5Tget_norm", _wrap_H5Tget_norm, METH_VARARGS, NULL}, + { (char *)"H5Tget_inpad", _wrap_H5Tget_inpad, METH_VARARGS, NULL}, + { (char *)"H5Tget_strpad", _wrap_H5Tget_strpad, METH_VARARGS, NULL}, + { (char *)"H5Tget_nmembers", _wrap_H5Tget_nmembers, METH_VARARGS, NULL}, + { (char *)"H5Tget_member_name", _wrap_H5Tget_member_name, METH_VARARGS, NULL}, + { (char *)"H5Tget_member_index", _wrap_H5Tget_member_index, METH_VARARGS, NULL}, + { (char *)"H5Tget_member_offset", _wrap_H5Tget_member_offset, METH_VARARGS, NULL}, + { (char *)"H5Tget_member_class", _wrap_H5Tget_member_class, METH_VARARGS, NULL}, + { (char *)"H5Tget_member_type", _wrap_H5Tget_member_type, METH_VARARGS, NULL}, + { (char *)"H5Tget_member_value", _wrap_H5Tget_member_value, METH_VARARGS, NULL}, + { (char *)"H5Tget_cset", _wrap_H5Tget_cset, METH_VARARGS, NULL}, + { (char *)"H5Tis_variable_str", _wrap_H5Tis_variable_str, METH_VARARGS, NULL}, + { (char *)"H5Tget_native_type", _wrap_H5Tget_native_type, METH_VARARGS, NULL}, + { (char *)"H5Tset_size", _wrap_H5Tset_size, METH_VARARGS, NULL}, + { (char *)"H5Tset_order", _wrap_H5Tset_order, METH_VARARGS, NULL}, + { (char *)"H5Tset_precision", _wrap_H5Tset_precision, METH_VARARGS, NULL}, + { (char *)"H5Tset_offset", _wrap_H5Tset_offset, METH_VARARGS, NULL}, + { (char *)"H5Tset_pad", _wrap_H5Tset_pad, METH_VARARGS, NULL}, + { (char *)"H5Tset_sign", _wrap_H5Tset_sign, METH_VARARGS, NULL}, + { (char *)"H5Tset_fields", _wrap_H5Tset_fields, METH_VARARGS, NULL}, + { (char *)"H5Tset_ebias", _wrap_H5Tset_ebias, METH_VARARGS, NULL}, + { (char *)"H5Tset_norm", _wrap_H5Tset_norm, METH_VARARGS, NULL}, + { (char *)"H5Tset_inpad", _wrap_H5Tset_inpad, METH_VARARGS, NULL}, + { (char *)"H5Tset_cset", _wrap_H5Tset_cset, METH_VARARGS, NULL}, + { (char *)"H5Tset_strpad", _wrap_H5Tset_strpad, METH_VARARGS, NULL}, + { (char *)"H5Tregister", _wrap_H5Tregister, METH_VARARGS, NULL}, + { (char *)"H5Tunregister", _wrap_H5Tunregister, METH_VARARGS, NULL}, + { (char *)"H5Tfind", _wrap_H5Tfind, METH_VARARGS, NULL}, + { (char *)"H5Tconvert", _wrap_H5Tconvert, METH_VARARGS, NULL}, + { (char *)"H5Tget_overflow", _wrap_H5Tget_overflow, METH_VARARGS, NULL}, + { (char *)"H5Tset_overflow", _wrap_H5Tset_overflow, METH_VARARGS, NULL}, + { (char *)"H5open", _wrap_H5open, METH_VARARGS, NULL}, + { (char *)"H5close", _wrap_H5close, METH_VARARGS, NULL}, + { (char *)"H5dont_atexit", _wrap_H5dont_atexit, METH_VARARGS, NULL}, + { (char *)"H5garbage_collect", _wrap_H5garbage_collect, METH_VARARGS, NULL}, + { (char *)"H5set_free_list_limits", _wrap_H5set_free_list_limits, METH_VARARGS, NULL}, + { (char *)"H5get_libversion", _wrap_H5get_libversion, METH_VARARGS, NULL}, + { (char *)"H5check_version", _wrap_H5check_version, METH_VARARGS, NULL}, + { (char *)"H5Iget_type", _wrap_H5Iget_type, METH_VARARGS, NULL}, + { (char *)"H5Iget_file_id", _wrap_H5Iget_file_id, METH_VARARGS, NULL}, + { (char *)"H5Iget_name", _wrap_H5Iget_name, METH_VARARGS, NULL}, + { (char *)"H5Iinc_ref", _wrap_H5Iinc_ref, METH_VARARGS, NULL}, + { (char *)"H5Idec_ref", _wrap_H5Idec_ref, METH_VARARGS, NULL}, + { (char *)"H5Iget_ref", _wrap_H5Iget_ref, METH_VARARGS, NULL}, + { (char *)"H5PartGetDatasetName", _wrap_H5PartGetDatasetName, METH_VARARGS, NULL}, + { (char *)"H5PartGetStepAttribInfo", _wrap_H5PartGetStepAttribInfo, METH_VARARGS, NULL}, + { (char *)"H5PartGetFileAttribInfo", _wrap_H5PartGetFileAttribInfo, METH_VARARGS, NULL}, + { (char *)"H5PartGetDatasetInfo", _wrap_H5PartGetDatasetInfo, METH_VARARGS, NULL}, + { (char *)"new_longArray", _wrap_new_longArray, METH_VARARGS, NULL}, + { (char *)"delete_longArray", _wrap_delete_longArray, METH_VARARGS, NULL}, + { (char *)"longArray___getitem__", _wrap_longArray___getitem__, METH_VARARGS, NULL}, + { (char *)"longArray___setitem__", _wrap_longArray___setitem__, METH_VARARGS, NULL}, + { (char *)"longArray_cast", _wrap_longArray_cast, METH_VARARGS, NULL}, + { (char *)"longArray_frompointer", _wrap_longArray_frompointer, METH_VARARGS, NULL}, + { (char *)"longArray_swigregister", longArray_swigregister, METH_VARARGS, NULL}, + { (char *)"new_doubleArray", _wrap_new_doubleArray, METH_VARARGS, NULL}, + { (char *)"delete_doubleArray", _wrap_delete_doubleArray, METH_VARARGS, NULL}, + { (char *)"doubleArray___getitem__", _wrap_doubleArray___getitem__, METH_VARARGS, NULL}, + { (char *)"doubleArray___setitem__", _wrap_doubleArray___setitem__, METH_VARARGS, NULL}, + { (char *)"doubleArray_cast", _wrap_doubleArray_cast, METH_VARARGS, NULL}, + { (char *)"doubleArray_frompointer", _wrap_doubleArray_frompointer, METH_VARARGS, NULL}, + { (char *)"doubleArray_swigregister", doubleArray_swigregister, METH_VARARGS, NULL}, + { (char *)"new_charArray", _wrap_new_charArray, METH_VARARGS, NULL}, + { (char *)"delete_charArray", _wrap_delete_charArray, METH_VARARGS, NULL}, + { (char *)"charArray___getitem__", _wrap_charArray___getitem__, METH_VARARGS, NULL}, + { (char *)"charArray___setitem__", _wrap_charArray___setitem__, METH_VARARGS, NULL}, + { (char *)"charArray_cast", _wrap_charArray_cast, METH_VARARGS, NULL}, + { (char *)"charArray_frompointer", _wrap_charArray_frompointer, METH_VARARGS, NULL}, + { (char *)"charArray_swigregister", charArray_swigregister, METH_VARARGS, NULL}, + { (char *)"new_hid_tArray", _wrap_new_hid_tArray, METH_VARARGS, NULL}, + { (char *)"delete_hid_tArray", _wrap_delete_hid_tArray, METH_VARARGS, NULL}, + { (char *)"hid_tArray___getitem__", _wrap_hid_tArray___getitem__, METH_VARARGS, NULL}, + { (char *)"hid_tArray___setitem__", _wrap_hid_tArray___setitem__, METH_VARARGS, NULL}, + { (char *)"hid_tArray_cast", _wrap_hid_tArray_cast, METH_VARARGS, NULL}, + { (char *)"hid_tArray_frompointer", _wrap_hid_tArray_frompointer, METH_VARARGS, NULL}, + { (char *)"hid_tArray_swigregister", hid_tArray_swigregister, METH_VARARGS, NULL}, + { NULL, NULL, 0, NULL } +}; + + +/* -------- TYPE CONVERSION AND EQUIVALENCE RULES (BEGIN) -------- */ + +static void *_p_doubleArrayTo_p_double(void *x) { + return (void *)((double *) ((doubleArray *) x)); +} +static void *_p_longArrayTo_p_long_long(void *x) { + return (void *)((long long *) ((longArray *) x)); +} +static void *_p_charArrayTo_p_char(void *x) { + return (void *)((char *) ((charArray *) x)); +} +static swig_type_info _swigt__p_H5I_type_t = {"_p_H5I_type_t", "enum H5I_type_t *|H5I_type_t *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_H5PartFile = {"_p_H5PartFile", "struct H5PartFile *|H5PartFile *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_H5T_bkg_t = {"_p_H5T_bkg_t", "enum H5T_bkg_t *|H5T_bkg_t *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_H5T_cdata_t = {"_p_H5T_cdata_t", "struct H5T_cdata_t *|H5T_cdata_t *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_H5T_class_t = {"_p_H5T_class_t", "enum H5T_class_t *|H5T_class_t *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_H5T_cmd_t = {"_p_H5T_cmd_t", "enum H5T_cmd_t *|H5T_cmd_t *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_H5T_cset_t = {"_p_H5T_cset_t", "enum H5T_cset_t *|H5T_cset_t *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_H5T_direction_t = {"_p_H5T_direction_t", "enum H5T_direction_t *|H5T_direction_t *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_H5T_norm_t = {"_p_H5T_norm_t", "enum H5T_norm_t *|H5T_norm_t *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_H5T_order_t = {"_p_H5T_order_t", "enum H5T_order_t *|H5T_order_t *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_H5T_pad_t = {"_p_H5T_pad_t", "enum H5T_pad_t *|H5T_pad_t *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_H5T_pers_t = {"_p_H5T_pers_t", "enum H5T_pers_t *|H5T_pers_t *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_H5T_sign_t = {"_p_H5T_sign_t", "enum H5T_sign_t *|H5T_sign_t *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_H5T_str_t = {"_p_H5T_str_t", "enum H5T_str_t *|H5T_str_t *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_char = {"_p_char", "char *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_charArray = {"_p_charArray", "struct charArray *|charArray *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_double = {"_p_double", "double *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_doubleArray = {"_p_doubleArray", "struct doubleArray *|doubleArray *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_f_int_int_p_struct_H5T_cdata_t_size_t_size_t_size_t_p_void_p_void_int__int = {"_p_f_int_int_p_struct_H5T_cdata_t_size_t_size_t_size_t_p_void_p_void_int__int", "int (*)(int,int,struct H5T_cdata_t *,size_t,size_t,size_t,void *,void *,int)|H5T_conv_t", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_f_int_int_p_void_p_void__int = {"_p_f_int_int_p_void_p_void__int", "int (*)(int,int,void *,void *)|H5T_overflow_t", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_hid_tArray = {"_p_hid_tArray", "struct hid_tArray *|hid_tArray *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_hvl_t = {"_p_hvl_t", "hvl_t *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_int = {"_p_int", "int *|hid_t *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_longArray = {"_p_longArray", "struct longArray *|longArray *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_long_long = {"_p_long_long", "long long *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_p_H5T_cdata_t = {"_p_p_H5T_cdata_t", "struct H5T_cdata_t **|H5T_cdata_t **", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_size_t = {"_p_size_t", "size_t *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_ssize_t = {"_p_ssize_t", "ssize_t *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_uint64_t = {"_p_uint64_t", "uint64_t *|haddr_t *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_unsigned_int = {"_p_unsigned_int", "unsigned int *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_unsigned_long_long = {"_p_unsigned_long_long", "unsigned long long *|hsize_t *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_void = {"_p_void", "void *", 0, 0, (void*)0, 0}; + +static swig_type_info *swig_type_initial[] = { + &_swigt__p_H5I_type_t, + &_swigt__p_H5PartFile, + &_swigt__p_H5T_bkg_t, + &_swigt__p_H5T_cdata_t, + &_swigt__p_H5T_class_t, + &_swigt__p_H5T_cmd_t, + &_swigt__p_H5T_cset_t, + &_swigt__p_H5T_direction_t, + &_swigt__p_H5T_norm_t, + &_swigt__p_H5T_order_t, + &_swigt__p_H5T_pad_t, + &_swigt__p_H5T_pers_t, + &_swigt__p_H5T_sign_t, + &_swigt__p_H5T_str_t, + &_swigt__p_char, + &_swigt__p_charArray, + &_swigt__p_double, + &_swigt__p_doubleArray, + &_swigt__p_f_int_int_p_struct_H5T_cdata_t_size_t_size_t_size_t_p_void_p_void_int__int, + &_swigt__p_f_int_int_p_void_p_void__int, + &_swigt__p_hid_tArray, + &_swigt__p_hvl_t, + &_swigt__p_int, + &_swigt__p_longArray, + &_swigt__p_long_long, + &_swigt__p_p_H5T_cdata_t, + &_swigt__p_size_t, + &_swigt__p_ssize_t, + &_swigt__p_uint64_t, + &_swigt__p_unsigned_int, + &_swigt__p_unsigned_long_long, + &_swigt__p_void, +}; + +static swig_cast_info _swigc__p_H5I_type_t[] = { {&_swigt__p_H5I_type_t, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_H5PartFile[] = { {&_swigt__p_H5PartFile, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_H5T_bkg_t[] = { {&_swigt__p_H5T_bkg_t, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_H5T_cdata_t[] = { {&_swigt__p_H5T_cdata_t, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_H5T_class_t[] = { {&_swigt__p_H5T_class_t, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_H5T_cmd_t[] = { {&_swigt__p_H5T_cmd_t, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_H5T_cset_t[] = { {&_swigt__p_H5T_cset_t, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_H5T_direction_t[] = { {&_swigt__p_H5T_direction_t, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_H5T_norm_t[] = { {&_swigt__p_H5T_norm_t, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_H5T_order_t[] = { {&_swigt__p_H5T_order_t, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_H5T_pad_t[] = { {&_swigt__p_H5T_pad_t, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_H5T_pers_t[] = { {&_swigt__p_H5T_pers_t, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_H5T_sign_t[] = { {&_swigt__p_H5T_sign_t, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_H5T_str_t[] = { {&_swigt__p_H5T_str_t, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_char[] = { {&_swigt__p_char, 0, 0, 0}, {&_swigt__p_charArray, _p_charArrayTo_p_char, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_charArray[] = { {&_swigt__p_charArray, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_double[] = { {&_swigt__p_doubleArray, _p_doubleArrayTo_p_double, 0, 0}, {&_swigt__p_double, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_doubleArray[] = { {&_swigt__p_doubleArray, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_f_int_int_p_struct_H5T_cdata_t_size_t_size_t_size_t_p_void_p_void_int__int[] = { {&_swigt__p_f_int_int_p_struct_H5T_cdata_t_size_t_size_t_size_t_p_void_p_void_int__int, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_f_int_int_p_void_p_void__int[] = { {&_swigt__p_f_int_int_p_void_p_void__int, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_hid_tArray[] = { {&_swigt__p_hid_tArray, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_hvl_t[] = { {&_swigt__p_hvl_t, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_int[] = { {&_swigt__p_int, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_longArray[] = { {&_swigt__p_longArray, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_long_long[] = { {&_swigt__p_long_long, 0, 0, 0}, {&_swigt__p_longArray, _p_longArrayTo_p_long_long, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_p_H5T_cdata_t[] = { {&_swigt__p_p_H5T_cdata_t, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_size_t[] = { {&_swigt__p_size_t, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_ssize_t[] = { {&_swigt__p_ssize_t, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_uint64_t[] = { {&_swigt__p_uint64_t, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_unsigned_int[] = { {&_swigt__p_unsigned_int, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_unsigned_long_long[] = { {&_swigt__p_unsigned_long_long, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_void[] = { {&_swigt__p_void, 0, 0, 0},{0, 0, 0, 0}}; + +static swig_cast_info *swig_cast_initial[] = { + _swigc__p_H5I_type_t, + _swigc__p_H5PartFile, + _swigc__p_H5T_bkg_t, + _swigc__p_H5T_cdata_t, + _swigc__p_H5T_class_t, + _swigc__p_H5T_cmd_t, + _swigc__p_H5T_cset_t, + _swigc__p_H5T_direction_t, + _swigc__p_H5T_norm_t, + _swigc__p_H5T_order_t, + _swigc__p_H5T_pad_t, + _swigc__p_H5T_pers_t, + _swigc__p_H5T_sign_t, + _swigc__p_H5T_str_t, + _swigc__p_char, + _swigc__p_charArray, + _swigc__p_double, + _swigc__p_doubleArray, + _swigc__p_f_int_int_p_struct_H5T_cdata_t_size_t_size_t_size_t_p_void_p_void_int__int, + _swigc__p_f_int_int_p_void_p_void__int, + _swigc__p_hid_tArray, + _swigc__p_hvl_t, + _swigc__p_int, + _swigc__p_longArray, + _swigc__p_long_long, + _swigc__p_p_H5T_cdata_t, + _swigc__p_size_t, + _swigc__p_ssize_t, + _swigc__p_uint64_t, + _swigc__p_unsigned_int, + _swigc__p_unsigned_long_long, + _swigc__p_void, +}; + + +/* -------- TYPE CONVERSION AND EQUIVALENCE RULES (END) -------- */ + +static swig_const_info swig_const_table[] = { +{0, 0, 0, 0.0, 0, 0}}; + +#ifdef __cplusplus +} +#endif +/* ----------------------------------------------------------------------------- + * Type initialization: + * This problem is tough by the requirement that no dynamic + * memory is used. Also, since swig_type_info structures store pointers to + * swig_cast_info structures and swig_cast_info structures store pointers back + * to swig_type_info structures, we need some lookup code at initialization. + * The idea is that swig generates all the structures that are needed. + * The runtime then collects these partially filled structures. + * The SWIG_InitializeModule function takes these initial arrays out of + * swig_module, and does all the lookup, filling in the swig_module.types + * array with the correct data and linking the correct swig_cast_info + * structures together. + * + * The generated swig_type_info structures are assigned staticly to an initial + * array. We just loop though that array, and handle each type individually. + * First we lookup if this type has been already loaded, and if so, use the + * loaded structure instead of the generated one. Then we have to fill in the + * cast linked list. The cast data is initially stored in something like a + * two-dimensional array. Each row corresponds to a type (there are the same + * number of rows as there are in the swig_type_initial array). Each entry in + * a column is one of the swig_cast_info structures for that type. + * The cast_initial array is actually an array of arrays, because each row has + * a variable number of columns. So to actually build the cast linked list, + * we find the array of casts associated with the type, and loop through it + * adding the casts to the list. The one last trick we need to do is making + * sure the type pointer in the swig_cast_info struct is correct. + * + * First off, we lookup the cast->type name to see if it is already loaded. + * There are three cases to handle: + * 1) If the cast->type has already been loaded AND the type we are adding + * casting info to has not been loaded (it is in this module), THEN we + * replace the cast->type pointer with the type pointer that has already + * been loaded. + * 2) If BOTH types (the one we are adding casting info to, and the + * cast->type) are loaded, THEN the cast info has already been loaded by + * the previous module so we just ignore it. + * 3) Finally, if cast->type has not already been loaded, then we add that + * swig_cast_info to the linked list (because the cast->type) pointer will + * be correct. + * ----------------------------------------------------------------------------- */ + +#ifdef __cplusplus +extern "C" { +#if 0 +} /* c-mode */ +#endif +#endif + +#if 0 +#define SWIGRUNTIME_DEBUG +#endif + +SWIGRUNTIME void +SWIG_InitializeModule(void *clientdata) { + size_t i; + swig_module_info *module_head; + static int init_run = 0; + + clientdata = clientdata; + + if (init_run) return; + init_run = 1; + + /* Initialize the swig_module */ + swig_module.type_initial = swig_type_initial; + swig_module.cast_initial = swig_cast_initial; + + /* Try and load any already created modules */ + module_head = SWIG_GetModule(clientdata); + if (module_head) { + swig_module.next = module_head->next; + module_head->next = &swig_module; + } else { + /* This is the first module loaded */ + swig_module.next = &swig_module; + SWIG_SetModule(clientdata, &swig_module); + } + + /* Now work on filling in swig_module.types */ +#ifdef SWIGRUNTIME_DEBUG + printf("SWIG_InitializeModule: size %d\n", swig_module.size); +#endif + for (i = 0; i < swig_module.size; ++i) { + swig_type_info *type = 0; + swig_type_info *ret; + swig_cast_info *cast; + +#ifdef SWIGRUNTIME_DEBUG + printf("SWIG_InitializeModule: type %d %s\n", i, swig_module.type_initial[i]->name); +#endif + + /* if there is another module already loaded */ + if (swig_module.next != &swig_module) { + type = SWIG_MangledTypeQueryModule(swig_module.next, &swig_module, swig_module.type_initial[i]->name); + } + if (type) { + /* Overwrite clientdata field */ +#ifdef SWIGRUNTIME_DEBUG + printf("SWIG_InitializeModule: found type %s\n", type->name); +#endif + if (swig_module.type_initial[i]->clientdata) { + type->clientdata = swig_module.type_initial[i]->clientdata; +#ifdef SWIGRUNTIME_DEBUG + printf("SWIG_InitializeModule: found and overwrite type %s \n", type->name); +#endif + } + } else { + type = swig_module.type_initial[i]; + } + + /* Insert casting types */ + cast = swig_module.cast_initial[i]; + while (cast->type) { + /* Don't need to add information already in the list */ + ret = 0; +#ifdef SWIGRUNTIME_DEBUG + printf("SWIG_InitializeModule: look cast %s\n", cast->type->name); +#endif + if (swig_module.next != &swig_module) { + ret = SWIG_MangledTypeQueryModule(swig_module.next, &swig_module, cast->type->name); +#ifdef SWIGRUNTIME_DEBUG + if (ret) printf("SWIG_InitializeModule: found cast %s\n", ret->name); +#endif + } + if (ret) { + if (type == swig_module.type_initial[i]) { +#ifdef SWIGRUNTIME_DEBUG + printf("SWIG_InitializeModule: skip old type %s\n", ret->name); +#endif + cast->type = ret; + ret = 0; + } else { + /* Check for casting already in the list */ + swig_cast_info *ocast = SWIG_TypeCheck(ret->name, type); +#ifdef SWIGRUNTIME_DEBUG + if (ocast) printf("SWIG_InitializeModule: skip old cast %s\n", ret->name); +#endif + if (!ocast) ret = 0; + } + } + + if (!ret) { +#ifdef SWIGRUNTIME_DEBUG + printf("SWIG_InitializeModule: adding cast %s\n", cast->type->name); +#endif + if (type->cast) { + type->cast->prev = cast; + cast->next = type->cast; + } + type->cast = cast; + } + cast++; + } + /* Set entry in modules->types array equal to the type */ + swig_module.types[i] = type; + } + swig_module.types[i] = 0; + +#ifdef SWIGRUNTIME_DEBUG + printf("**** SWIG_InitializeModule: Cast List ******\n"); + for (i = 0; i < swig_module.size; ++i) { + int j = 0; + swig_cast_info *cast = swig_module.cast_initial[i]; + printf("SWIG_InitializeModule: type %d %s\n", i, swig_module.type_initial[i]->name); + while (cast->type) { + printf("SWIG_InitializeModule: cast type %s\n", cast->type->name); + cast++; + ++j; + } + printf("---- Total casts: %d\n",j); + } + printf("**** SWIG_InitializeModule: Cast List ******\n"); +#endif +} + +/* This function will propagate the clientdata field of type to +* any new swig_type_info structures that have been added into the list +* of equivalent types. It is like calling +* SWIG_TypeClientData(type, clientdata) a second time. +*/ +SWIGRUNTIME void +SWIG_PropagateClientData(void) { + size_t i; + swig_cast_info *equiv; + static int init_run = 0; + + if (init_run) return; + init_run = 1; + + for (i = 0; i < swig_module.size; i++) { + if (swig_module.types[i]->clientdata) { + equiv = swig_module.types[i]->cast; + while (equiv) { + if (!equiv->converter) { + if (equiv->type && !equiv->type->clientdata) + SWIG_TypeClientData(equiv->type, swig_module.types[i]->clientdata); + } + equiv = equiv->next; + } + } + } +} + +#ifdef __cplusplus +#if 0 +{ + /* c-mode */ +#endif +} +#endif + + + +#ifdef __cplusplus +extern "C" { +#endif + + /* Python-specific SWIG API */ +#define SWIG_newvarlink() SWIG_Python_newvarlink() +#define SWIG_addvarlink(p, name, get_attr, set_attr) SWIG_Python_addvarlink(p, name, get_attr, set_attr) +#define SWIG_InstallConstants(d, constants) SWIG_Python_InstallConstants(d, constants) + + /* ----------------------------------------------------------------------------- + * global variable support code. + * ----------------------------------------------------------------------------- */ + + typedef struct swig_globalvar { + char *name; /* Name of global variable */ + PyObject *(*get_attr)(void); /* Return the current value */ + int (*set_attr)(PyObject *); /* Set the value */ + struct swig_globalvar *next; + } swig_globalvar; + + typedef struct swig_varlinkobject { + PyObject_HEAD + swig_globalvar *vars; + } swig_varlinkobject; + + SWIGINTERN PyObject * + swig_varlink_repr(swig_varlinkobject *SWIGUNUSEDPARM(v)) { + return PyString_FromString(""); + } + + SWIGINTERN PyObject * + swig_varlink_str(swig_varlinkobject *v) { + PyObject *str = PyString_FromString("("); + swig_globalvar *var; + for (var = v->vars; var; var=var->next) { + PyString_ConcatAndDel(&str,PyString_FromString(var->name)); + if (var->next) PyString_ConcatAndDel(&str,PyString_FromString(", ")); + } + PyString_ConcatAndDel(&str,PyString_FromString(")")); + return str; + } + + SWIGINTERN int + swig_varlink_print(swig_varlinkobject *v, FILE *fp, int SWIGUNUSEDPARM(flags)) { + PyObject *str = swig_varlink_str(v); + fprintf(fp,"Swig global variables "); + fprintf(fp,"%s\n", PyString_AsString(str)); + Py_DECREF(str); + return 0; + } + + SWIGINTERN void + swig_varlink_dealloc(swig_varlinkobject *v) { + swig_globalvar *var = v->vars; + while (var) { + swig_globalvar *n = var->next; + free(var->name); + free(var); + var = n; + } + } + + SWIGINTERN PyObject * + swig_varlink_getattr(swig_varlinkobject *v, char *n) { + PyObject *res = NULL; + swig_globalvar *var = v->vars; + while (var) { + if (strcmp(var->name,n) == 0) { + res = (*var->get_attr)(); + break; + } + var = var->next; + } + if (res == NULL && !PyErr_Occurred()) { + PyErr_SetString(PyExc_NameError,"Unknown C global variable"); + } + return res; + } + + SWIGINTERN int + swig_varlink_setattr(swig_varlinkobject *v, char *n, PyObject *p) { + int res = 1; + swig_globalvar *var = v->vars; + while (var) { + if (strcmp(var->name,n) == 0) { + res = (*var->set_attr)(p); + break; + } + var = var->next; + } + if (res == 1 && !PyErr_Occurred()) { + PyErr_SetString(PyExc_NameError,"Unknown C global variable"); + } + return res; + } + + SWIGINTERN PyTypeObject* + swig_varlink_type(void) { + static char varlink__doc__[] = "Swig var link object"; + static PyTypeObject varlink_type; + static int type_init = 0; + if (!type_init) { + const PyTypeObject tmp + = { + PyObject_HEAD_INIT(NULL) + 0, /* Number of items in variable part (ob_size) */ + (char *)"swigvarlink", /* Type name (tp_name) */ + sizeof(swig_varlinkobject), /* Basic size (tp_basicsize) */ + 0, /* Itemsize (tp_itemsize) */ + (destructor) swig_varlink_dealloc, /* Deallocator (tp_dealloc) */ + (printfunc) swig_varlink_print, /* Print (tp_print) */ + (getattrfunc) swig_varlink_getattr, /* get attr (tp_getattr) */ + (setattrfunc) swig_varlink_setattr, /* Set attr (tp_setattr) */ + 0, /* tp_compare */ + (reprfunc) swig_varlink_repr, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + 0, /* tp_hash */ + 0, /* tp_call */ + (reprfunc)swig_varlink_str, /* tp_str */ + 0, /* tp_getattro */ + 0, /* tp_setattro */ + 0, /* tp_as_buffer */ + 0, /* tp_flags */ + varlink__doc__, /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ +#if PY_VERSION_HEX >= 0x02020000 + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* tp_iter -> tp_weaklist */ +#endif +#if PY_VERSION_HEX >= 0x02030000 + 0, /* tp_del */ +#endif +#ifdef COUNT_ALLOCS + 0,0,0,0 /* tp_alloc -> tp_next */ +#endif + }; + varlink_type = tmp; + varlink_type.ob_type = &PyType_Type; + type_init = 1; + } + return &varlink_type; + } + + /* Create a variable linking object for use later */ + SWIGINTERN PyObject * + SWIG_Python_newvarlink(void) { + swig_varlinkobject *result = PyObject_NEW(swig_varlinkobject, swig_varlink_type()); + if (result) { + result->vars = 0; + } + return ((PyObject*) result); + } + + SWIGINTERN void + SWIG_Python_addvarlink(PyObject *p, char *name, PyObject *(*get_attr)(void), int (*set_attr)(PyObject *p)) { + swig_varlinkobject *v = (swig_varlinkobject *) p; + swig_globalvar *gv = (swig_globalvar *) malloc(sizeof(swig_globalvar)); + if (gv) { + size_t size = strlen(name)+1; + gv->name = (char *)malloc(size); + if (gv->name) { + strncpy(gv->name,name,size); + gv->get_attr = get_attr; + gv->set_attr = set_attr; + gv->next = v->vars; + } + } + v->vars = gv; + } + + SWIGINTERN PyObject * + SWIG_globals() { + static PyObject *_SWIG_globals = 0; + if (!_SWIG_globals) _SWIG_globals = SWIG_newvarlink(); + return _SWIG_globals; + } + + /* ----------------------------------------------------------------------------- + * constants/methods manipulation + * ----------------------------------------------------------------------------- */ + + /* Install Constants */ + SWIGINTERN void + SWIG_Python_InstallConstants(PyObject *d, swig_const_info constants[]) { + PyObject *obj = 0; + size_t i; + for (i = 0; constants[i].type; ++i) { + switch(constants[i].type) { + case SWIG_PY_POINTER: + obj = SWIG_NewPointerObj(constants[i].pvalue, *(constants[i]).ptype,0); + break; + case SWIG_PY_BINARY: + obj = SWIG_NewPackedObj(constants[i].pvalue, constants[i].lvalue, *(constants[i].ptype)); + break; + default: + obj = 0; + break; + } + if (obj) { + PyDict_SetItemString(d, constants[i].name, obj); + Py_DECREF(obj); + } + } + } + + /* -----------------------------------------------------------------------------*/ + /* Fix SwigMethods to carry the callback ptrs when needed */ + /* -----------------------------------------------------------------------------*/ + + SWIGINTERN void + SWIG_Python_FixMethods(PyMethodDef *methods, + swig_const_info *const_table, + swig_type_info **types, + swig_type_info **types_initial) { + size_t i; + for (i = 0; methods[i].ml_name; ++i) { + char *c = methods[i].ml_doc; + if (c && (c = strstr(c, "swig_ptr: "))) { + int j; + swig_const_info *ci = 0; + char *name = c + 10; + for (j = 0; const_table[j].type; ++j) { + if (strncmp(const_table[j].name, name, + strlen(const_table[j].name)) == 0) { + ci = &(const_table[j]); + break; + } + } + if (ci) { + size_t shift = (ci->ptype) - types; + swig_type_info *ty = types_initial[shift]; + size_t ldoc = (c - methods[i].ml_doc); + size_t lptr = strlen(ty->name)+2*sizeof(void*)+2; + char *ndoc = (char*)malloc(ldoc + lptr + 10); + if (ndoc) { + char *buff = ndoc; + void *ptr = (ci->type == SWIG_PY_POINTER) ? ci->pvalue : 0; + if (ptr) { + strncpy(buff, methods[i].ml_doc, ldoc); + buff += ldoc; + strncpy(buff, "swig_ptr: ", 10); + buff += 10; + SWIG_PackVoidPtr(buff, ptr, ty->name, lptr); + methods[i].ml_doc = ndoc; + } + } + } + } + } + } + +#ifdef __cplusplus +} +#endif + +/* -----------------------------------------------------------------------------* + * Partial Init method + * -----------------------------------------------------------------------------*/ + +#ifdef __cplusplus +extern "C" +#endif +SWIGEXPORT void SWIG_init(void) { + PyObject *m, *d; + + /* Fix SwigMethods to carry the callback ptrs when needed */ + SWIG_Python_FixMethods(SwigMethods, swig_const_table, swig_types, swig_type_initial); + + m = Py_InitModule((char *) SWIG_name, SwigMethods); + d = PyModule_GetDict(m); + + SWIG_InitializeModule(0); + SWIG_InstallConstants(d,swig_const_table); + + + SWIG_Python_SetConstant(d, "H5PART_READ",SWIG_From_int((int)(0x01))); + SWIG_Python_SetConstant(d, "H5PART_WRITE",SWIG_From_int((int)(0x02))); + SWIG_Python_SetConstant(d, "H5PART_APPEND",SWIG_From_int((int)(0x03))); + SWIG_Python_SetConstant(d, "H5_CONVERT_DENORMAL_FLOAT",SWIG_From_int((int)(1))); + SWIG_Python_SetConstant(d, "H5_DEV_T_IS_SCALAR",SWIG_From_int((int)(1))); + SWIG_Python_SetConstant(d, "H5_GETTIMEOFDAY_GIVES_TZ",SWIG_From_int((int)(1))); + SWIG_Python_SetConstant(d, "H5_HAVE_ALARM",SWIG_From_int((int)(1))); + SWIG_Python_SetConstant(d, "H5_HAVE_ATTRIBUTE",SWIG_From_int((int)(1))); + SWIG_Python_SetConstant(d, "H5_HAVE_DIFFTIME",SWIG_From_int((int)(1))); + SWIG_Python_SetConstant(d, "H5_HAVE_DLFCN_H",SWIG_From_int((int)(1))); + SWIG_Python_SetConstant(d, "H5_HAVE_FEATURES_H",SWIG_From_int((int)(1))); + SWIG_Python_SetConstant(d, "H5_HAVE_FILTER_DEFLATE",SWIG_From_int((int)(1))); + SWIG_Python_SetConstant(d, "H5_HAVE_FILTER_FLETCHER32",SWIG_From_int((int)(1))); + SWIG_Python_SetConstant(d, "H5_HAVE_FILTER_SHUFFLE",SWIG_From_int((int)(1))); + SWIG_Python_SetConstant(d, "H5_HAVE_FORK",SWIG_From_int((int)(1))); + SWIG_Python_SetConstant(d, "H5_HAVE_FREXPF",SWIG_From_int((int)(1))); + SWIG_Python_SetConstant(d, "H5_HAVE_FREXPL",SWIG_From_int((int)(1))); + SWIG_Python_SetConstant(d, "H5_HAVE_FUNCTION",SWIG_From_int((int)(1))); + SWIG_Python_SetConstant(d, "H5_HAVE_GETHOSTNAME",SWIG_From_int((int)(1))); + SWIG_Python_SetConstant(d, "H5_HAVE_GETPWUID",SWIG_From_int((int)(1))); + SWIG_Python_SetConstant(d, "H5_HAVE_GETRUSAGE",SWIG_From_int((int)(1))); + SWIG_Python_SetConstant(d, "H5_HAVE_GETTIMEOFDAY",SWIG_From_int((int)(1))); + SWIG_Python_SetConstant(d, "H5_HAVE_INTTYPES_H",SWIG_From_int((int)(1))); + SWIG_Python_SetConstant(d, "H5_HAVE_IOCTL",SWIG_From_int((int)(1))); + SWIG_Python_SetConstant(d, "H5_HAVE_LARGE_HSIZET",SWIG_From_int((int)(1))); + SWIG_Python_SetConstant(d, "H5_HAVE_LIBM",SWIG_From_int((int)(1))); + SWIG_Python_SetConstant(d, "H5_HAVE_LIBZ",SWIG_From_int((int)(1))); + SWIG_Python_SetConstant(d, "H5_HAVE_LONGJMP",SWIG_From_int((int)(1))); + SWIG_Python_SetConstant(d, "H5_HAVE_LSEEK64",SWIG_From_int((int)(1))); + SWIG_Python_SetConstant(d, "H5_HAVE_MEMORY_H",SWIG_From_int((int)(1))); + SWIG_Python_SetConstant(d, "H5_HAVE_NETINET_IN_H",SWIG_From_int((int)(1))); + SWIG_Python_SetConstant(d, "H5_HAVE_NETINET_TCP_H",SWIG_From_int((int)(1))); + SWIG_Python_SetConstant(d, "H5_HAVE_SETJMP_H",SWIG_From_int((int)(1))); + SWIG_Python_SetConstant(d, "H5_HAVE_SIGACTION",SWIG_From_int((int)(1))); + SWIG_Python_SetConstant(d, "H5_HAVE_SIGNAL",SWIG_From_int((int)(1))); + SWIG_Python_SetConstant(d, "H5_HAVE_SNPRINTF",SWIG_From_int((int)(1))); + SWIG_Python_SetConstant(d, "H5_HAVE_SOCKLEN_T",SWIG_From_int((int)(1))); + SWIG_Python_SetConstant(d, "H5_HAVE_STAT_ST_BLOCKS",SWIG_From_int((int)(1))); + SWIG_Python_SetConstant(d, "H5_HAVE_STDDEF_H",SWIG_From_int((int)(1))); + SWIG_Python_SetConstant(d, "H5_HAVE_STDINT_H",SWIG_From_int((int)(1))); + SWIG_Python_SetConstant(d, "H5_HAVE_STDLIB_H",SWIG_From_int((int)(1))); + SWIG_Python_SetConstant(d, "H5_HAVE_STRDUP",SWIG_From_int((int)(1))); + SWIG_Python_SetConstant(d, "H5_HAVE_STREAM",SWIG_From_int((int)(1))); + SWIG_Python_SetConstant(d, "H5_HAVE_STRINGS_H",SWIG_From_int((int)(1))); + SWIG_Python_SetConstant(d, "H5_HAVE_STRING_H",SWIG_From_int((int)(1))); + SWIG_Python_SetConstant(d, "H5_HAVE_STRUCT_TIMEZONE",SWIG_From_int((int)(1))); + SWIG_Python_SetConstant(d, "H5_HAVE_STRUCT_TM_TM_ZONE",SWIG_From_int((int)(1))); + SWIG_Python_SetConstant(d, "H5_HAVE_SYSTEM",SWIG_From_int((int)(1))); + SWIG_Python_SetConstant(d, "H5_HAVE_SYS_IOCTL_H",SWIG_From_int((int)(1))); + SWIG_Python_SetConstant(d, "H5_HAVE_SYS_RESOURCE_H",SWIG_From_int((int)(1))); + SWIG_Python_SetConstant(d, "H5_HAVE_SYS_SOCKET_H",SWIG_From_int((int)(1))); + SWIG_Python_SetConstant(d, "H5_HAVE_SYS_STAT_H",SWIG_From_int((int)(1))); + SWIG_Python_SetConstant(d, "H5_HAVE_SYS_TIMEB_H",SWIG_From_int((int)(1))); + SWIG_Python_SetConstant(d, "H5_HAVE_SYS_TIME_H",SWIG_From_int((int)(1))); + SWIG_Python_SetConstant(d, "H5_HAVE_SYS_TYPES_H",SWIG_From_int((int)(1))); + SWIG_Python_SetConstant(d, "H5_HAVE_TIOCGETD",SWIG_From_int((int)(1))); + SWIG_Python_SetConstant(d, "H5_HAVE_TIOCGWINSZ",SWIG_From_int((int)(1))); + SWIG_Python_SetConstant(d, "H5_HAVE_TM_GMTOFF",SWIG_From_int((int)(1))); + SWIG_Python_SetConstant(d, "H5_HAVE_TM_ZONE",SWIG_From_int((int)(1))); + SWIG_Python_SetConstant(d, "H5_HAVE_UNISTD_H",SWIG_From_int((int)(1))); + SWIG_Python_SetConstant(d, "H5_HAVE_VSNPRINTF",SWIG_From_int((int)(1))); + SWIG_Python_SetConstant(d, "H5_HAVE_WAITPID",SWIG_From_int((int)(1))); + SWIG_Python_SetConstant(d, "H5_HAVE_ZLIB_H",SWIG_From_int((int)(1))); + SWIG_Python_SetConstant(d, "H5_PACKAGE_BUGREPORT",SWIG_FromCharPtr("hdfhelp@ncsa.uiuc.edu")); + SWIG_Python_SetConstant(d, "H5_PACKAGE_NAME",SWIG_FromCharPtr("HDF5")); + SWIG_Python_SetConstant(d, "H5_PACKAGE_STRING",SWIG_FromCharPtr("HDF5 1.6.5")); + SWIG_Python_SetConstant(d, "H5_PACKAGE_TARNAME",SWIG_FromCharPtr("hdf5")); + SWIG_Python_SetConstant(d, "H5_PACKAGE_VERSION",SWIG_FromCharPtr("1.6.5")); + SWIG_Python_SetConstant(d, "H5_PRINTF_LL_WIDTH",SWIG_FromCharPtr("l")); + SWIG_Python_SetConstant(d, "H5_SIZEOF_CHAR",SWIG_From_int((int)(1))); + SWIG_Python_SetConstant(d, "H5_SIZEOF_DOUBLE",SWIG_From_int((int)(8))); + SWIG_Python_SetConstant(d, "H5_SIZEOF_FLOAT",SWIG_From_int((int)(4))); + SWIG_Python_SetConstant(d, "H5_SIZEOF_INT",SWIG_From_int((int)(4))); + SWIG_Python_SetConstant(d, "H5_SIZEOF_INT16_T",SWIG_From_int((int)(2))); + SWIG_Python_SetConstant(d, "H5_SIZEOF_INT32_T",SWIG_From_int((int)(4))); + SWIG_Python_SetConstant(d, "H5_SIZEOF_INT64_T",SWIG_From_int((int)(8))); + SWIG_Python_SetConstant(d, "H5_SIZEOF_INT8_T",SWIG_From_int((int)(1))); + SWIG_Python_SetConstant(d, "H5_SIZEOF_INT_FAST16_T",SWIG_From_int((int)(8))); + SWIG_Python_SetConstant(d, "H5_SIZEOF_INT_FAST32_T",SWIG_From_int((int)(8))); + SWIG_Python_SetConstant(d, "H5_SIZEOF_INT_FAST64_T",SWIG_From_int((int)(8))); + SWIG_Python_SetConstant(d, "H5_SIZEOF_INT_FAST8_T",SWIG_From_int((int)(1))); + SWIG_Python_SetConstant(d, "H5_SIZEOF_INT_LEAST16_T",SWIG_From_int((int)(2))); + SWIG_Python_SetConstant(d, "H5_SIZEOF_INT_LEAST32_T",SWIG_From_int((int)(4))); + SWIG_Python_SetConstant(d, "H5_SIZEOF_INT_LEAST64_T",SWIG_From_int((int)(8))); + SWIG_Python_SetConstant(d, "H5_SIZEOF_INT_LEAST8_T",SWIG_From_int((int)(1))); + SWIG_Python_SetConstant(d, "H5_SIZEOF_LONG",SWIG_From_int((int)(8))); + SWIG_Python_SetConstant(d, "H5_SIZEOF_LONG_DOUBLE",SWIG_From_int((int)(16))); + SWIG_Python_SetConstant(d, "H5_SIZEOF_LONG_LONG",SWIG_From_int((int)(8))); + SWIG_Python_SetConstant(d, "H5_SIZEOF_OFF_T",SWIG_From_int((int)(8))); + SWIG_Python_SetConstant(d, "H5_SIZEOF_SHORT",SWIG_From_int((int)(2))); + SWIG_Python_SetConstant(d, "H5_SIZEOF_SIZE_T",SWIG_From_int((int)(8))); + SWIG_Python_SetConstant(d, "H5_SIZEOF_SSIZE_T",SWIG_From_int((int)(8))); + SWIG_Python_SetConstant(d, "H5_SIZEOF_UINT16_T",SWIG_From_int((int)(2))); + SWIG_Python_SetConstant(d, "H5_SIZEOF_UINT32_T",SWIG_From_int((int)(4))); + SWIG_Python_SetConstant(d, "H5_SIZEOF_UINT64_T",SWIG_From_int((int)(8))); + SWIG_Python_SetConstant(d, "H5_SIZEOF_UINT8_T",SWIG_From_int((int)(1))); + SWIG_Python_SetConstant(d, "H5_SIZEOF_UINT_FAST16_T",SWIG_From_int((int)(8))); + SWIG_Python_SetConstant(d, "H5_SIZEOF_UINT_FAST32_T",SWIG_From_int((int)(8))); + SWIG_Python_SetConstant(d, "H5_SIZEOF_UINT_FAST64_T",SWIG_From_int((int)(8))); + SWIG_Python_SetConstant(d, "H5_SIZEOF_UINT_FAST8_T",SWIG_From_int((int)(1))); + SWIG_Python_SetConstant(d, "H5_SIZEOF_UINT_LEAST16_T",SWIG_From_int((int)(2))); + SWIG_Python_SetConstant(d, "H5_SIZEOF_UINT_LEAST32_T",SWIG_From_int((int)(4))); + SWIG_Python_SetConstant(d, "H5_SIZEOF_UINT_LEAST64_T",SWIG_From_int((int)(8))); + SWIG_Python_SetConstant(d, "H5_SIZEOF_UINT_LEAST8_T",SWIG_From_int((int)(1))); + SWIG_Python_SetConstant(d, "H5_SIZEOF___INT64",SWIG_From_int((int)(0))); + SWIG_Python_SetConstant(d, "H5_STDC_HEADERS",SWIG_From_int((int)(1))); + SWIG_Python_SetConstant(d, "H5_SYSTEM_SCOPE_THREADS",SWIG_From_int((int)(1))); + SWIG_Python_SetConstant(d, "H5_TIME_WITH_SYS_TIME",SWIG_From_int((int)(1))); + SWIG_Python_SetConstant(d, "H5T_NO_CLASS",SWIG_From_int((int)(H5T_NO_CLASS))); + SWIG_Python_SetConstant(d, "H5T_INTEGER",SWIG_From_int((int)(H5T_INTEGER))); + SWIG_Python_SetConstant(d, "H5T_FLOAT",SWIG_From_int((int)(H5T_FLOAT))); + SWIG_Python_SetConstant(d, "H5T_TIME",SWIG_From_int((int)(H5T_TIME))); + SWIG_Python_SetConstant(d, "H5T_STRING",SWIG_From_int((int)(H5T_STRING))); + SWIG_Python_SetConstant(d, "H5T_BITFIELD",SWIG_From_int((int)(H5T_BITFIELD))); + SWIG_Python_SetConstant(d, "H5T_OPAQUE",SWIG_From_int((int)(H5T_OPAQUE))); + SWIG_Python_SetConstant(d, "H5T_COMPOUND",SWIG_From_int((int)(H5T_COMPOUND))); + SWIG_Python_SetConstant(d, "H5T_REFERENCE",SWIG_From_int((int)(H5T_REFERENCE))); + SWIG_Python_SetConstant(d, "H5T_ENUM",SWIG_From_int((int)(H5T_ENUM))); + SWIG_Python_SetConstant(d, "H5T_VLEN",SWIG_From_int((int)(H5T_VLEN))); + SWIG_Python_SetConstant(d, "H5T_ARRAY",SWIG_From_int((int)(H5T_ARRAY))); + SWIG_Python_SetConstant(d, "H5T_NCLASSES",SWIG_From_int((int)(H5T_NCLASSES))); + SWIG_Python_SetConstant(d, "H5T_ORDER_ERROR",SWIG_From_int((int)(H5T_ORDER_ERROR))); + SWIG_Python_SetConstant(d, "H5T_ORDER_LE",SWIG_From_int((int)(H5T_ORDER_LE))); + SWIG_Python_SetConstant(d, "H5T_ORDER_BE",SWIG_From_int((int)(H5T_ORDER_BE))); + SWIG_Python_SetConstant(d, "H5T_ORDER_VAX",SWIG_From_int((int)(H5T_ORDER_VAX))); + SWIG_Python_SetConstant(d, "H5T_ORDER_NONE",SWIG_From_int((int)(H5T_ORDER_NONE))); + SWIG_Python_SetConstant(d, "H5T_SGN_ERROR",SWIG_From_int((int)(H5T_SGN_ERROR))); + SWIG_Python_SetConstant(d, "H5T_SGN_NONE",SWIG_From_int((int)(H5T_SGN_NONE))); + SWIG_Python_SetConstant(d, "H5T_SGN_2",SWIG_From_int((int)(H5T_SGN_2))); + SWIG_Python_SetConstant(d, "H5T_NSGN",SWIG_From_int((int)(H5T_NSGN))); + SWIG_Python_SetConstant(d, "H5T_NORM_ERROR",SWIG_From_int((int)(H5T_NORM_ERROR))); + SWIG_Python_SetConstant(d, "H5T_NORM_IMPLIED",SWIG_From_int((int)(H5T_NORM_IMPLIED))); + SWIG_Python_SetConstant(d, "H5T_NORM_MSBSET",SWIG_From_int((int)(H5T_NORM_MSBSET))); + SWIG_Python_SetConstant(d, "H5T_NORM_NONE",SWIG_From_int((int)(H5T_NORM_NONE))); + SWIG_Python_SetConstant(d, "H5T_CSET_ERROR",SWIG_From_int((int)(H5T_CSET_ERROR))); + SWIG_Python_SetConstant(d, "H5T_CSET_ASCII",SWIG_From_int((int)(H5T_CSET_ASCII))); + SWIG_Python_SetConstant(d, "H5T_CSET_RESERVED_1",SWIG_From_int((int)(H5T_CSET_RESERVED_1))); + SWIG_Python_SetConstant(d, "H5T_CSET_RESERVED_2",SWIG_From_int((int)(H5T_CSET_RESERVED_2))); + SWIG_Python_SetConstant(d, "H5T_CSET_RESERVED_3",SWIG_From_int((int)(H5T_CSET_RESERVED_3))); + SWIG_Python_SetConstant(d, "H5T_CSET_RESERVED_4",SWIG_From_int((int)(H5T_CSET_RESERVED_4))); + SWIG_Python_SetConstant(d, "H5T_CSET_RESERVED_5",SWIG_From_int((int)(H5T_CSET_RESERVED_5))); + SWIG_Python_SetConstant(d, "H5T_CSET_RESERVED_6",SWIG_From_int((int)(H5T_CSET_RESERVED_6))); + SWIG_Python_SetConstant(d, "H5T_CSET_RESERVED_7",SWIG_From_int((int)(H5T_CSET_RESERVED_7))); + SWIG_Python_SetConstant(d, "H5T_CSET_RESERVED_8",SWIG_From_int((int)(H5T_CSET_RESERVED_8))); + SWIG_Python_SetConstant(d, "H5T_CSET_RESERVED_9",SWIG_From_int((int)(H5T_CSET_RESERVED_9))); + SWIG_Python_SetConstant(d, "H5T_CSET_RESERVED_10",SWIG_From_int((int)(H5T_CSET_RESERVED_10))); + SWIG_Python_SetConstant(d, "H5T_CSET_RESERVED_11",SWIG_From_int((int)(H5T_CSET_RESERVED_11))); + SWIG_Python_SetConstant(d, "H5T_CSET_RESERVED_12",SWIG_From_int((int)(H5T_CSET_RESERVED_12))); + SWIG_Python_SetConstant(d, "H5T_CSET_RESERVED_13",SWIG_From_int((int)(H5T_CSET_RESERVED_13))); + SWIG_Python_SetConstant(d, "H5T_CSET_RESERVED_14",SWIG_From_int((int)(H5T_CSET_RESERVED_14))); + SWIG_Python_SetConstant(d, "H5T_CSET_RESERVED_15",SWIG_From_int((int)(H5T_CSET_RESERVED_15))); + SWIG_Python_SetConstant(d, "H5T_STR_ERROR",SWIG_From_int((int)(H5T_STR_ERROR))); + SWIG_Python_SetConstant(d, "H5T_STR_NULLTERM",SWIG_From_int((int)(H5T_STR_NULLTERM))); + SWIG_Python_SetConstant(d, "H5T_STR_NULLPAD",SWIG_From_int((int)(H5T_STR_NULLPAD))); + SWIG_Python_SetConstant(d, "H5T_STR_SPACEPAD",SWIG_From_int((int)(H5T_STR_SPACEPAD))); + SWIG_Python_SetConstant(d, "H5T_STR_RESERVED_3",SWIG_From_int((int)(H5T_STR_RESERVED_3))); + SWIG_Python_SetConstant(d, "H5T_STR_RESERVED_4",SWIG_From_int((int)(H5T_STR_RESERVED_4))); + SWIG_Python_SetConstant(d, "H5T_STR_RESERVED_5",SWIG_From_int((int)(H5T_STR_RESERVED_5))); + SWIG_Python_SetConstant(d, "H5T_STR_RESERVED_6",SWIG_From_int((int)(H5T_STR_RESERVED_6))); + SWIG_Python_SetConstant(d, "H5T_STR_RESERVED_7",SWIG_From_int((int)(H5T_STR_RESERVED_7))); + SWIG_Python_SetConstant(d, "H5T_STR_RESERVED_8",SWIG_From_int((int)(H5T_STR_RESERVED_8))); + SWIG_Python_SetConstant(d, "H5T_STR_RESERVED_9",SWIG_From_int((int)(H5T_STR_RESERVED_9))); + SWIG_Python_SetConstant(d, "H5T_STR_RESERVED_10",SWIG_From_int((int)(H5T_STR_RESERVED_10))); + SWIG_Python_SetConstant(d, "H5T_STR_RESERVED_11",SWIG_From_int((int)(H5T_STR_RESERVED_11))); + SWIG_Python_SetConstant(d, "H5T_STR_RESERVED_12",SWIG_From_int((int)(H5T_STR_RESERVED_12))); + SWIG_Python_SetConstant(d, "H5T_STR_RESERVED_13",SWIG_From_int((int)(H5T_STR_RESERVED_13))); + SWIG_Python_SetConstant(d, "H5T_STR_RESERVED_14",SWIG_From_int((int)(H5T_STR_RESERVED_14))); + SWIG_Python_SetConstant(d, "H5T_STR_RESERVED_15",SWIG_From_int((int)(H5T_STR_RESERVED_15))); + SWIG_Python_SetConstant(d, "H5T_PAD_ERROR",SWIG_From_int((int)(H5T_PAD_ERROR))); + SWIG_Python_SetConstant(d, "H5T_PAD_ZERO",SWIG_From_int((int)(H5T_PAD_ZERO))); + SWIG_Python_SetConstant(d, "H5T_PAD_ONE",SWIG_From_int((int)(H5T_PAD_ONE))); + SWIG_Python_SetConstant(d, "H5T_PAD_BACKGROUND",SWIG_From_int((int)(H5T_PAD_BACKGROUND))); + SWIG_Python_SetConstant(d, "H5T_NPAD",SWIG_From_int((int)(H5T_NPAD))); + SWIG_Python_SetConstant(d, "H5T_CONV_INIT",SWIG_From_int((int)(H5T_CONV_INIT))); + SWIG_Python_SetConstant(d, "H5T_CONV_CONV",SWIG_From_int((int)(H5T_CONV_CONV))); + SWIG_Python_SetConstant(d, "H5T_CONV_FREE",SWIG_From_int((int)(H5T_CONV_FREE))); + SWIG_Python_SetConstant(d, "H5T_BKG_NO",SWIG_From_int((int)(H5T_BKG_NO))); + SWIG_Python_SetConstant(d, "H5T_BKG_TEMP",SWIG_From_int((int)(H5T_BKG_TEMP))); + SWIG_Python_SetConstant(d, "H5T_BKG_YES",SWIG_From_int((int)(H5T_BKG_YES))); + SWIG_Python_SetConstant(d, "H5T_PERS_DONTCARE",SWIG_From_int((int)(H5T_PERS_DONTCARE))); + SWIG_Python_SetConstant(d, "H5T_PERS_HARD",SWIG_From_int((int)(H5T_PERS_HARD))); + SWIG_Python_SetConstant(d, "H5T_PERS_SOFT",SWIG_From_int((int)(H5T_PERS_SOFT))); + SWIG_Python_SetConstant(d, "H5T_DIR_DEFAULT",SWIG_From_int((int)(H5T_DIR_DEFAULT))); + SWIG_Python_SetConstant(d, "H5T_DIR_ASCEND",SWIG_From_int((int)(H5T_DIR_ASCEND))); + SWIG_Python_SetConstant(d, "H5T_DIR_DESCEND",SWIG_From_int((int)(H5T_DIR_DESCEND))); + SWIG_Python_SetConstant(d, "H5T_OPAQUE_TAG_MAX",SWIG_From_int((int)(256))); + PyDict_SetItemString(d,(char*)"cvar", SWIG_globals()); + SWIG_addvarlink(SWIG_globals(),(char*)"H5T_IEEE_F32BE_g",H5T_IEEE_F32BE_g_get, H5T_IEEE_F32BE_g_set); + SWIG_addvarlink(SWIG_globals(),(char*)"H5T_IEEE_F32LE_g",H5T_IEEE_F32LE_g_get, H5T_IEEE_F32LE_g_set); + SWIG_addvarlink(SWIG_globals(),(char*)"H5T_IEEE_F64BE_g",H5T_IEEE_F64BE_g_get, H5T_IEEE_F64BE_g_set); + SWIG_addvarlink(SWIG_globals(),(char*)"H5T_IEEE_F64LE_g",H5T_IEEE_F64LE_g_get, H5T_IEEE_F64LE_g_set); + SWIG_addvarlink(SWIG_globals(),(char*)"H5T_STD_I8BE_g",H5T_STD_I8BE_g_get, H5T_STD_I8BE_g_set); + SWIG_addvarlink(SWIG_globals(),(char*)"H5T_STD_I8LE_g",H5T_STD_I8LE_g_get, H5T_STD_I8LE_g_set); + SWIG_addvarlink(SWIG_globals(),(char*)"H5T_STD_I16BE_g",H5T_STD_I16BE_g_get, H5T_STD_I16BE_g_set); + SWIG_addvarlink(SWIG_globals(),(char*)"H5T_STD_I16LE_g",H5T_STD_I16LE_g_get, H5T_STD_I16LE_g_set); + SWIG_addvarlink(SWIG_globals(),(char*)"H5T_STD_I32BE_g",H5T_STD_I32BE_g_get, H5T_STD_I32BE_g_set); + SWIG_addvarlink(SWIG_globals(),(char*)"H5T_STD_I32LE_g",H5T_STD_I32LE_g_get, H5T_STD_I32LE_g_set); + SWIG_addvarlink(SWIG_globals(),(char*)"H5T_STD_I64BE_g",H5T_STD_I64BE_g_get, H5T_STD_I64BE_g_set); + SWIG_addvarlink(SWIG_globals(),(char*)"H5T_STD_I64LE_g",H5T_STD_I64LE_g_get, H5T_STD_I64LE_g_set); + SWIG_addvarlink(SWIG_globals(),(char*)"H5T_STD_U8BE_g",H5T_STD_U8BE_g_get, H5T_STD_U8BE_g_set); + SWIG_addvarlink(SWIG_globals(),(char*)"H5T_STD_U8LE_g",H5T_STD_U8LE_g_get, H5T_STD_U8LE_g_set); + SWIG_addvarlink(SWIG_globals(),(char*)"H5T_STD_U16BE_g",H5T_STD_U16BE_g_get, H5T_STD_U16BE_g_set); + SWIG_addvarlink(SWIG_globals(),(char*)"H5T_STD_U16LE_g",H5T_STD_U16LE_g_get, H5T_STD_U16LE_g_set); + SWIG_addvarlink(SWIG_globals(),(char*)"H5T_STD_U32BE_g",H5T_STD_U32BE_g_get, H5T_STD_U32BE_g_set); + SWIG_addvarlink(SWIG_globals(),(char*)"H5T_STD_U32LE_g",H5T_STD_U32LE_g_get, H5T_STD_U32LE_g_set); + SWIG_addvarlink(SWIG_globals(),(char*)"H5T_STD_U64BE_g",H5T_STD_U64BE_g_get, H5T_STD_U64BE_g_set); + SWIG_addvarlink(SWIG_globals(),(char*)"H5T_STD_U64LE_g",H5T_STD_U64LE_g_get, H5T_STD_U64LE_g_set); + SWIG_addvarlink(SWIG_globals(),(char*)"H5T_STD_B8BE_g",H5T_STD_B8BE_g_get, H5T_STD_B8BE_g_set); + SWIG_addvarlink(SWIG_globals(),(char*)"H5T_STD_B8LE_g",H5T_STD_B8LE_g_get, H5T_STD_B8LE_g_set); + SWIG_addvarlink(SWIG_globals(),(char*)"H5T_STD_B16BE_g",H5T_STD_B16BE_g_get, H5T_STD_B16BE_g_set); + SWIG_addvarlink(SWIG_globals(),(char*)"H5T_STD_B16LE_g",H5T_STD_B16LE_g_get, H5T_STD_B16LE_g_set); + SWIG_addvarlink(SWIG_globals(),(char*)"H5T_STD_B32BE_g",H5T_STD_B32BE_g_get, H5T_STD_B32BE_g_set); + SWIG_addvarlink(SWIG_globals(),(char*)"H5T_STD_B32LE_g",H5T_STD_B32LE_g_get, H5T_STD_B32LE_g_set); + SWIG_addvarlink(SWIG_globals(),(char*)"H5T_STD_B64BE_g",H5T_STD_B64BE_g_get, H5T_STD_B64BE_g_set); + SWIG_addvarlink(SWIG_globals(),(char*)"H5T_STD_B64LE_g",H5T_STD_B64LE_g_get, H5T_STD_B64LE_g_set); + SWIG_addvarlink(SWIG_globals(),(char*)"H5T_STD_REF_OBJ_g",H5T_STD_REF_OBJ_g_get, H5T_STD_REF_OBJ_g_set); + SWIG_addvarlink(SWIG_globals(),(char*)"H5T_STD_REF_DSETREG_g",H5T_STD_REF_DSETREG_g_get, H5T_STD_REF_DSETREG_g_set); + SWIG_addvarlink(SWIG_globals(),(char*)"H5T_UNIX_D32BE_g",H5T_UNIX_D32BE_g_get, H5T_UNIX_D32BE_g_set); + SWIG_addvarlink(SWIG_globals(),(char*)"H5T_UNIX_D32LE_g",H5T_UNIX_D32LE_g_get, H5T_UNIX_D32LE_g_set); + SWIG_addvarlink(SWIG_globals(),(char*)"H5T_UNIX_D64BE_g",H5T_UNIX_D64BE_g_get, H5T_UNIX_D64BE_g_set); + SWIG_addvarlink(SWIG_globals(),(char*)"H5T_UNIX_D64LE_g",H5T_UNIX_D64LE_g_get, H5T_UNIX_D64LE_g_set); + SWIG_addvarlink(SWIG_globals(),(char*)"H5T_C_S1_g",H5T_C_S1_g_get, H5T_C_S1_g_set); + SWIG_addvarlink(SWIG_globals(),(char*)"H5T_FORTRAN_S1_g",H5T_FORTRAN_S1_g_get, H5T_FORTRAN_S1_g_set); + SWIG_addvarlink(SWIG_globals(),(char*)"H5T_NATIVE_SCHAR_g",H5T_NATIVE_SCHAR_g_get, H5T_NATIVE_SCHAR_g_set); + SWIG_addvarlink(SWIG_globals(),(char*)"H5T_NATIVE_UCHAR_g",H5T_NATIVE_UCHAR_g_get, H5T_NATIVE_UCHAR_g_set); + SWIG_addvarlink(SWIG_globals(),(char*)"H5T_NATIVE_SHORT_g",H5T_NATIVE_SHORT_g_get, H5T_NATIVE_SHORT_g_set); + SWIG_addvarlink(SWIG_globals(),(char*)"H5T_NATIVE_USHORT_g",H5T_NATIVE_USHORT_g_get, H5T_NATIVE_USHORT_g_set); + SWIG_addvarlink(SWIG_globals(),(char*)"H5T_NATIVE_INT_g",H5T_NATIVE_INT_g_get, H5T_NATIVE_INT_g_set); + SWIG_addvarlink(SWIG_globals(),(char*)"H5T_NATIVE_UINT_g",H5T_NATIVE_UINT_g_get, H5T_NATIVE_UINT_g_set); + SWIG_addvarlink(SWIG_globals(),(char*)"H5T_NATIVE_LONG_g",H5T_NATIVE_LONG_g_get, H5T_NATIVE_LONG_g_set); + SWIG_addvarlink(SWIG_globals(),(char*)"H5T_NATIVE_ULONG_g",H5T_NATIVE_ULONG_g_get, H5T_NATIVE_ULONG_g_set); + SWIG_addvarlink(SWIG_globals(),(char*)"H5T_NATIVE_LLONG_g",H5T_NATIVE_LLONG_g_get, H5T_NATIVE_LLONG_g_set); + SWIG_addvarlink(SWIG_globals(),(char*)"H5T_NATIVE_ULLONG_g",H5T_NATIVE_ULLONG_g_get, H5T_NATIVE_ULLONG_g_set); + SWIG_addvarlink(SWIG_globals(),(char*)"H5T_NATIVE_FLOAT_g",H5T_NATIVE_FLOAT_g_get, H5T_NATIVE_FLOAT_g_set); + SWIG_addvarlink(SWIG_globals(),(char*)"H5T_NATIVE_DOUBLE_g",H5T_NATIVE_DOUBLE_g_get, H5T_NATIVE_DOUBLE_g_set); + SWIG_addvarlink(SWIG_globals(),(char*)"H5T_NATIVE_LDOUBLE_g",H5T_NATIVE_LDOUBLE_g_get, H5T_NATIVE_LDOUBLE_g_set); + SWIG_addvarlink(SWIG_globals(),(char*)"H5T_NATIVE_B8_g",H5T_NATIVE_B8_g_get, H5T_NATIVE_B8_g_set); + SWIG_addvarlink(SWIG_globals(),(char*)"H5T_NATIVE_B16_g",H5T_NATIVE_B16_g_get, H5T_NATIVE_B16_g_set); + SWIG_addvarlink(SWIG_globals(),(char*)"H5T_NATIVE_B32_g",H5T_NATIVE_B32_g_get, H5T_NATIVE_B32_g_set); + SWIG_addvarlink(SWIG_globals(),(char*)"H5T_NATIVE_B64_g",H5T_NATIVE_B64_g_get, H5T_NATIVE_B64_g_set); + SWIG_addvarlink(SWIG_globals(),(char*)"H5T_NATIVE_OPAQUE_g",H5T_NATIVE_OPAQUE_g_get, H5T_NATIVE_OPAQUE_g_set); + SWIG_addvarlink(SWIG_globals(),(char*)"H5T_NATIVE_HADDR_g",H5T_NATIVE_HADDR_g_get, H5T_NATIVE_HADDR_g_set); + SWIG_addvarlink(SWIG_globals(),(char*)"H5T_NATIVE_HSIZE_g",H5T_NATIVE_HSIZE_g_get, H5T_NATIVE_HSIZE_g_set); + SWIG_addvarlink(SWIG_globals(),(char*)"H5T_NATIVE_HSSIZE_g",H5T_NATIVE_HSSIZE_g_get, H5T_NATIVE_HSSIZE_g_set); + SWIG_addvarlink(SWIG_globals(),(char*)"H5T_NATIVE_HERR_g",H5T_NATIVE_HERR_g_get, H5T_NATIVE_HERR_g_set); + SWIG_addvarlink(SWIG_globals(),(char*)"H5T_NATIVE_HBOOL_g",H5T_NATIVE_HBOOL_g_get, H5T_NATIVE_HBOOL_g_set); + SWIG_addvarlink(SWIG_globals(),(char*)"H5T_NATIVE_INT8_g",H5T_NATIVE_INT8_g_get, H5T_NATIVE_INT8_g_set); + SWIG_addvarlink(SWIG_globals(),(char*)"H5T_NATIVE_UINT8_g",H5T_NATIVE_UINT8_g_get, H5T_NATIVE_UINT8_g_set); + SWIG_addvarlink(SWIG_globals(),(char*)"H5T_NATIVE_INT_LEAST8_g",H5T_NATIVE_INT_LEAST8_g_get, H5T_NATIVE_INT_LEAST8_g_set); + SWIG_addvarlink(SWIG_globals(),(char*)"H5T_NATIVE_UINT_LEAST8_g",H5T_NATIVE_UINT_LEAST8_g_get, H5T_NATIVE_UINT_LEAST8_g_set); + SWIG_addvarlink(SWIG_globals(),(char*)"H5T_NATIVE_INT_FAST8_g",H5T_NATIVE_INT_FAST8_g_get, H5T_NATIVE_INT_FAST8_g_set); + SWIG_addvarlink(SWIG_globals(),(char*)"H5T_NATIVE_UINT_FAST8_g",H5T_NATIVE_UINT_FAST8_g_get, H5T_NATIVE_UINT_FAST8_g_set); + SWIG_addvarlink(SWIG_globals(),(char*)"H5T_NATIVE_INT16_g",H5T_NATIVE_INT16_g_get, H5T_NATIVE_INT16_g_set); + SWIG_addvarlink(SWIG_globals(),(char*)"H5T_NATIVE_UINT16_g",H5T_NATIVE_UINT16_g_get, H5T_NATIVE_UINT16_g_set); + SWIG_addvarlink(SWIG_globals(),(char*)"H5T_NATIVE_INT_LEAST16_g",H5T_NATIVE_INT_LEAST16_g_get, H5T_NATIVE_INT_LEAST16_g_set); + SWIG_addvarlink(SWIG_globals(),(char*)"H5T_NATIVE_UINT_LEAST16_g",H5T_NATIVE_UINT_LEAST16_g_get, H5T_NATIVE_UINT_LEAST16_g_set); + SWIG_addvarlink(SWIG_globals(),(char*)"H5T_NATIVE_INT_FAST16_g",H5T_NATIVE_INT_FAST16_g_get, H5T_NATIVE_INT_FAST16_g_set); + SWIG_addvarlink(SWIG_globals(),(char*)"H5T_NATIVE_UINT_FAST16_g",H5T_NATIVE_UINT_FAST16_g_get, H5T_NATIVE_UINT_FAST16_g_set); + SWIG_addvarlink(SWIG_globals(),(char*)"H5T_NATIVE_INT32_g",H5T_NATIVE_INT32_g_get, H5T_NATIVE_INT32_g_set); + SWIG_addvarlink(SWIG_globals(),(char*)"H5T_NATIVE_UINT32_g",H5T_NATIVE_UINT32_g_get, H5T_NATIVE_UINT32_g_set); + SWIG_addvarlink(SWIG_globals(),(char*)"H5T_NATIVE_INT_LEAST32_g",H5T_NATIVE_INT_LEAST32_g_get, H5T_NATIVE_INT_LEAST32_g_set); + SWIG_addvarlink(SWIG_globals(),(char*)"H5T_NATIVE_UINT_LEAST32_g",H5T_NATIVE_UINT_LEAST32_g_get, H5T_NATIVE_UINT_LEAST32_g_set); + SWIG_addvarlink(SWIG_globals(),(char*)"H5T_NATIVE_INT_FAST32_g",H5T_NATIVE_INT_FAST32_g_get, H5T_NATIVE_INT_FAST32_g_set); + SWIG_addvarlink(SWIG_globals(),(char*)"H5T_NATIVE_UINT_FAST32_g",H5T_NATIVE_UINT_FAST32_g_get, H5T_NATIVE_UINT_FAST32_g_set); + SWIG_addvarlink(SWIG_globals(),(char*)"H5T_NATIVE_INT64_g",H5T_NATIVE_INT64_g_get, H5T_NATIVE_INT64_g_set); + SWIG_addvarlink(SWIG_globals(),(char*)"H5T_NATIVE_UINT64_g",H5T_NATIVE_UINT64_g_get, H5T_NATIVE_UINT64_g_set); + SWIG_addvarlink(SWIG_globals(),(char*)"H5T_NATIVE_INT_LEAST64_g",H5T_NATIVE_INT_LEAST64_g_get, H5T_NATIVE_INT_LEAST64_g_set); + SWIG_addvarlink(SWIG_globals(),(char*)"H5T_NATIVE_UINT_LEAST64_g",H5T_NATIVE_UINT_LEAST64_g_get, H5T_NATIVE_UINT_LEAST64_g_set); + SWIG_addvarlink(SWIG_globals(),(char*)"H5T_NATIVE_INT_FAST64_g",H5T_NATIVE_INT_FAST64_g_get, H5T_NATIVE_INT_FAST64_g_set); + SWIG_addvarlink(SWIG_globals(),(char*)"H5T_NATIVE_UINT_FAST64_g",H5T_NATIVE_UINT_FAST64_g_get, H5T_NATIVE_UINT_FAST64_g_set); + SWIG_Python_SetConstant(d, "H5_VERS_MAJOR",SWIG_From_int((int)(1))); + SWIG_Python_SetConstant(d, "H5_VERS_MINOR",SWIG_From_int((int)(6))); + SWIG_Python_SetConstant(d, "H5_VERS_RELEASE",SWIG_From_int((int)(5))); + SWIG_Python_SetConstant(d, "H5_VERS_SUBRELEASE",SWIG_FromCharPtr("")); + SWIG_Python_SetConstant(d, "H5_VERS_INFO",SWIG_FromCharPtr("HDF5 library version: 1.6.5")); + SWIG_Python_SetConstant(d, "H5_SIZEOF_HSIZE_T",SWIG_From_int((int)(8))); + SWIG_Python_SetConstant(d, "H5_SIZEOF_HADDR_T",SWIG_From_int((int)(8))); + SWIG_Python_SetConstant(d, "H5_PRINTF_HADDR_FMT",SWIG_FromCharPtr("%lu")); + SWIG_Python_SetConstant(d, "H5I_BADID",SWIG_From_int((int)(H5I_BADID))); + SWIG_Python_SetConstant(d, "H5I_FILE",SWIG_From_int((int)(H5I_FILE))); + SWIG_Python_SetConstant(d, "H5I_GROUP",SWIG_From_int((int)(H5I_GROUP))); + SWIG_Python_SetConstant(d, "H5I_DATATYPE",SWIG_From_int((int)(H5I_DATATYPE))); + SWIG_Python_SetConstant(d, "H5I_DATASPACE",SWIG_From_int((int)(H5I_DATASPACE))); + SWIG_Python_SetConstant(d, "H5I_DATASET",SWIG_From_int((int)(H5I_DATASET))); + SWIG_Python_SetConstant(d, "H5I_ATTR",SWIG_From_int((int)(H5I_ATTR))); + SWIG_Python_SetConstant(d, "H5I_REFERENCE",SWIG_From_int((int)(H5I_REFERENCE))); + SWIG_Python_SetConstant(d, "H5I_VFL",SWIG_From_int((int)(H5I_VFL))); + SWIG_Python_SetConstant(d, "H5I_GENPROP_CLS",SWIG_From_int((int)(H5I_GENPROP_CLS))); + SWIG_Python_SetConstant(d, "H5I_GENPROP_LST",SWIG_From_int((int)(H5I_GENPROP_LST))); + SWIG_Python_SetConstant(d, "H5I_NGROUPS",SWIG_From_int((int)(H5I_NGROUPS))); + SWIG_Python_SetConstant(d, "H5I_INVALID_HID",SWIG_From_int((int)((-1)))); +} + diff --git a/src/Makefile.am b/src/Makefile.am new file mode 100644 index 0000000..5acf084 --- /dev/null +++ b/src/Makefile.am @@ -0,0 +1,114 @@ +# src level Makefile.am + +# PATH SETTING (IMPORTED FROM CONFIGURE) +HDF5ROOT = @HDF5ROOT@ +PHDF5ROOT = @PHDF5ROOT@ +PYTHON_PATH = -I@PYTHON_PATH@ +PY_WRAPPER = @PY_WRAPPER@ + +# COMPILERS +CC = @CC@ +MPICC = @MPICC@ + +# COMPILER FLAGS +CFLAGS = @CFLAGS@ +PCFLAGS = $(CFLAGS) -DPARALLEL_IO -DH5_HAVE_PARALLEL -DMPICH_IGNORE_CXX_SEEK + +#INCLUDES +HDFINC = -I$(HDF5ROOT)/include +PHDFINC = -I$(PHDF5ROOT)/include +PINC = $(PHDFINC) $(MPIINC) +INC = $(HDFINC) +MPIINC = @MPIINC@ + +# H5Part header file location +H5PINC = -I@prefix@/include + +# H5Part compiled library location +H5PLIB = -L@prefix@/lib + +# HDF5 LIBRARY +HDFLIB = -L$(HDF5ROOT)/lib -lhdf5 -lz $(SZLIB) @LDFLAGS@ + +# SZ LIBRARY +SZLIB = @SZLIB@ + +# Extra files that I wish to include in the dist tar ball. +EXTRA_DIST = H5Part.cc H5Part++.cc H5Part++.hh TestUnderscoreC.c TestUnderscore.f COPYRIGHT H5Part.py H5Part_py.i H5Part_py_wrap.c## TO BE TAILORED LATER... + +# Files that I don't want to include in the dist tar ball +nodist_include_HEADERS = @UNDERSCORE_H@ + +# What to build... Will be determined by configure script. +lib_LIBRARIES = @MTARGET@ $(PY_WRAPPER) + +# Listing of all possible targets that I may build. +EXTRA_LIBRARIES = libH5Part.a libH5PartF.a libpH5Part.a libpH5PartF.a _H5Part.so + +# Header files that I wish to install in $(prefix)/include +include_HEADERS = H5Part.inc H5Part.h H5Part.hh @UNDERSCORE_H@ + +# Listing of all possible headers that I may include +EXTRA_HEADERS = H5Part.inc H5Part.h H5Part.hh Underscore.h + +# Listing of sources +libH5Part_a_SOURCES = H5Part.c + +libH5PartF_a_SOURCES = H5Part.c H5PartF.c + +libpH5Part_a_SOURCES = H5Part.c + +libpH5PartF_a_SOURCES = H5Part.c H5PartF.c + +_H5Part_so_SOURCES = H5Part.c H5Part_py_wrap.c + +# Specific building instruction (What compilers to use...) +# ------------ Serial Lib build commands ------------ +libH5Part.a: H5Part.o + ar rucs libH5Part.a H5Part.o + +libH5PartF.a: H5Part.o H5PartF.o + ar rucs libH5PartF.a H5Part.o H5PartF.o + +H5Part.o: H5Part.c H5Part.h + $(CC) $(CFLAGS) $(INC) -c H5Part.c + +H5PartF.o: H5PartF.c Underscore.h H5Part.h + $(CC) $(CFLAGS) $(INC) -w -c H5PartF.c + + +# ----------- Build Parallel H5Part Stuff ------------ + +libpH5Part.a: pH5Part.o + ar rucs libpH5Part.a pH5Part.o + +libpH5PartF.a: pH5Part.o pH5PartF.o + ar rucs libpH5PartF.a pH5Part.o pH5PartF.o + +pH5Part.o: H5Part.c H5Part.h + $(MPICC) $(PCFLAGS) $(PINC) -c H5Part.c -o pH5Part.o + +pH5PartF.o: H5PartF.c Underscore.h H5Part.h + $(MPICC) $(PCFLAGS) $(PINC) -w -c H5PartF.c -o pH5PartF.o + + +# ----------- Build Python Wrapper ------------ + +_H5Part.so: H5Part_py.o H5Part_py_wrap.o + $(CC) -g -shared -o _H5Part.so H5Part_py.o H5Part_py_wrap.o $(HDFLIB) + +H5Part_py.o: H5Part.c H5Part.h + $(CC) -g -fPIC -c -o H5Part_py.o $(PYTHON_PATH) $(HDFINC) H5Part.c + +H5Part_py_wrap.o: H5Part_py_wrap.c + $(CC) -g -fPIC -c $(PYTHON_PATH) $(HDFINC) H5Part_py_wrap.c + + +clean: + rm -f *~ *.o *.a *.pyc *.so + +distclean: clean + rm -f *.a + rm -rf .libs + rm Underscore.h + rm Makefile diff --git a/src/Makefile.in b/src/Makefile.in new file mode 100644 index 0000000..e0149e7 --- /dev/null +++ b/src/Makefile.in @@ -0,0 +1,604 @@ +# Makefile.in generated by automake 1.9.5 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# src level Makefile.am + + +SOURCES = $(_H5Part_so_SOURCES) $(libH5Part_a_SOURCES) $(libH5PartF_a_SOURCES) $(libpH5Part_a_SOURCES) $(libpH5PartF_a_SOURCES) + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = .. +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = src +DIST_COMMON = $(include_HEADERS) $(srcdir)/Makefile.am \ + $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(includedir)" \ + "$(DESTDIR)$(includedir)" +libLIBRARIES_INSTALL = $(INSTALL_DATA) +LIBRARIES = $(lib_LIBRARIES) +AR = ar +ARFLAGS = cru +_H5Part_so_AR = $(AR) $(ARFLAGS) +_H5Part_so_LIBADD = +am__H5Part_so_OBJECTS = H5Part.$(OBJEXT) H5Part_py_wrap.$(OBJEXT) +_H5Part_so_OBJECTS = $(am__H5Part_so_OBJECTS) +libH5Part_a_AR = $(AR) $(ARFLAGS) +libH5Part_a_LIBADD = +am_libH5Part_a_OBJECTS = H5Part.$(OBJEXT) +libH5Part_a_OBJECTS = $(am_libH5Part_a_OBJECTS) +libH5PartF_a_AR = $(AR) $(ARFLAGS) +libH5PartF_a_LIBADD = +am_libH5PartF_a_OBJECTS = H5Part.$(OBJEXT) H5PartF.$(OBJEXT) +libH5PartF_a_OBJECTS = $(am_libH5PartF_a_OBJECTS) +libpH5Part_a_AR = $(AR) $(ARFLAGS) +libpH5Part_a_LIBADD = +am_libpH5Part_a_OBJECTS = H5Part.$(OBJEXT) +libpH5Part_a_OBJECTS = $(am_libpH5Part_a_OBJECTS) +libpH5PartF_a_AR = $(AR) $(ARFLAGS) +libpH5PartF_a_LIBADD = +am_libpH5PartF_a_OBJECTS = H5Part.$(OBJEXT) H5PartF.$(OBJEXT) +libpH5PartF_a_OBJECTS = $(am_libpH5PartF_a_OBJECTS) +DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +SOURCES = $(_H5Part_so_SOURCES) $(libH5Part_a_SOURCES) \ + $(libH5PartF_a_SOURCES) $(libpH5Part_a_SOURCES) \ + $(libpH5PartF_a_SOURCES) +DIST_SOURCES = $(_H5Part_so_SOURCES) $(libH5Part_a_SOURCES) \ + $(libH5PartF_a_SOURCES) $(libpH5Part_a_SOURCES) \ + $(libpH5PartF_a_SOURCES) +includeHEADERS_INSTALL = $(INSTALL_HEADER) +nodist_includeHEADERS_INSTALL = $(INSTALL_HEADER) +HEADERS = $(include_HEADERS) $(nodist_include_HEADERS) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ADDFLAGS = @ADDFLAGS@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BAS_CC = @BAS_CC@ +BUILD_TOOLS = @BUILD_TOOLS@ + +# COMPILERS +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ + +# COMPILER FLAGS +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FC = @FC@ +FCFLAGS = @FCFLAGS@ +FFLAGS = @FFLAGS@ +H5P_LIB_LOC = @H5P_LIB_LOC@ + +# PATH SETTING (IMPORTED FROM CONFIGURE) +HDF5ROOT = @HDF5ROOT@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MPICC = @MPICC@ +MPICXX = @MPICXX@ +MPIFC = @MPIFC@ +MPIINC = @MPIINC@ +MPILIB = @MPILIB@ +MPIROOT = @MPIROOT@ +MTARGET = @MTARGET@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PHDF5ROOT = @PHDF5ROOT@ +PYTHON_PATH = -I@PYTHON_PATH@ +PY_WRAPPER = @PY_WRAPPER@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STDCXX = @STDCXX@ +STRIP = @STRIP@ + +# SZ LIBRARY +SZLIB = @SZLIB@ +TOOLS_CXX = @TOOLS_CXX@ +TOOLS_H5PART_LIB = @TOOLS_H5PART_LIB@ +TOOLS_HDFLIB = @TOOLS_HDFLIB@ +TTARGET = @TTARGET@ +UNDERSCORE_H = @UNDERSCORE_H@ +VERSION = @VERSION@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_FC = @ac_ct_FC@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +PCFLAGS = $(CFLAGS) -DPARALLEL_IO -DH5_HAVE_PARALLEL -DMPICH_IGNORE_CXX_SEEK + +#INCLUDES +HDFINC = -I$(HDF5ROOT)/include +PHDFINC = -I$(PHDF5ROOT)/include +PINC = $(PHDFINC) $(MPIINC) +INC = $(HDFINC) + +# H5Part header file location +H5PINC = -I@prefix@/include + +# H5Part compiled library location +H5PLIB = -L@prefix@/lib + +# HDF5 LIBRARY +HDFLIB = -L$(HDF5ROOT)/lib -lhdf5 -lz $(SZLIB) @LDFLAGS@ + +# Extra files that I wish to include in the dist tar ball. +EXTRA_DIST = H5Part.cc H5Part++.cc H5Part++.hh TestUnderscoreC.c TestUnderscore.f COPYRIGHT H5Part.py H5Part_py.i H5Part_py_wrap.c## TO BE TAILORED LATER... + +# Files that I don't want to include in the dist tar ball +nodist_include_HEADERS = @UNDERSCORE_H@ + +# What to build... Will be determined by configure script. +lib_LIBRARIES = @MTARGET@ $(PY_WRAPPER) + +# Listing of all possible targets that I may build. +EXTRA_LIBRARIES = libH5Part.a libH5PartF.a libpH5Part.a libpH5PartF.a _H5Part.so + +# Header files that I wish to install in $(prefix)/include +include_HEADERS = H5Part.inc H5Part.h H5Part.hh @UNDERSCORE_H@ + +# Listing of all possible headers that I may include +EXTRA_HEADERS = H5Part.inc H5Part.h H5Part.hh Underscore.h + +# Listing of sources +libH5Part_a_SOURCES = H5Part.c +libH5PartF_a_SOURCES = H5Part.c H5PartF.c +libpH5Part_a_SOURCES = H5Part.c +libpH5PartF_a_SOURCES = H5Part.c H5PartF.c +_H5Part_so_SOURCES = H5Part.c H5Part_py_wrap.c +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign src/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +install-libLIBRARIES: $(lib_LIBRARIES) + @$(NORMAL_INSTALL) + test -z "$(libdir)" || $(mkdir_p) "$(DESTDIR)$(libdir)" + @list='$(lib_LIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ + f=$(am__strip_dir) \ + echo " $(libLIBRARIES_INSTALL) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \ + $(libLIBRARIES_INSTALL) "$$p" "$(DESTDIR)$(libdir)/$$f"; \ + else :; fi; \ + done + @$(POST_INSTALL) + @list='$(lib_LIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ + p=$(am__strip_dir) \ + echo " $(RANLIB) '$(DESTDIR)$(libdir)/$$p'"; \ + $(RANLIB) "$(DESTDIR)$(libdir)/$$p"; \ + else :; fi; \ + done + +uninstall-libLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(lib_LIBRARIES)'; for p in $$list; do \ + p=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(libdir)/$$p'"; \ + rm -f "$(DESTDIR)$(libdir)/$$p"; \ + done + +clean-libLIBRARIES: + -test -z "$(lib_LIBRARIES)" || rm -f $(lib_LIBRARIES) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/H5Part.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/H5PartF.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/H5Part_py_wrap.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` +uninstall-info-am: +install-includeHEADERS: $(include_HEADERS) + @$(NORMAL_INSTALL) + test -z "$(includedir)" || $(mkdir_p) "$(DESTDIR)$(includedir)" + @list='$(include_HEADERS)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(includeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(includedir)/$$f'"; \ + $(includeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(includedir)/$$f"; \ + done + +uninstall-includeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(include_HEADERS)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(includedir)/$$f'"; \ + rm -f "$(DESTDIR)$(includedir)/$$f"; \ + done +install-nodist_includeHEADERS: $(nodist_include_HEADERS) + @$(NORMAL_INSTALL) + test -z "$(includedir)" || $(mkdir_p) "$(DESTDIR)$(includedir)" + @list='$(nodist_include_HEADERS)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(nodist_includeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(includedir)/$$f'"; \ + $(nodist_includeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(includedir)/$$f"; \ + done + +uninstall-nodist_includeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(nodist_include_HEADERS)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(includedir)/$$f'"; \ + rm -f "$(DESTDIR)$(includedir)/$$f"; \ + done + +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; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + 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; } \ + END { for (i in files) print i; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + 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; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(LIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(includedir)" "$(DESTDIR)$(includedir)"; do \ + test -z "$$dir" || $(mkdir_p) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(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 +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean-am: clean-generic clean-libLIBRARIES mostlyclean-am + +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: install-includeHEADERS install-nodist_includeHEADERS + +install-exec-am: install-libLIBRARIES + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-includeHEADERS uninstall-info-am \ + uninstall-libLIBRARIES uninstall-nodist_includeHEADERS + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-libLIBRARIES ctags distclean distclean-compile \ + distclean-generic distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-exec install-exec-am \ + install-includeHEADERS install-info install-info-am \ + install-libLIBRARIES install-man install-nodist_includeHEADERS \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \ + tags uninstall uninstall-am uninstall-includeHEADERS \ + uninstall-info-am uninstall-libLIBRARIES \ + uninstall-nodist_includeHEADERS + + +# Specific building instruction (What compilers to use...) +# ------------ Serial Lib build commands ------------ +libH5Part.a: H5Part.o + ar rucs libH5Part.a H5Part.o + +libH5PartF.a: H5Part.o H5PartF.o + ar rucs libH5PartF.a H5Part.o H5PartF.o + +H5Part.o: H5Part.c H5Part.h + $(CC) $(CFLAGS) $(INC) -c H5Part.c + +H5PartF.o: H5PartF.c Underscore.h H5Part.h + $(CC) $(CFLAGS) $(INC) -w -c H5PartF.c + +# ----------- Build Parallel H5Part Stuff ------------ + +libpH5Part.a: pH5Part.o + ar rucs libpH5Part.a pH5Part.o + +libpH5PartF.a: pH5Part.o pH5PartF.o + ar rucs libpH5PartF.a pH5Part.o pH5PartF.o + +pH5Part.o: H5Part.c H5Part.h + $(MPICC) $(PCFLAGS) $(PINC) -c H5Part.c -o pH5Part.o + +pH5PartF.o: H5PartF.c Underscore.h H5Part.h + $(MPICC) $(PCFLAGS) $(PINC) -w -c H5PartF.c -o pH5PartF.o + +# ----------- Build Python Wrapper ------------ + +_H5Part.so: H5Part_py.o H5Part_py_wrap.o + $(CC) -g -shared -o _H5Part.so H5Part_py.o H5Part_py_wrap.o $(HDFLIB) + +H5Part_py.o: H5Part.c H5Part.h + $(CC) -g -fPIC -c -o H5Part_py.o $(PYTHON_PATH) $(HDFINC) H5Part.c + +H5Part_py_wrap.o: H5Part_py_wrap.c + $(CC) -g -fPIC -c $(PYTHON_PATH) $(HDFINC) H5Part_py_wrap.c + +clean: + rm -f *~ *.o *.a *.pyc *.so + +distclean: clean + rm -f *.a + rm -rf .libs + rm Underscore.h + rm Makefile +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/src/TestUnderscore.f b/src/TestUnderscore.f new file mode 100755 index 0000000..4de2c6e --- /dev/null +++ b/src/TestUnderscore.f @@ -0,0 +1,12 @@ +c ============== +c +c Simple Fortran program works in conjunction with C program +c to determine how many underscores are generated +c by the fortran compiler +c +c ============== + + program TestUnderscoreF + implicit none + call FindUnderscores + end diff --git a/src/TestUnderscoreC.c b/src/TestUnderscoreC.c new file mode 100755 index 0000000..0beafb7 --- /dev/null +++ b/src/TestUnderscoreC.c @@ -0,0 +1,36 @@ +#include + +void findunderscores(void){ + printf("#ifndef F77_NO_UNDERSCORE\n"); + printf("#define F77_NO_UNDERSCORE\n"); + printf("#endif\n"); + printf("#ifndef F77_NO_CAPS\n"); + printf("#define F77_NO_CAPS\n"); + printf("#endif\n"); +} + +void FindUnderscores(void){ + printf("#ifndef F77_NO_UNDERSCORE\n"); + printf("#define F77_NO_UNDERSCORE\n"); + printf("#endif\n"); +} + +void FindUnderscores_(void){ + printf("#ifndef F77_SINGLE_UNDERSCORE\n"); + printf("#define F77_SINGLE_UNDERSCORE\n"); + printf("#endif\n"); +} + +void findunderscores_(void){ + printf("#ifndef F77_SINGLE_UNDERSCORE\n"); + printf("#define F77_SINGLE_UNDERSCORE\n"); + printf("#endif\n"); + printf("#ifndef F77_NO_CAPS\n"); + printf("#define F77_NO_CAPS\n"); + printf("#endif\n"); +} +void FINDUNDERSCORES(void){ + printf("#ifndef F77_CRAY_UNDERSCORE\n"); + printf("#define F77_CRAY_UNDERSCORE\n"); + printf("#endif\n"); +} diff --git a/src/addToDoxygenMainPage.h b/src/addToDoxygenMainPage.h new file mode 100644 index 0000000..c397880 --- /dev/null +++ b/src/addToDoxygenMainPage.h @@ -0,0 +1,24 @@ +/*! \mainpage +

    H5Part: a Portable High Performance Parallel Data Interface to HDF5 +

    +

    + +Particle based simulations of accelerator beam-lines, especially in six dimensional phase space, generate vast amounts of data. +Even though a subset of statistical information regarding phase space or analysis needs to be preserved, reading and writing such enormous restart +files on massively parallel supercomputing systems remains challenging. +

    +H5Part consists of Particles, Block structured Fields and unstructured data (Topo).

    +Developed by . + +

    +For further information contact: xxxxxx - +xxxx xxxxx, (xxx) xxx. +

    +Last modified on xxx xx, 2006. +

    +Papers: +

    +LBNL Vis Group
    +*/ + + diff --git a/test/Bench.c b/test/Bench.c new file mode 100644 index 0000000..a73af78 --- /dev/null +++ b/test/Bench.c @@ -0,0 +1,235 @@ +#include +#include +#include +#include +/* #include */ +#include +#include +#ifndef PARALLEL_IO +#define PARALLEL_IO +#endif + +#ifndef DISABLE_H5PART +#include "H5Part.h" +#endif + +#define FILENAME "testio" +/* normally 64 steps for real benchmark */ +#define NSTEPS 5 +/* normally 51e6 for real benchmark */ +#define NPARTICLES 51e4 +#define NTRIALS 3 + +/* + + bench + + +*/ + + +int main(int argc,char *argv[]){ + MPI_Info info; + int npdims=1; + int nprocs,rank; + int trial; + int i,j,n; /* iteration variables */ + double starttime,curtime, endtime; + + int nparticles = atoi(argv[1]); + + double *x,*y,*z,*px,*py,*pz; + typedef double *ddouble; + ddouble data[6]; + int64_t *id; + MPI_Datatype chunktype; + int offset; + int localnp; + int err1,err2; + char filename[128]; /*= FILENAME; */ +#ifndef DISABLE_H5PART + H5PartFile *f; +#endif + char newfilename[128]; + FILE *fd; + MPI_File file; + MPI_Info bogusinfo; + MPI_Offset foffset; + + MPI_Comm comm,dcomm = MPI_COMM_WORLD; + + MPI_Init(&argc,&argv); + MPI_Comm_rank(dcomm,&rank); + MPI_Comm_size(dcomm,&nprocs); + + localnp=nparticles/(int64_t)nprocs; + for(offset=0,i=0;i +#include +#include +#include +#include "H5Part.hh" + +#ifdef READTEST + +#endif + +#ifdef REGRESSIONTEST + +/* + A simple regression test that shows how you use this API + to write and read multi-timestep files of particle data. +*/ +#ifdef PARALLEL_IO + +int main(int argc,char *argv[]){ + int sz=5; + double *x,*y,*z; + long long *id; + char name[64]; + H5PartFile *file; + int i,t,nt,nds; + int nprocs,myproc; + hid_t gid; + MPI_Comm comm=MPI_COMM_WORLD; + + MPI_Init(&argc,&argv); + MPI_Comm_size(comm,&nprocs); + MPI_Comm_rank(comm,&myproc); + + x=(double*)malloc(sz*nprocs*sizeof(double)); + y=(double*)malloc(sz*nprocs*sizeof(double)); + z=(double*)malloc(sz*nprocs*sizeof(double)); + id=(long long*)malloc(sz*nprocs*sizeof(long long)); + /* parallel file creation */ + file=H5PartOpenFileParallel("parttest.h5",H5PART_WRITE,comm); + if(!file) { + perror("File open failed: exiting!"); + exit(0); + } + + for(t=0;t<5;t++){ + MPI_Barrier(comm); + for(i=0;ifile); + H5PartSetStep(file,t); /* must set the current timestep in file */ + H5PartSetNumParticles(file,sz); /* then set number of particles to store */ + /* now write different tuples of data into this timestep of the file */ + H5PartWriteDataFloat64(file,"x",x); + H5PartWriteDataFloat64(file,"y",y); + H5PartWriteDataFloat64(file,"z",z); + + H5PartWriteDataFloat64(file,"px",x); + H5PartWriteDataFloat64(file,"py",y); + H5PartWriteDataFloat64(file,"pz",z); + + H5PartWriteDataInt64(file,"id",id); + } + + unsigned int idStart = 0+sz*myproc; + unsigned int idEnd = (sz-1)+sz*myproc; + + printf("AllDone p[%u]\n",myproc); + H5PartCloseFile(file); + MPI_Barrier(comm); + + printf("p[%u:%u] : OK, close file and reopen for reading idStart %u idEnd %u \n",myproc,nprocs,idStart,idEnd); + + file=H5PartOpenFileParallel("parttest.h5",H5PART_READ,comm); + H5PartSetStep(file,0); + unsigned int np = 0; + // unsigned int np = (int)H5PartGetNumParticles(file); + // nt=H5PartGetNumSteps(file); /* get number of steps in file */ + + //nds=H5PartGetNumDatasets(file); /* get number of datasets in timestep 0 */ + MPI_Barrier(comm); + + // H5PartSetView(file,idStart,idEnd); + + printf("steps= %u datasets= %u particles= %u\n",nt,nds,np); + + if(x) + free(x); + if(y) + free(y); + if(z) + free(z); + if(id) + free(id); + + H5PartCloseFile(file); + MPI_Barrier(comm); + fprintf(stderr,"proc[%u]: done\n",myproc); + return MPI_Finalize(); +} + +#else + +#endif + +#endif + + diff --git a/test/H5PartAndreasTest.cc b/test/H5PartAndreasTest.cc new file mode 100755 index 0000000..dc64dae --- /dev/null +++ b/test/H5PartAndreasTest.cc @@ -0,0 +1,121 @@ +#include +#include +#include +#include +#include +#include "H5Part.hh" + + +/* + A simple regression test that shows how you use this API + to write and read multi-timestep files of particle data. +*/ +#ifdef PARALLEL_IO + +int main(int argc,char *argv[]){ + int N = 10; + int sz=0; + double *x,*y,*z; + long long *id; + char name[64]; + H5PartFile *file; + int i,t,nt,nds; + int nprocs,myproc; + hid_t gid; + + unsigned int np = 0; + + MPI_Comm comm=MPI_COMM_WORLD; + + MPI_Init(&argc,&argv); + MPI_Comm_size(comm,&nprocs); + MPI_Comm_rank(comm,&myproc); + + /* parallel file creation */ + file=H5PartOpenFileParallel("parttest.h5",H5PART_WRITE,comm); + if(!file) { + perror("File open failed: exiting!"); + exit(0); + } + + for(t=0;t<5;t++){ + + MPI_Barrier(comm); + + sz = myproc*N; + // proc[0] sz = 10, (next step N=10), sz=10 + // proc[1] sz = 20, (next step N=20), sz=40 + fprintf(stderr,"proc[%u] sz=%u\n",myproc,(unsigned)sz); + x =(double*)malloc(1+sz*sizeof(double)); + y =(double*)malloc(1+sz*sizeof(double)); + z =(double*)malloc(1+sz*sizeof(double)); + id=(long long*)malloc(1+sz*sizeof(long long)); + + for(i=0;i +#include +#include +#include +#include "H5Part.hh" + +/* + A simple regression test that shows how you use this API + to write and read multi-timestep files of particle data. +*/ +#ifdef PARALLEL_IO + +int main(int argc,char *argv[]){ + int sz=5; + double *x,*y,*z; + long long *id; + char name[64]; + H5PartFile *file; + int i,t,nt,nds; + int nprocs,myproc; + hid_t gid; + MPI_Comm comm=MPI_COMM_WORLD; + + MPI_Init(&argc,&argv); + MPI_Comm_size(comm,&nprocs); + MPI_Comm_rank(comm,&myproc); + + x=(double*)malloc(sz*nprocs*sizeof(double)); + y=(double*)malloc(sz*nprocs*sizeof(double)); + z=(double*)malloc(sz*nprocs*sizeof(double)); + id=(long long*)malloc(sz*nprocs*sizeof(long long)); + /* parallel file creation */ + file=H5PartOpenFileParallel("parttest.h5",H5PART_WRITE,comm); + if(!file) { + perror("File open failed: exiting!"); + exit(0); + } + + for(t=0;t<5;t++){ + MPI_Barrier(comm); + for(i=0;ifile); + H5PartSetStep(file,t); /* must set the current timestep in file */ + H5PartSetNumParticles(file,sz); /* then set number of particles to store */ + /* now write different tuples of data into this timestep of the file */ + H5PartWriteDataFloat64(file,"x",x); + H5PartWriteDataFloat64(file,"y",y); + H5PartWriteDataFloat64(file,"z",z); + + H5PartWriteDataFloat64(file,"px",x); + H5PartWriteDataFloat64(file,"py",y); + H5PartWriteDataFloat64(file,"pz",z); + + H5PartWriteDataInt64(file,"id",id); + } + + unsigned int idStart = 0+sz*myproc; + unsigned int idEnd = (sz-1)+sz*myproc; + + printf("AllDone p[%u]\n",myproc); + H5PartCloseFile(file); + fprintf(stderr,"Closed files p[%u]\n",myproc); + MPI_Barrier(comm); + + fprintf(stderr,"p[%u:%u] : OK, close file and reopen for reading idStart %u idEnd %u \n",myproc,nprocs,idStart,idEnd); + + file=H5PartOpenFileParallel("parttest.h5",H5PART_READ,comm); + H5PartSetStep(file,0); + // unsigned int np = 0; + unsigned int np = (int)H5PartGetNumParticles(file); + nt=H5PartGetNumSteps(file); /* get number of steps in file */ + nds=H5PartGetNumDatasets(file); /* get number of datasets in timestep 0 */ + + MPI_Barrier(comm); + + H5PartSetView(file,idStart,idEnd); + + np = (int)H5PartGetNumParticles(file); + printf("After SetView(%d,%d): steps= %u datasets= %u particles= %u\n", + (int)idStart,(int)idEnd, + nt,nds,np); + + if(x) + free(x); + if(y) + free(y); + if(z) + free(z); + if(id) + free(id); + + H5PartCloseFile(file); + MPI_Barrier(comm); + fprintf(stderr,"proc[%u]: done\n",myproc); + return MPI_Finalize(); +} + +#else +int main(int argc,char *argv[]){ + int sz=10; + double *x,*y,*z; + long long *id; + char name[64]; + H5PartFile *file; + int i,t,nt,nds,np; + hid_t gid; + long long idStart = 0; + long long idEnd = 0; + + + x=(double*)malloc(sz*sizeof(double)); + y=(double*)malloc(sz*sizeof(double)); + z=(double*)malloc(sz*sizeof(double)); + id=(long long*)malloc(sz*sizeof(long long)); + /* parallel file creation */ + file=H5PartOpenFile("parttest.h5",H5PART_WRITE); + if(!file) { + perror("File open failed: exiting!"); + exit(0); + } + + H5PartWriteFileAttribString(file,"File Description", "This file is created by H5PartTest.cc. Simple H5Part file for testing purpose..."); + char* FileAttrib = "Created by H5PartTest.cc"; + H5PartWriteFileAttrib(file, "Origin", H5T_NATIVE_CHAR, FileAttrib ,strlen(FileAttrib)); + + for(t=0;t<5;t++){ + fprintf(stdout,"Writing timestep %u\n",t); + for(i=0;i>1); + printf("Set new view = %d:%d\n",(int)idStart,(int)(idEnd>>1)); + H5PartGetView(file,&idStart,&idEnd); + np=H5PartGetNumParticles(file); + printf("steps= %u datasets= %u particles= %d with view %d:%d\n", + nt,nds,(int)np,(int)idStart,(int)idEnd); + H5PartSetStep(file,nt-1); // set to last step + printf("Setting to last step = %u\n",nt-1); + for(i=0;i<10;i++){ x[i]=y[i]=z[i]=0.0; id[i]=0; } /* clear the arrays */ + H5PartReadDataFloat64(file,"x",x); + H5PartReadDataFloat64(file,"y",y); + H5PartReadDataFloat64(file,"z",z); + H5PartReadDataInt64(file,"id",id); + + for(i=0;i>1,(int)idEnd); + H5PartSetView(file,(idEnd>>1),idEnd); + np=H5PartGetNumParticles(file); + printf("Now particles in selection are %d\n",np); + printf("doubleCheck=%d\n",H5PartGetView(file,0,0)); + + for(i=0;i<10;i++){ x[i]=y[i]=z[i]=0.0; id[i]=0; } /* clear the arrays */ + + H5PartReadDataFloat64(file,"x",x); + H5PartReadDataFloat64(file,"y",y); + H5PartReadDataFloat64(file,"z",z); + H5PartReadDataInt64(file,"id",id); + for(i=0;i +#include +#include +#include +#include "H5Part.hh" + +#ifdef PARALLEL_IO + +/* + This regression test is used to ensure parallel I/O is + working correctly and that Views are working for + parallel reads. + */ +int main(int argc,char *argv[]){ + const int sz=5000; + double *x,*y,*z; + long long *id; + char name[64]; + H5PartFile *file; + int i,t,nt,nds; + int nprocs,myproc; + hid_t gid; + MPI_Comm comm=MPI_COMM_WORLD; + + MPI_Init(&argc,&argv); + MPI_Comm_size(comm,&nprocs); + MPI_Comm_rank(comm,&myproc); + + x=(double*)malloc(sz*nprocs*sizeof(double)); + y=(double*)malloc(sz*nprocs*sizeof(double)); + z=(double*)malloc(sz*nprocs*sizeof(double)); + id=(long long*)malloc(sz*nprocs*sizeof(long long)); + /* parallel file creation */ + file=H5PartOpenFileParallel("parttest.h5",H5PART_WRITE,comm); + if(!file) { + perror("File open failed: exiting!"); + exit(0); + } + + for(t=0;t<5;t++){ + MPI_Barrier(comm); + for(i=0;i void DataSink::savePhaseSpaceData() +{ + T *x=(double*)malloc(beam_m->getLocalNum()*sizeof(double)); + T *y=(double*)malloc(beam_m->getLocalNum()*sizeof(double)); + T *z=(double*)malloc(beam_m->getLocalNum()*sizeof(double)); + T *px=(double*)malloc(beam_m->getLocalNum()*sizeof(double)); + T *py=(double*)malloc(beam_m->getLocalNum()*sizeof(double)); + T *pz=(double*)malloc(beam_m->getLocalNum()*sizeof(double)); + long long int *id=(long long int*)malloc(beam_m->getLocalNum()*sizeof(long long)); + + double actPos = beam_m->getActSPos(); + double structLenght = beam_m->getMaxZ(); + Vector_t org = beam_m->getOrigin(); + Vector_t maxX = beam_m->getRmax(); + Vector_t minX = beam_m->getRmin(); + Vector_t maxP = beam_m->getPmax(); + Vector_t minP = beam_m->getPmin(); + unsigned long protons = beam_m->getNumberOfProtons(); + unsigned long electrons = beam_m->getNumberOfElectrons(); + Vector_t centroid = beam_m->getCentroid(); + unsigned nTot = beam_m->getTotalNum(); + for (long long i=0; igetLocalNum();i++) { + x[i] = beam_m->R[i](0); + y[i] = beam_m->R[i](1); + z[i] = beam_m->R[i](2); + px[i] = beam_m->P[i](0); + py[i] = beam_m->P[i](1); + pz[i] = beam_m->P[i](2); + if (i< (electrons-1)) + id[i] = beam_m->ID[i]; else + id[i] = -1*(long int)beam_m->ID[i]; + } + H5PartSetStep(file_m,idx_m); /* must set the current timestep in file */ + H5PartSetNumParticles(file_m,beam_m->getLocalNum()); /* then set number of particles to store */ + /* now write different tuples of data into this timestep of the file */ + H5PartWriteDataFloat64(file_m,"x",x); + H5PartWriteDataFloat64(file_m,"y",y); + H5PartWriteDataFloat64(file_m,"z",z); + H5PartWriteDataFloat64(file_m,"px",px); + H5PartWriteDataFloat64(file_m,"py",py); + H5PartWriteDataFloat64(file_m,"pz",pz); + H5PartWriteDataInt64(file_m,"id",id); + long long step = idx_m; + H5PartWriteStepAttrib(file_m,"Step",H5T_NATIVE_INT64,&step,1); + + + /* write scalar data i.e the header */ + H5PartWriteAttrib(file_m,"Spos",H5T_NATIVE_DOUBLE,&actPos,1); + H5PartWriteAttrib(file_m,"structLen",H5T_NATIVE_DOUBLE,&structLenght,1); + + H5PartWriteAttrib(file_m,"org",H5T_NATIVE_DOUBLE,&org,3); + H5PartWriteAttrib(file_m,"maxX",H5T_NATIVE_DOUBLE,&maxX,3); + H5PartWriteAttrib(file_m,"minX",H5T_NATIVE_DOUBLE,&minX,3); + H5PartWriteAttrib(file_m,"maxP",H5T_NATIVE_DOUBLE,&maxP,3); + H5PartWriteAttrib(file_m,"minP",H5T_NATIVE_DOUBLE,&minP,3); + H5PartWriteAttrib(file_m,"centroid",H5T_NATIVE_DOUBLE,¢roid,3); + delete x; + delete y; + delete z; + delete id; + idx_m++; +} diff --git a/test/H5test.cc b/test/H5test.cc new file mode 100755 index 0000000..7891a0e --- /dev/null +++ b/test/H5test.cc @@ -0,0 +1,155 @@ +#include +#include +#include +#include "H5Part.hh" + +#include +#include +#include +#include +using namespace std; + + +/* + A simple regression test that shows how you use this API + to write and read multi-timestep files of particle data. +*/ +#ifdef PARALLEL_IO + + +#else + +int ReadFile(const string fn){ + char name[64]; + H5PartFile *file; + int i,t,nt,nds,myproc; + int nfattribs,nsattribs; + cout << "Open " << fn << endl; + + file= H5PartOpenFile(fn.c_str(),H5PART_READ); + + nt=H5PartGetNumSteps(file); + H5PartSetStep(file,0); + nds=H5PartGetNumDatasets(file); + + cout << "Timesteps = " << nt << " dataSets per timestep = " << nds << endl; + + cout << endl << endl << "===============================" << endl; + for(i=0;i1) str=argv[1]; + else str=dstr; + const string fn = string(str); + /* f=fopen(fn.c_str(),"r"); + if(f!=NULL) { a poor-man's stat() + fclose(f); + */ + if(!WriteFile(fn)){ + cerr << "Failed to write file " << fn << endl; + exit(0); + } + /* + } + else { + cout << "File " << fn << " already exists, so we will proceed to reading" << endl; + } */ + if(!ReadFile(fn)){ + cerr << "Failed to read file " << fn << endl; + } +} +#endif diff --git a/test/H5test.py b/test/H5test.py new file mode 100755 index 0000000..62a7ba3 --- /dev/null +++ b/test/H5test.py @@ -0,0 +1,111 @@ +#!/usr/bin/python + +import string, sys +sys.path.append('../src/') +import H5Part + +def ReadFile(fn): + print "Open " , fn + + file = H5Part.H5PartOpenFile(fn, H5Part.H5PART_READ) + + nt = H5Part.H5PartGetNumSteps(file) + H5Part.H5PartSetStep(file,0) + nds = H5Part.H5PartGetNumDatasets(file) + + print "Timesteps = " , nt , " dataSets per timestep = " , nds + + print "\n===============================\n" + + for i in range(0, nds): + value, name = H5Part.H5PartGetDatasetName(file, i, 64) + #print name + print "\tDataset[%u] name=[%s]\n" % (i, name) + + print "\n===============================\n" + + for steps in range (0, nt): + H5Part.H5PartSetStep(file,steps) + n = H5Part.H5PartGetNumParticles(file) + print "number of particles in %d step =" % steps , n , "\n" + x=H5Part.doubleArray(n) + y=H5Part.doubleArray(n) + z=H5Part.doubleArray(n) + px=H5Part.doubleArray(n) + py=H5Part.doubleArray(n) + pz=H5Part.doubleArray(n) + id=H5Part.longArray(n) + + H5Part.H5PartReadParticleStep(file,steps,x,y,z,px,py,pz,id) + + sumx = 0.0 + sumpz = 0.0 + + for i in range (0,n): + sumx += x[i] + sumpz += pz[i] + + print "\t=================================================" + print "\tstep= " , steps , " sum(x)= " , sumx , " sum(pz)= " , sumpz + print "\tfirst x is " , x[0] , "\tlast x is " , x[n-1] + print "\tFor fake data, expect sumx to be =" , x[0]*n + print "\t=================================================\n" + + H5Part.H5PartCloseFile(file) + return 1 + +def WriteFile(fn): + nt = 5 + np = 1024*1024 + print "Open " , fn + + file= H5Part.H5PartOpenFile(fn,H5Part.H5PART_WRITE) + + H5Part.H5PartWriteFileAttribString(file,"File Description", "This file is created by H5test.py. Simple H5Part file for testing purpose...") + #fileA = 2000 + #H5Part.H5PartWriteFileAttrib(file,"File Number will be 2000", H5Part.H5T_NATIVE_INT64, fileA, 1) #201326626 H5T_NATIVE_INT64 + + x=H5Part.doubleArray(np) + y=H5Part.doubleArray(np) + z=H5Part.doubleArray(np) + px=H5Part.doubleArray(np) + py=H5Part.doubleArray(np) + pz=H5Part.doubleArray(np) + id=H5Part.longArray(np) + + H5Part.H5PartSetNumParticles(file,np) + + for n in range(0,np): + id[n]=n + x[n]=1.0 + y[n]=2.0 + z[n]=3.0 + px[n]=1.0*n*(n%10) + py[n]=2.0*n*(n%10) + pz[n]=3.0*n*(n%10) + + for t in range(0,nt): + H5Part.H5PartSetStep(file,t) + print "Write Step %u\n" % t + H5Part.H5PartWriteDataFloat64(file,"x",x) + H5Part.H5PartWriteDataFloat64(file,"y",y) + H5Part.H5PartWriteDataFloat64(file,"z",z) + H5Part.H5PartWriteDataFloat64(file,"px",px) + H5Part.H5PartWriteDataFloat64(file,"py",py) + H5Part.H5PartWriteDataFloat64(file,"pz",pz) + H5Part.H5PartWriteDataInt64(file,"id",id) + + H5Part.H5PartCloseFile(file) + return 1 + + +if __name__ == "__main__": + fn ="H5test_py.h5" + + if WriteFile(fn) == 0: + print "Failed to write file " , fn + sys.exit(0) + + if ReadFile(fn) == 0: + print "Failed to read file " , fn + sys.exit(0) diff --git a/test/H5testF.f b/test/H5testF.f new file mode 100644 index 0000000..c8f73d3 --- /dev/null +++ b/test/H5testF.f @@ -0,0 +1,107 @@ +c ============== +c +c Sample Fortran program that uses HDF5 bindings +c +c ============== + + program H5testF + implicit none + include 'H5Part.inc' + INTEGER*8 file + INTEGER nstep,ndata + INTEGER*8 npoints + INTEGER step + INTEGER err + INTEGER I,J + REAL*8,ALLOCATABLE:: X(:),Y(:),Z(:),PX(:),PY(:),PZ(:) + INTEGER*8,ALLOCATABLE:: ID(:) + REAL*8 REALTIME + file = h5pt_openw("testfilef.h5") + print *,"Opened file testfilef.h5 for writing" + npoints = 1024 + nstep = 10 + ALLOCATE(X(npoints),Y(npoints),Z(npoints)) + ALLOCATE(PX(npoints),PY(npoints),PZ(npoints)) + ALLOCATE(ID(npoints)) + print *," Npoints=",npoints," nsteps=",nstep + print *," writing X,Y,Z,PX,PY,PZ,ID" + print *," ... initialize the data arrays" + do I=1,npoints + X(I)=0.0 + Y(I)=1.0+I + Z(I)=100.0+I*2.0 + ID(I)=I + enddo + print *,"Tell h5pt how many particles are stored in the file" +c set the number of points + call h5pt_setnpoints(file,npoints) + print *,"write an attribute string" +c write an annotation to the file + err=h5pt_writefileattrib_string(file,"Annotation","Testing 1 2 3") + print *,"and now write the steps" + do I=1,nstep +c Set the step number + print *,"Write Step ",I + call h5pt_setstep(file,I) +c Now start writing the data arrays for this step + call h5pt_writedata_r8(file,"x",X) + call h5pt_writedata_r8(file,"y",Y) + call h5pt_writedata_r8(file,"z",Z) + call h5pt_writedata_r8(file,"px",PX) + call h5pt_writedata_r8(file,"py",PY) + call h5pt_writedata_r8(file,"pz",PZ) + call h5pt_writedata_i8(file,"id",ID) + do J=1,npoints + ID(J)=ID(J)+10 + enddo +c And write a simple floatingpoint attribute associated with this timestep + REALTIME = I*0.1 + err=h5pt_writestepattrib_r8(file,"RealTime",REALTIME,1) + enddo + print *,"Done writing, now close the file" + call h5pt_close(file) + +c **************** Clean out some variables *************** + nstep=0 +c npoints=0 + do I=1,npoints + X(I)=-1.0 + Y(I)=-1.0 + Z(I)=-1.0 + ID(I)=0 + enddo + +c *****************Now Reopen for Reading ****************** + + + print *,"Open file for reading" + file = h5pt_openr("testfilef.h5") + print *," Opened testfilef.h5" + nstep = h5pt_getnsteps(file) + print *," Nsteps = ",nstep + call h5pt_setstep(file,1) + print *,"now get the number of datasets" + ndata = h5pt_getndatasets(file) + print *," Ndata=",ndata + npoints = h5pt_getnpoints(file) + print *," NP=",npoints + + + + do step=1,nstep + print *,"Read step ",step +c set the current step + call h5pt_setstep(file,step) + err=h5pt_readdata_i8(file,"id",ID) +c read the Z data from the current step +c call h5prt_readdata(file,step,X,Y,Z,PX,PY,PZ,ID) + do J=1,10 + print *," ID(",J,")==",ID(J) + enddo + enddo + + call h5pt_close(file) + print *,"done" + + end + diff --git a/test/H5testFpar.f b/test/H5testFpar.f new file mode 100644 index 0000000..a36d8ce --- /dev/null +++ b/test/H5testFpar.f @@ -0,0 +1,122 @@ +c ============== +c +c Sample Fortran program that uses HDF5 bindings +c +c ============== + + program H5testFpar + implicit none + include 'mpif.h' + include 'H5Part.inc' + INTEGER*8 file + INTEGER nstep,ndata + INTEGER*8 npoints,pointoffset + INTEGER step + INTEGER err + INTEGER I,J + REAL*8,ALLOCATABLE:: X(:),Y(:),Z(:),PX(:),PY(:),PZ(:) + INTEGER*8,ALLOCATABLE:: ID(:) + REAL*8 REALTIME + INTEGER myproc,nprocs + INTEGER ierr + INTEGER:: comm + + call MPI_Init(ierr) + comm = MPI_COMM_WORLD + call MPI_Comm_rank(comm,myproc,ierr) + call MPI_Comm_size(comm,nprocs,ierr) + + file = h5pt_openw_par("testfilef.h5",comm) + print *,"Opened file testfilef.h5 for writing" + npoints = 1024 + nstep = 10 + ALLOCATE(X(npoints),Y(npoints),Z(npoints)) + ALLOCATE(PX(npoints),PY(npoints),PZ(npoints)) + ALLOCATE(ID(npoints)) + print *," Npoints=",npoints," nsteps=",nstep + print *," writing X,Y,Z,PX,PY,PZ,ID" + print *," ... initialize the data arrays" + do I=1,npoints + X(I)=0.0 + Y(I)=1.0+I + Z(I)=100.0+I*2.0 + ID(I)=I + enddo + print *,"Tell h5pt how many particles are stored in the file" +c set the number of points + call h5pt_setnpoints(file,npoints) + print *,"write an attribute string" +c write an annotation to the file + err=h5pt_writefileattrib_string(file,"Annotation","Testing 1 2 3") + print *,"and now write the steps" + do I=1,nstep +c Set the step number + print *,"Write Step ",I + call h5pt_setstep(file,I) +c Now start writing the data arrays for this step + call h5pt_writedata_r8(file,"x",X) + call h5pt_writedata_r8(file,"y",Y) + call h5pt_writedata_r8(file,"z",Z) + call h5pt_writedata_r8(file,"px",PX) + call h5pt_writedata_r8(file,"py",PY) + call h5pt_writedata_r8(file,"pz",PZ) + call h5pt_writedata_i8(file,"id",ID) + do J=1,npoints + ID(J)=ID(J)+10 + enddo +c And write a simple floatingpoint attribute associated with this timestep + REALTIME = I*0.1 + err=h5pt_writestepattrib_r8(file,"RealTime",REALTIME,1) + enddo + print *,"Done writing, now close the file" + call h5pt_close(file) + +c **************** Clean out some variables *************** + nstep=0 +c npoints=0 + do I=1,npoints + X(I)=-1.0 + Y(I)=-1.0 + Z(I)=-1.0 + ID(I)=0 + enddo + +c *****************Now Reopen for Reading ****************** + + + print *,"Open file for reading" + file = h5pt_openr_par("testfilef.h5",comm) + print *," Opened testfilef.h5" + nstep = h5pt_getnsteps(file) + print *," Nsteps = ",nstep + call h5pt_setstep(file,1) + print *,"now get the number of datasets" + ndata = h5pt_getndatasets(file) + print *," Ndata=",ndata + npoints = h5pt_getnpoints(file) + print *," Total NP=",npoints + npoints = npoints/nprocs + pointoffset = npoints*myproc; + call h5pt_setview(file,pointoffset,pointoffset+npoints) + print *," Pointoffset=",pointoffset," Local NP=",npoints +c Now we need to set our view to read correct points + + + do step=1,nstep + print *,"Read step ",step +c set the current step + call h5pt_setstep(file,step) + err=h5pt_readdata_i8(file,"id",ID) +c read the Z data from the current step +c call h5prt_readdata(file,step,X,Y,Z,PX,PY,PZ,ID) + do J=1,10 + print *," ID(",J,")==",ID(J) + enddo + enddo + + call h5pt_close(file) + print *,"done" + call MPI_Finalize() + + end + diff --git a/test/Makefile.am b/test/Makefile.am new file mode 100644 index 0000000..8db93d1 --- /dev/null +++ b/test/Makefile.am @@ -0,0 +1,145 @@ +# test level Makefile.am + +# PATH SETTING +HDF5ROOT = @HDF5ROOT@ +PHDF5ROOT = @PHDF5ROOT@ + +# COMPILER SETTING +CXX = @CXX@ +FC = @FC@ +MPIFC = @MPIFC@ +MPICXX = @MPICXX@ +MPICC = @MPICC@ + +# COMPILER FLAG SETTING +CFLAGS = @CFLAGS@ +PCFLAGS = $(CFLAGS) -DPARALLEL_IO -DH5_HAVE_PARALLEL -DMPICH_IGNORE_CXX_SEEK +ADDFLAGS = @ADDFLAGS@ +FFLAGS = @FFLAGS@ $(ADDFLAGS) +PFFLAGS = $(CFLAGS) + +# LIBRARIES +SZLIB = @SZLIB@ +HDFLIB = -L$(HDF5ROOT)/lib -lhdf5 -lz $(SZLIB) @LDFLAGS@ +PHDFLIB = -L$(PHDF5ROOT)/lib -lhdf5 -lz $(SZLIB) @LDFLAGS@ +MPILIB = @MPILIB@ +LIBS = $(HDFLIB) -lm @STDCXX@ +PLIBS = $(PHDFLIB) $(MPILIB) -lm @STDCXX@ + +# H5Part compiled library location +# H5PLIB = -L@prefix@/lib +H5PLIB = -L@H5P_LIB_LOC@ + +# INCLUDES +HDFINC = -I$(HDF5ROOT)/include +PHDFINC = -I$(PHDF5ROOT)/include +MPIINC = @MPIINC@ +PINC = $(PHDFINC) $(MPIINC) $(H5PINC) +INC = $(HDFINC) $(H5PINC) + +# H5Part header file location +# H5PINC = -I@prefix@/include +H5PINC = -I@H5P_LIB_LOC@ + +# What to build... make install will place these files in the $(prefix)/bin directory. +bin_PROGRAMS = @TTARGET@ + +# Some useful scripts that I wish to place in the $(prefix)/bin directory. +bin_SCRIPTS = +#bin_SCRIPTS = JAC_H5PartTestP_script.scr JAC_H5testFpar_script.scr JAC_RUN_ALL_script.scr + +# Listing of all programs that maybe built. (Has to know statically...) +EXTRA_PROGRAMS = Bench H5PartTest H5testF H5PartTestP H5PartAndreasTest H5testFpar H5PartTestParallel H5test + +# Extra files that I wish to include in the dist tar ball. +EXTRA_DIST = Bench.c H5ecloudExample.cc H5ParallelTest.cc H5test.cc $(bin_SCRIPTS)## TO BE TAILORED LATER... + +# Listing of sources +Bench_SOURCES = Bench.c + +H5PartAndreasTest_SOURCES = H5PartAndreasTest.cc + +H5PartTest_SOURCES = H5PartTest.cc + +H5PartTestP_SOURCES = H5PartTest.cc + +H5testF_SOURCES = H5testF.f + +H5testFpar_SOURCES = H5testFpar.f + +H5PartTestParallel_SOURCES = H5PartTestParallel.cc + +H5test_SOURCES = H5test.cc + +# Specific building instruction (What compilers to use...) +# ------------ Build Tests ------------ + +Bench: Bench.c + $(MPICC) $(PCFLAGS) $(PINC) -o Bench Bench.c $(H5PLIB) -lpH5Part $(PLIBS) + +##################################################################################################################### + +H5PartTest: H5PartTest.o + $(CXX) -o H5PartTest H5PartTest.o $(H5PLIB) -lH5Part $(LIBS) + +H5PartTest.o: H5PartTest.cc + $(CXX) $(CFLAGS) $(INC) -DREGRESSIONTEST -g -c H5PartTest.cc + +##################################################################################################################### + +H5PartTestP: H5PartTestP.o + $(MPICXX) $(PINC) -o H5PartTestP H5PartTestP.o $(H5PLIB) -lpH5Part $(PLIBS) + +H5PartTestP.o: H5PartTest.cc + $(MPICXX) $(PCFLAGS) $(PINC) -DREGRESSIONTEST -c H5PartTest.cc -o H5PartTestP.o + +##################################################################################################################### + +H5PartTestParallel: H5PartTestParallel.o + $(MPICXX) -o H5PartTestParallel H5PartTestParallel.o $(H5PLIB) -lpH5Part $(PLIBS) + +H5PartTestParallel.o: H5PartTestParallel.cc + $(MPICXX) $(PCFLAGS) $(PINC) -c H5PartTestParallel.cc + +##################################################################################################################### + +H5PartAndreasTest: H5PartAndreasTest.o + $(MPICXX) -o H5PartAndreasTest H5PartAndreasTest.o $(H5PLIB) -lpH5Part $(PLIBS) + +H5PartAndreasTest.o: H5PartAndreasTest.cc + $(MPICXX) $(PCFLAGS) $(PINC) -c H5PartAndreasTest.cc + +##################################################################################################################### + +H5testF: H5testF.o + $(FC) -o H5testF H5testF.o $(H5PLIB) -lH5PartF -lH5Part $(LIBS) + +H5testF.o: H5testF.f + $(FC) $(FFLAGS) -c $(H5PINC) H5testF.f + +##################################################################################################################### + +H5testFpar: H5testFpar.o + $(MPIFC) -o H5testFpar H5testFpar.o $(H5PLIB) -lpH5PartF -lpH5Part $(PLIBS) + +H5testFpar.o: H5testFpar.f + $(MPIFC) $(PFFLAGS) -c $(H5PINC) H5testFpar.f + +##################################################################################################################### + +H5test: H5test.o + $(CXX) -o H5test H5test.o $(H5PLIB) -lH5Part $(LIBS) + +H5test.o: H5test.cc + $(CXX) $(CFLAGS) $(INC) -DREGRESSIONTEST -g -c H5test.cc + +##################################################################################################################### + +clean: + rm -f *~ *.o *.o H5testF H5PartTest H5PartTestP H5PartAndreasTest H5PartTestParallel H5testFpar Bench + +distclean: clean + rm -fr H5testF H5PartTest H5PartTestP H5PartAndreasTest H5PartTestParallel config.status config.log config.h .libs Makefile + + +##################################################################################################################### diff --git a/test/Makefile.in b/test/Makefile.in new file mode 100644 index 0000000..3c9217f --- /dev/null +++ b/test/Makefile.in @@ -0,0 +1,630 @@ +# Makefile.in generated by automake 1.9.5 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# test level Makefile.am + + +SOURCES = $(Bench_SOURCES) $(H5PartAndreasTest_SOURCES) $(H5PartTest_SOURCES) $(H5PartTestP_SOURCES) $(H5PartTestParallel_SOURCES) $(H5test_SOURCES) $(H5testF_SOURCES) $(H5testFpar_SOURCES) + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = .. +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +bin_PROGRAMS = @TTARGET@ +EXTRA_PROGRAMS = Bench$(EXEEXT) H5PartTest$(EXEEXT) H5testF$(EXEEXT) \ + H5PartTestP$(EXEEXT) H5PartAndreasTest$(EXEEXT) \ + H5testFpar$(EXEEXT) H5PartTestParallel$(EXEEXT) \ + H5test$(EXEEXT) +subdir = test +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)" +binPROGRAMS_INSTALL = $(INSTALL_PROGRAM) +PROGRAMS = $(bin_PROGRAMS) +am_Bench_OBJECTS = Bench.$(OBJEXT) +Bench_OBJECTS = $(am_Bench_OBJECTS) +Bench_LDADD = $(LDADD) +am_H5PartAndreasTest_OBJECTS = H5PartAndreasTest.$(OBJEXT) +H5PartAndreasTest_OBJECTS = $(am_H5PartAndreasTest_OBJECTS) +H5PartAndreasTest_LDADD = $(LDADD) +am_H5PartTest_OBJECTS = H5PartTest.$(OBJEXT) +H5PartTest_OBJECTS = $(am_H5PartTest_OBJECTS) +H5PartTest_LDADD = $(LDADD) +am_H5PartTestP_OBJECTS = H5PartTest.$(OBJEXT) +H5PartTestP_OBJECTS = $(am_H5PartTestP_OBJECTS) +H5PartTestP_LDADD = $(LDADD) +am_H5PartTestParallel_OBJECTS = H5PartTestParallel.$(OBJEXT) +H5PartTestParallel_OBJECTS = $(am_H5PartTestParallel_OBJECTS) +H5PartTestParallel_LDADD = $(LDADD) +am_H5test_OBJECTS = H5test.$(OBJEXT) +H5test_OBJECTS = $(am_H5test_OBJECTS) +H5test_LDADD = $(LDADD) +am_H5testF_OBJECTS = H5testF.$(OBJEXT) +H5testF_OBJECTS = $(am_H5testF_OBJECTS) +H5testF_LDADD = $(LDADD) +am_H5testFpar_OBJECTS = H5testFpar.$(OBJEXT) +H5testFpar_OBJECTS = $(am_H5testFpar_OBJECTS) +H5testFpar_LDADD = $(LDADD) +binSCRIPT_INSTALL = $(INSTALL_SCRIPT) +SCRIPTS = $(bin_SCRIPTS) +DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +CXXLD = $(CXX) +CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ + -o $@ +F77COMPILE = $(F77) $(AM_FFLAGS) $(FFLAGS) +F77LD = $(F77) +F77LINK = $(F77LD) $(AM_FFLAGS) $(FFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o \ + $@ +SOURCES = $(Bench_SOURCES) $(H5PartAndreasTest_SOURCES) \ + $(H5PartTest_SOURCES) $(H5PartTestP_SOURCES) \ + $(H5PartTestParallel_SOURCES) $(H5test_SOURCES) \ + $(H5testF_SOURCES) $(H5testFpar_SOURCES) +DIST_SOURCES = $(Bench_SOURCES) $(H5PartAndreasTest_SOURCES) \ + $(H5PartTest_SOURCES) $(H5PartTestP_SOURCES) \ + $(H5PartTestParallel_SOURCES) $(H5test_SOURCES) \ + $(H5testF_SOURCES) $(H5testFpar_SOURCES) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ADDFLAGS = @ADDFLAGS@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BAS_CC = @BAS_CC@ +BUILD_TOOLS = @BUILD_TOOLS@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ + +# COMPILER FLAG SETTING +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ + +# COMPILER SETTING +CXX = @CXX@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FC = @FC@ +FCFLAGS = @FCFLAGS@ +FFLAGS = @FFLAGS@ $(ADDFLAGS) +H5P_LIB_LOC = @H5P_LIB_LOC@ + +# PATH SETTING +HDF5ROOT = @HDF5ROOT@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = $(HDFLIB) -lm @STDCXX@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MPICC = @MPICC@ +MPICXX = @MPICXX@ +MPIFC = @MPIFC@ +MPIINC = @MPIINC@ +MPILIB = @MPILIB@ +MPIROOT = @MPIROOT@ +MTARGET = @MTARGET@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PHDF5ROOT = @PHDF5ROOT@ +PYTHON_PATH = @PYTHON_PATH@ +PY_WRAPPER = @PY_WRAPPER@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STDCXX = @STDCXX@ +STRIP = @STRIP@ + +# LIBRARIES +SZLIB = @SZLIB@ +TOOLS_CXX = @TOOLS_CXX@ +TOOLS_H5PART_LIB = @TOOLS_H5PART_LIB@ +TOOLS_HDFLIB = @TOOLS_HDFLIB@ +TTARGET = @TTARGET@ +UNDERSCORE_H = @UNDERSCORE_H@ +VERSION = @VERSION@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_FC = @ac_ct_FC@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +PCFLAGS = $(CFLAGS) -DPARALLEL_IO -DH5_HAVE_PARALLEL -DMPICH_IGNORE_CXX_SEEK +PFFLAGS = $(CFLAGS) +HDFLIB = -L$(HDF5ROOT)/lib -lhdf5 -lz $(SZLIB) @LDFLAGS@ +PHDFLIB = -L$(PHDF5ROOT)/lib -lhdf5 -lz $(SZLIB) @LDFLAGS@ +PLIBS = $(PHDFLIB) $(MPILIB) -lm @STDCXX@ + +# H5Part compiled library location +# H5PLIB = -L@prefix@/lib +H5PLIB = -L@H5P_LIB_LOC@ + +# INCLUDES +HDFINC = -I$(HDF5ROOT)/include +PHDFINC = -I$(PHDF5ROOT)/include +PINC = $(PHDFINC) $(MPIINC) $(H5PINC) +INC = $(HDFINC) $(H5PINC) + +# H5Part header file location +# H5PINC = -I@prefix@/include +H5PINC = -I@H5P_LIB_LOC@ + +# Some useful scripts that I wish to place in the $(prefix)/bin directory. +bin_SCRIPTS = + +# Extra files that I wish to include in the dist tar ball. +EXTRA_DIST = Bench.c H5ecloudExample.cc H5ParallelTest.cc H5test.cc $(bin_SCRIPTS)## TO BE TAILORED LATER... + +# Listing of sources +Bench_SOURCES = Bench.c +H5PartAndreasTest_SOURCES = H5PartAndreasTest.cc +H5PartTest_SOURCES = H5PartTest.cc +H5PartTestP_SOURCES = H5PartTest.cc +H5testF_SOURCES = H5testF.f +H5testFpar_SOURCES = H5testFpar.f +H5PartTestParallel_SOURCES = H5PartTestParallel.cc +H5test_SOURCES = H5test.cc +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .cc .f .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign test/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign test/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) + test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)" + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ + if test -f $$p \ + ; then \ + f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \ + echo " $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \ + $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \ + else :; fi; \ + done + +uninstall-binPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ + echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \ + rm -f "$(DESTDIR)$(bindir)/$$f"; \ + done + +clean-binPROGRAMS: + -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) +install-binSCRIPTS: $(bin_SCRIPTS) + @$(NORMAL_INSTALL) + test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)" + @list='$(bin_SCRIPTS)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + if test -f $$d$$p; then \ + f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \ + echo " $(binSCRIPT_INSTALL) '$$d$$p' '$(DESTDIR)$(bindir)/$$f'"; \ + $(binSCRIPT_INSTALL) "$$d$$p" "$(DESTDIR)$(bindir)/$$f"; \ + else :; fi; \ + done + +uninstall-binSCRIPTS: + @$(NORMAL_UNINSTALL) + @list='$(bin_SCRIPTS)'; for p in $$list; do \ + f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \ + echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \ + rm -f "$(DESTDIR)$(bindir)/$$f"; \ + done + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Bench.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/H5PartAndreasTest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/H5PartTest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/H5PartTestParallel.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/H5test.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + +.cc.o: +@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< + +.cc.obj: +@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.f.o: + $(F77COMPILE) -c -o $@ $< + +.f.obj: + $(F77COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` +uninstall-info-am: + +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; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + 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; } \ + END { for (i in files) print i; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + 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; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(PROGRAMS) $(SCRIPTS) +installdirs: + for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)"; do \ + test -z "$$dir" || $(mkdir_p) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(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 +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean-am: clean-binPROGRAMS clean-generic mostlyclean-am + +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-exec-am: install-binPROGRAMS install-binSCRIPTS + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-binPROGRAMS uninstall-binSCRIPTS \ + uninstall-info-am + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \ + clean-generic ctags distclean distclean-compile \ + distclean-generic distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-binPROGRAMS \ + install-binSCRIPTS install-data install-data-am install-exec \ + install-exec-am install-info install-info-am install-man \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \ + tags uninstall uninstall-am uninstall-binPROGRAMS \ + uninstall-binSCRIPTS uninstall-info-am + + +# Specific building instruction (What compilers to use...) +# ------------ Build Tests ------------ + +Bench: Bench.c + $(MPICC) $(PCFLAGS) $(PINC) -o Bench Bench.c $(H5PLIB) -lpH5Part $(PLIBS) + +##################################################################################################################### + +H5PartTest: H5PartTest.o + $(CXX) -o H5PartTest H5PartTest.o $(H5PLIB) -lH5Part $(LIBS) + +H5PartTest.o: H5PartTest.cc + $(CXX) $(CFLAGS) $(INC) -DREGRESSIONTEST -g -c H5PartTest.cc + +##################################################################################################################### + +H5PartTestP: H5PartTestP.o + $(MPICXX) -o H5PartTestP H5PartTestP.o $(H5PLIB) -lpH5Part $(PLIBS) + +H5PartTestP.o: H5PartTest.cc + $(MPICXX) $(PCFLAGS) $(PINC) -DREGRESSIONTEST -c H5PartTest.cc -o H5PartTestP.o + +##################################################################################################################### + +H5PartTestParallel: H5PartTestParallel.o + $(MPICXX) -o H5PartTestParallel H5PartTestParallel.o $(H5PLIB) -lpH5Part $(PLIBS) + +H5PartTestParallel.o: H5PartTestParallel.cc + $(MPICXX) $(PCFLAGS) $(PINC) -c H5PartTestParallel.cc + +##################################################################################################################### + +H5PartAndreasTest: H5PartAndreasTest.o + $(MPICXX) -o H5PartAndreasTest H5PartAndreasTest.o $(H5PLIB) -lpH5Part $(PLIBS) + +H5PartAndreasTest.o: H5PartAndreasTest.cc + $(MPICXX) $(PCFLAGS) $(PINC) -c H5PartAndreasTest.cc + +##################################################################################################################### + +H5testF: H5testF.o + $(FC) -o H5testF H5testF.o $(H5PLIB) -lH5PartF -lH5Part $(LIBS) + +H5testF.o: H5testF.f + $(FC) $(FFLAGS) -c $(H5PINC) H5testF.f + +##################################################################################################################### + +H5testFpar: H5testFpar.o + $(MPIFC) -o H5testFpar H5testFpar.o $(H5PLIB) -lpH5PartF -lpH5Part $(PLIBS) + +H5testFpar.o: H5testFpar.f + $(MPIFC) $(PFFLAGS) -c $(H5PINC) H5testFpar.f + +##################################################################################################################### + +H5test: H5test.o + $(CXX) -o H5test H5test.o $(H5PLIB) -lH5Part $(LIBS) + +H5test.o: H5test.cc + $(CXX) $(CFLAGS) $(INC) -DREGRESSIONTEST -g -c H5test.cc + +##################################################################################################################### + +clean: + rm -f *~ *.o *.o H5testF H5PartTest H5PartTestP H5PartAndreasTest H5PartTestParallel H5testFpar Bench + +distclean: clean + rm -fr H5testF H5PartTest H5PartTestP H5PartAndreasTest H5PartTestParallel config.status config.log config.h .libs Makefile + +##################################################################################################################### +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/tools/Makefile.am b/tools/Makefile.am new file mode 100644 index 0000000..7ee7a8a --- /dev/null +++ b/tools/Makefile.am @@ -0,0 +1,72 @@ +# tools level Makefile.am + +# PATH SETTING +HDF5ROOT = @HDF5ROOT@ + +# COMPILER SETTING +CXX = @CXX@ +TOOLS_CXX = @TOOLS_CXX@ + +# COMPILER FLAG SETTING +CFLAGS = @CFLAGS@ + +# # -L$(HDF5ROOT)/lib -lhdf5 + +# LIBRARIES +SZLIB = @SZLIB@ +HDFLIB = @TOOLS_HDFLIB@ -lz $(SZLIB) +LIBS = $(HDFLIB) -lm @STDCXX@ @LDFLAGS@ + +# H5Part compiled library location +# H5PLIB = -L@prefix@/lib +H5PLIB = -L@H5P_LIB_LOC@ @TOOLS_H5PART_LIB@ + +# INCLUDES +HDFINC = -I$(HDF5ROOT)/include +INC = $(HDFINC) $(H5PINC) + +# H5Part header file location +# H5PINC = -I@prefix@/include +H5PINC = -I@H5P_LIB_LOC@ + +# What to build... make install will place these files in the $(prefix)/bin directory. +bin_PROGRAMS = @BUILD_TOOLS@ + +# Listing of all programs that maybe built. (Has to know statically...) +EXTRA_PROGRAMS = h5pAttrib h5pToGNUplot + +# Extra files that I wish to include in the dist tar ball. +EXTRA_DIST = h5pAttrib.cc h5pToGNUplot.cc## TO BE TAILORED LATER... + +# Listing of sources +h5pAttrib_SOURCES = h5pAttrib.cc + +h5pToGNUplot_SOURCES = h5pToGNUplot.cc + +# Specific building instruction (What compilers to use...) +# ------------ Build Tools ------------ + +h5pAttrib: h5pAttrib.o + $(TOOLS_CXX) -o h5pAttrib h5pAttrib.o $(H5PLIB) $(LIBS) + +h5pAttrib.o: h5pAttrib.cc + $(TOOLS_CXX) $(CFLAGS) $(INC) -g -c h5pAttrib.cc + + +h5pToGNUplot: h5pToGNUplot.o + $(TOOLS_CXX) -o h5pToGNUplot h5pToGNUplot.o $(H5PLIB) $(LIBS) + +h5pToGNUplot.o: h5pToGNUplot.cc + $(TOOLS_CXX) $(CFLAGS) $(INC) -g -c h5pToGNUplot.cc + +clean: + rm -f *~ *.o h5pAttrib h5pToGNUplot + +distclean: clean + + +# # bash-3.00$ /usr/bin/mpcc_r -g -O2 -I/scratch/scratchdirs/cristina/hdf5/hdf5_par/include -I/u2/antino/trunk/src -c h5pAttrib.cc +# # bash-3.00$ /usr/bin/mpcc_r -o h5pAttrib h5pAttrib.o -L/u2/antino/trunk/src -lpH5Part -L/scratch/scratchdirs/cristina/hdf5/hdf5_par/lib -lhdf5 -lz -lm + + +##################################################################################################################### diff --git a/tools/Makefile.in b/tools/Makefile.in new file mode 100644 index 0000000..94ace74 --- /dev/null +++ b/tools/Makefile.in @@ -0,0 +1,488 @@ +# Makefile.in generated by automake 1.9.5 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# tools level Makefile.am + +SOURCES = $(h5pAttrib_SOURCES) $(h5pToGNUplot_SOURCES) + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = .. +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +bin_PROGRAMS = @BUILD_TOOLS@ +EXTRA_PROGRAMS = h5pAttrib$(EXEEXT) h5pToGNUplot$(EXEEXT) +subdir = tools +DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +am__installdirs = "$(DESTDIR)$(bindir)" +binPROGRAMS_INSTALL = $(INSTALL_PROGRAM) +PROGRAMS = $(bin_PROGRAMS) +am_h5pAttrib_OBJECTS = h5pAttrib.$(OBJEXT) +h5pAttrib_OBJECTS = $(am_h5pAttrib_OBJECTS) +h5pAttrib_LDADD = $(LDADD) +am_h5pToGNUplot_OBJECTS = h5pToGNUplot.$(OBJEXT) +h5pToGNUplot_OBJECTS = $(am_h5pToGNUplot_OBJECTS) +h5pToGNUplot_LDADD = $(LDADD) +DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +CXXLD = $(CXX) +CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ + -o $@ +SOURCES = $(h5pAttrib_SOURCES) $(h5pToGNUplot_SOURCES) +DIST_SOURCES = $(h5pAttrib_SOURCES) $(h5pToGNUplot_SOURCES) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ADDFLAGS = @ADDFLAGS@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BAS_CC = @BAS_CC@ +BUILD_TOOLS = @BUILD_TOOLS@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ + +# COMPILER FLAG SETTING +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ + +# COMPILER SETTING +CXX = @CXX@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FC = @FC@ +FCFLAGS = @FCFLAGS@ +FFLAGS = @FFLAGS@ +H5P_LIB_LOC = @H5P_LIB_LOC@ + +# PATH SETTING +HDF5ROOT = @HDF5ROOT@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = $(HDFLIB) -lm @STDCXX@ @LDFLAGS@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MPICC = @MPICC@ +MPICXX = @MPICXX@ +MPIFC = @MPIFC@ +MPIINC = @MPIINC@ +MPILIB = @MPILIB@ +MPIROOT = @MPIROOT@ +MTARGET = @MTARGET@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PHDF5ROOT = @PHDF5ROOT@ +PYTHON_PATH = @PYTHON_PATH@ +PY_WRAPPER = @PY_WRAPPER@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STDCXX = @STDCXX@ +STRIP = @STRIP@ + +# # -L$(HDF5ROOT)/lib -lhdf5 + +# LIBRARIES +SZLIB = @SZLIB@ +TOOLS_CXX = @TOOLS_CXX@ +TOOLS_H5PART_LIB = @TOOLS_H5PART_LIB@ +TOOLS_HDFLIB = @TOOLS_HDFLIB@ +TTARGET = @TTARGET@ +UNDERSCORE_H = @UNDERSCORE_H@ +VERSION = @VERSION@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_FC = @ac_ct_FC@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +HDFLIB = @TOOLS_HDFLIB@ -lz $(SZLIB) + +# H5Part compiled library location +# H5PLIB = -L@prefix@/lib +H5PLIB = -L@H5P_LIB_LOC@ @TOOLS_H5PART_LIB@ + +# INCLUDES +HDFINC = -I$(HDF5ROOT)/include +INC = $(HDFINC) $(H5PINC) + +# H5Part header file location +# H5PINC = -I@prefix@/include +H5PINC = -I@H5P_LIB_LOC@ + +# Extra files that I wish to include in the dist tar ball. +EXTRA_DIST = h5pAttrib.cc h5pToGNUplot.cc## TO BE TAILORED LATER... + +# Listing of sources +h5pAttrib_SOURCES = h5pAttrib.cc +h5pToGNUplot_SOURCES = h5pToGNUplot.cc +all: all-am + +.SUFFIXES: +.SUFFIXES: .cc .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign tools/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign tools/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) + test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)" + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ + if test -f $$p \ + ; then \ + f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \ + echo " $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \ + $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \ + else :; fi; \ + done + +uninstall-binPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ + echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \ + rm -f "$(DESTDIR)$(bindir)/$$f"; \ + done + +clean-binPROGRAMS: + -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/h5pAttrib.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/h5pToGNUplot.Po@am__quote@ + +.cc.o: +@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< + +.cc.obj: +@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` +uninstall-info-am: + +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; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + 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; } \ + END { for (i in files) print i; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + 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; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(PROGRAMS) +installdirs: + for dir in "$(DESTDIR)$(bindir)"; do \ + test -z "$$dir" || $(mkdir_p) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(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 +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean-am: clean-binPROGRAMS clean-generic mostlyclean-am + +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-exec-am: install-binPROGRAMS + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-binPROGRAMS uninstall-info-am + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \ + clean-generic ctags distclean distclean-compile \ + distclean-generic distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-binPROGRAMS \ + install-data install-data-am install-exec install-exec-am \ + install-info install-info-am install-man install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \ + uninstall-am uninstall-binPROGRAMS uninstall-info-am + + +# Specific building instruction (What compilers to use...) +# ------------ Build Tools ------------ + +h5pAttrib: h5pAttrib.o + $(TOOLS_CXX) -o h5pAttrib h5pAttrib.o $(H5PLIB) $(LIBS) + +h5pAttrib.o: h5pAttrib.cc + $(TOOLS_CXX) $(CFLAGS) $(INC) -g -c h5pAttrib.cc + +h5pToGNUplot: h5pToGNUplot.o + $(TOOLS_CXX) -o h5pToGNUplot h5pToGNUplot.o $(H5PLIB) $(LIBS) + +h5pToGNUplot.o: h5pToGNUplot.cc + $(TOOLS_CXX) $(CFLAGS) $(INC) -g -c h5pToGNUplot.cc + +clean: + rm -f *~ *.o h5pAttrib h5pToGNUplot + +distclean: clean + +# # bash-3.00$ /usr/bin/mpcc_r -g -O2 -I/scratch/scratchdirs/cristina/hdf5/hdf5_par/include -I/u2/antino/trunk/src -c h5pAttrib.cc +# # bash-3.00$ /usr/bin/mpcc_r -o h5pAttrib h5pAttrib.o -L/u2/antino/trunk/src -lpH5Part -L/scratch/scratchdirs/cristina/hdf5/hdf5_par/lib -lhdf5 -lz -lm + +##################################################################################################################### +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/tools/README b/tools/README new file mode 100644 index 0000000..03d4d7a --- /dev/null +++ b/tools/README @@ -0,0 +1,356 @@ +TABLE OF CONTENTS +-------------------- + +[1] Quick Guide + +--- For h5pAttrib +[2] To see number of timesteps in a h5part file +[3] To see file attributes in a h5part file +[4] To see step attributes in a h5part file +[5] To see dataset in a h5part file +[6] Providing more than one flag at once for h5pAttrib + +--- For h5pToGNUplot +[7] What parameters to provide +[8] How to create an input file to GNUplot + + +************************************************************************************************ + + +[1] Quick Guide +------------------ + +--> -h option will display a concise help page. + +$>> ./h5pAttrib -h + +usage: h5pAttrib [OPTIONS] file + + OPTIONS + -h, --help Print help page + -n, --nstep Print number of steps + -A, --fileA Print file attributes + -a, --stepA Print step attributes & values for time step n + -d, --dataset Print data sets names & values for time step n + -H, --header Print shorter version without the values + + Examples: + + 1) Show file attribute names & values of sample.h5part + + h5pAttrib -A sample.h5part + + 2) Show step attribute names for time step 5 of sample.h5part + + h5pAttrib -a 5 -H sample.h5part + + + +$>> ./h5pToGNUplot -h + +usage: h5pToGNUplot -t TIMESTEP -1 VARIABLE#1 -2 VARIABLE#2 -i INPUTFILE [OPTIONAL_FLAGS] + + FLAGS + -h, --help Print help page + -1, --1var (REQUIRED) Takes first variable parameter + -2, --2var (REQUIRED) Takes second variable parameter + -i, --input (REQUIRED) Takes input file name + -t, --timestep (REQUIRED) Sets the timestep (Value -1 will result in dumping values of all timesteps.) + -o, --output (OPTIONAL) Takes output file name (without this flag, the program will print to stdout) + -n, --number (OPTIONAL) Sets number of output points + -s, --start (OPTIONAL) Sets the starting particle index + + Examples: + + 1) Create GNU plot file output.txt from sample.h5part by ploting x vs px for timestep 54 + + h5pToGNUplot -t 54 -1 x -2 px -i sample.h5part -o output.txt + + 2) Create GNU plot file output.txt from sample.h5part by ploting x vs px for timestep 54 + using 1200 points from particle index 76 + + h5pToGNUplot -t 54 -1 x -2 px -i sample.h5part -o output.txt -s 76 -n 1200 + +************************************************************************************************ +--- For h5pAttrib +************************************************************************************************ + +[2] To see number of timesteps in a h5part file +-------------------------------------------------- + +EXAMPLE>> + +$>> ./h5pAttrib -n sample.h5part + +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +Printing number of timesteps for: sample.h5part ... + +There are total 252 number of timesteps. +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +done + + +[3] To see file attributes in a h5part file +---------------------------------------------- + +EXAMPLE>> + +$>> ./h5pAttrib -A sample.h5part + +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +Printing file attributes for: sample.h5part ... + +The number of file attributes for file sample.h5part is 0 ... +There are no file attributes. +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +done + + +NOTE: -H option will omit the list of values of file attributes. + + +[4] To see step attributes in a h5part file +---------------------------------------------- + +EXAMPLE>> + +$>> ./h5pAttrib -a 2 sample.h5part + +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +Printing step attributes for: sample.h5part ... + +The number of step attributes for timestep #2 is 10 ... + +Attribute #0 = Step +There are 1 elements in the attribute +Attribute Type is H5T_NATIVE_INT64 +Printing 1 element value(s): +COUNT[0]: 2 + +Attribute #1 = Spos +There are 1 elements in the attribute +Attribute Type is H5T_NATIVE_DOUBLE +Printing 1 element value(s): +COUNT[0]: 0.143580 + +Attribute #2 = structLen +There are 1 elements in the attribute +Attribute Type is H5T_NATIVE_DOUBLE +Printing 1 element value(s): +COUNT[0]: 2.393000 + +. +. +. + + +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +done + + +NOTE: -H option will omit the list of values of step attributes. + + +[5] To see dataset in a h5part file +-------------------------------------- + +EXAMPLE>> + +$>> ./h5pAttrib -d 2 -H sample.h5part + +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +Printing names of datasets for: sample.h5part ... + +The number of datasets for timestep #2 is 7 ... + +Dataset Name #0 = id +Dataset Type is H5T_NATIVE_INT64 +Number of elements: 67587 + +Dataset Name #1 = px +Dataset Type is H5T_NATIVE_DOUBLE +Number of elements: 67587 + +Dataset Name #2 = py +Dataset Type is H5T_NATIVE_DOUBLE +Number of elements: 67587 + +Dataset Name #3 = pz +Dataset Type is H5T_NATIVE_DOUBLE +Number of elements: 67587 + +Dataset Name #4 = x +Dataset Type is H5T_NATIVE_DOUBLE +Number of elements: 67587 + +Dataset Name #5 = y +Dataset Type is H5T_NATIVE_DOUBLE +Number of elements: 67587 + +Dataset Name #6 = z +Dataset Type is H5T_NATIVE_DOUBLE +Number of elements: 67587 + +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +done + + +NOTE: -H option will omit the list of values of dataset attributes. + +[6] Providing more than one flag at once +------------------------------------------- + +When more than one flags are provided, one result after another will be displayed. + +EXAMPLE>> + +$>> ./h5pAttrib -H -a 1 -d 1 sample.h5part + +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +Printing step attributes for: sample.h5part ... + +The number of step attributes for timestep #1 is 10 ... + +Attribute #0 = Step +Attribute #1 = Spos +Attribute #2 = structLen +Attribute #3 = org +Attribute #4 = maxX +Attribute #5 = minX +Attribute #6 = maxP +Attribute #7 = minP +Attribute #8 = centroid +Attribute #9 = nloc +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + + +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +Printing names of datasets for: sample.h5part ... + +The number of datasets for timestep #1 is 7 ... + +Dataset Name #0 = id +Dataset Type is H5T_NATIVE_INT64 +Number of elements: 60214 + +Dataset Name #1 = px +Dataset Type is H5T_NATIVE_DOUBLE +Number of elements: 60214 + +Dataset Name #2 = py +Dataset Type is H5T_NATIVE_DOUBLE +Number of elements: 60214 + +Dataset Name #3 = pz +Dataset Type is H5T_NATIVE_DOUBLE +Number of elements: 60214 + +Dataset Name #4 = x +Dataset Type is H5T_NATIVE_DOUBLE +Number of elements: 60214 + +Dataset Name #5 = y +Dataset Type is H5T_NATIVE_DOUBLE +Number of elements: 60214 + +Dataset Name #6 = z +Dataset Type is H5T_NATIVE_DOUBLE +Number of elements: 60214 + +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +done + +************************************************************************************************ +--- For h5pAttrib +************************************************************************************************ + +[7] What parameters to provide +--------------------------------- + +When you execute the program with -h option, it displays what flags are necessary and what flags +are optional. + + -h, --help Print help page + -1, --1var (REQUIRED) Takes first variable parameter + -2, --2var (REQUIRED) Takes second variable parameter + -i, --input (REQUIRED) Takes input file name + -t, --timestep (REQUIRED) Sets the timestep (Value -1 will result in dumping values of all timesteps.) + -o, --output (OPTIONAL) Takes output file name (without this flag, the program will print to stdout) + -n, --number (OPTIONAL) Sets number of output points + -s, --start (OPTIONAL) Sets the starting particle index + + +[8] How to create an input file to GNUplot +--------------------------------------------- + +EXAMPLE>> +Create input file to GNUplot that plots x vs. y. + +$>> ./h5pToGNUplot -1 x -2 y -t 1 -i sample.h5part -o output.txt +$>> cat output.txt +-0.390779 -0.254793 +-0.396527 -0.252781 +-0.375362 -0.285137 +-0.396527 -0.252781 +-0.379917 -0.283147 +-0.390779 -0.254793 +-0.387536 -0.287346 +-0.371787 -0.319797 +-0.379917 -0.283147 +-0.378967 -0.326058 +-0.378976 -0.326078 +-0.387536 -0.287346 +-0.378957 -0.326069 +-0.379917 -0.283147 +-0.388762 -0.265390 +-0.371787 -0.319797 +-0.390779 -0.254793 +-0.376825 -0.266804 +-0.379917 -0.283147 +-0.375362 -0.285137 +... + +Then run GNUplot... + +$>> gnuplot + + G N U P L O T + Version 4.0 patchlevel 0 + last modified Thu Apr 15 14:44:22 CEST 2004 + System: Linux 2.6.11.4-21.11-smp + + Copyright (C) 1986 - 1993, 1998, 2004 + Thomas Williams, Colin Kelley and many others + + This is gnuplot version 4.0. Please refer to the documentation + for command syntax changes. The old syntax will be accepted + throughout the 4.0 series, but all save files use the new syntax. + + Type `help` to access the on-line reference manual. + The gnuplot FAQ is available from + http://www.gnuplot.info/faq/ + + Send comments and requests for help to + + Send bugs, suggestions and mods to + + + +Terminal type set to 'x11' +gnuplot> plot "output.txt" + +This will open a GNUplot window that plots output.txt. + + diff --git a/tools/h5Proot/GNUmakefile b/tools/h5Proot/GNUmakefile new file mode 100644 index 0000000..3389be8 --- /dev/null +++ b/tools/h5Proot/GNUmakefile @@ -0,0 +1,82 @@ +#--------------------------------------------------- +# get compilation and library flags from root-config + +ROOTCFLAGS = $(shell $(ROOTSYS)/bin/root-config --cflags) +ROOTLIBS = $(shell $(ROOTSYS)/bin/root-config --libs) +ROOTGLIBS = $(shell $(ROOTSYS)/bin/root-config --glibs) + +# depending on the architecture, choose the compiler, +# linker, and the flags to use +# + +# -- Linux +ifeq ($(OSTYPE),linux) +CXX = g++ +CXXFLAGS = -g -Wall -fPIC +LD = g++ +LDFLAGS = -g +SOFLAGS = -shared +endif + +# the output from the root-config script: +CXXFLAGS += $(ROOTCFLAGS) +LDFLAGS += -lhdf5_cpp -lhdf5 + +# include paths +CXX += -I$(HDF5)/include +CXX += -L$(HDF5)/lib +CXX += -I$(H5Part)/src/ + +# include H5Part.o in linking +##LD += $(H5Part)/src/H5Part.o + +# the ROOT libraries (G = graphic) +LIBS = $(ROOTLIBS) +GLIBS = $(ROOTGLIBS) + +LIBS += -lhdf5_cpp -lhdf5 +LIBS += -L$(HDF5)/lib + +GLIBS += -lhdf5_cpp -lhdf5 +GLIBS += -L$(HDF5)/lib + +# some definitions: headers, sources, objects,... +OBJS = H5root.o +OBJS += TH5Dataset.o TH5DatasetDict.o +OBJS += TH5MainFrame.o TH5MainFrameDict.o +OBJS += TH5Legend.o TH5LegendDict.o +PROGRAM = H5root + +# the link command +# +all: $(PROGRAM) +$(PROGRAM): $(OBJS) + @echo "---> Linking $(PROGRAM) ..." + @/bin/rm -f $(PROGRAM) + @$(LD) $(OBJS) -o $(PROGRAM) $(H5Part)/src/H5Part.o $(GLIBS) + @chmod 555 $(PROGRAM) + @echo "done" + +# clean up: remove all object file (and core files) +# semicolon needed to tell make there is no source +# for this target! +# +clean:; @rm -f $(OBJS) *Dict* core* $(PROGRAM) + @echo "---> removing $(OBJS) and dictionaries" +### +$(OBJS): %.o: %.cc H5Style.h + $(CXX) $(CXXFLAGS) -c $< + +# Create the dictionaries with rootcint: +# (temporarily remove H5Part.hh because rootcint cannot find it) +DICT = TH5DatasetDict.cc TH5MainFrameDict.cc +$(DICT): TH5Dataset.h TH5MainFrame.h + @echo "Generating dictionary for TH5Dataset and TH5MainFrame" + @awk '$$0!~/H5Part.hh/ {print $$0}' TH5Dataset.h > TH5Dataset.h_ + @mv TH5Dataset.h TH5Dataset.h_orig + @mv TH5Dataset.h_ TH5Dataset.h + @rootcint -f TH5DatasetDict.cc -c TH5Dataset.h + @rootcint -f TH5MainFrameDict.cc -c TH5MainFrame.h + @rootcint -f TH5LegendDict.cc -c TH5Legend.h + @mv -f TH5Dataset.h_orig TH5Dataset.h +#--------------------------------------------------- diff --git a/tools/h5Proot/H5Style.h b/tools/h5Proot/H5Style.h new file mode 100644 index 0000000..9ed6beb --- /dev/null +++ b/tools/h5Proot/H5Style.h @@ -0,0 +1,179 @@ +#include +#include +#include +#include +#include + +#include +#include +using namespace std; + +TPaveText *h5Name = new TPaveText(0.65,0.8,0.9,0.9,"BRNDC"); +TText *h5Label = new TText(); +TLatex *h5Latex = new TLatex(); + +void h5Style() +{ +//////////////////////////////////////////////////////////////////// +// PURPOSE: +// +// This header file defines a reasonable style for (black-and-white) +// "publication quality" ROOT plots. The default settings contain +// many features that are either not desirable for printing on white +// paper or impair the general readibility of plots. +// +// USAGE: +// +// Simply include the line +// #include "H5Style.h" +// at the beginning of your root program (and make sure H5Style.h is +// in a location accessible to the compiler). Then add the line +// h5Style(); +// somewhere at the beginning of your main(). +// +// SOME COMMENTS: +// +// Statistics and fit boxes: +// +// "Decorative" items around the histogram are kept to a minimum. +// In particular there is no box with statistics or fit information. +// You can easily change this either by editing your private copy +// of this style file or by calls to "gStyle" in your macro. +// For example, +// gStyle->SetOptFit(1011); +// will add some fit information. +// +// Font: +// +// The font is chosen to be 62, i.e.helvetica-bold-r-normal with +// precision 2. Font is of course a matter of taste, but most people +// will probably agree that Helvetica bold gives close to optimal +// readibility in presentations. It appears to be the ROOT default, +// and since there are still some features in ROOT that simply won't +// respond to any font requests, it is the wise choice to avoid +// ugly font mixtures on the same plot... The precision of the font (2) +// is chosen in order to have a rotatable and scalable font. Be sure +// to use true-type fonts! I.e. +// Unix.*.Root.UseTTFonts: true in your .rootrc file. +// +// "Landscape histograms": +// +// The style here is designed for more or less quadratic plots. +// For very long histograms, adjustements are needed. For instance, +// for a canvas with 1x5 histograms: +// TCanvas* c1 = new TCanvas("c1", "L0 muons", 600, 800); +// c1->Divide(1,5); +// adaptions like the following will be needed: +// gStyle->SetTickLength(0.05,"x"); +// gStyle->SetTickLength(0.01,"y"); +// gStyle->SetLabelSize(0.15,"x"); +// gStyle->SetLabelSize(0.1,"y"); +// gStyle->SetStatW(0.15); +// gStyle->SetStatH(0.5); +// +//////////////////////////////////////////////////////////////////// + +cout << "\n\tloading H5PartROOT style file\n " << endl; + +TStyle *h5Style= new TStyle("h5Style","H5Part plots style"); + +// use helvetica-bold-r-normal, precision 2 (rotatable) +Int_t h5Font = 62; + +// line thickness +Width_t h5Width = 2; + +// use plain black on white colors +h5Style->SetFrameBorderMode(0); +h5Style->SetCanvasBorderMode(0); +h5Style->SetPadBorderMode(0); +h5Style->SetPadColor(0); +h5Style->SetCanvasColor(0); +h5Style->SetStatColor(0); +h5Style->SetPalette(1); +//h5Style->SetTitleColor(0); +//h5Style->SetFillColor(0); + +// set the paper & margin sizes +h5Style->SetPaperSize(20,26); +h5Style->SetPadTopMargin(0.05); +h5Style->SetPadRightMargin(0.05); // increase for colz plots!! +h5Style->SetPadBottomMargin(0.16); +h5Style->SetPadLeftMargin(0.12); + +// use large fonts +h5Style->SetTextFont(h5Font); +h5Style->SetTextSize(0.08); +h5Style->SetLabelFont(h5Font,"x"); +h5Style->SetLabelFont(h5Font,"y"); +h5Style->SetLabelFont(h5Font,"z"); +h5Style->SetLabelSize(0.05,"x"); +h5Style->SetLabelSize(0.05,"y"); +h5Style->SetLabelSize(0.05,"z"); +h5Style->SetTitleFont(h5Font); +h5Style->SetTitleSize(0.06,"x"); +h5Style->SetTitleSize(0.06,"y"); +h5Style->SetTitleSize(0.06,"z"); + +// use bold lines and markers +h5Style->SetLineWidth(h5Width); +h5Style->SetFrameLineWidth(h5Width); +h5Style->SetHistLineWidth(h5Width); +h5Style->SetFuncWidth(h5Width); +h5Style->SetGridWidth(h5Width); +h5Style->SetLineStyleString(2,"[12 12]"); // postscript dashes +h5Style->SetMarkerStyle(8); +h5Style->SetMarkerSize(1.0); + +// label offsets +h5Style->SetLabelOffset(0.015); + +// statistics box: +h5Style->SetOptStat(1110); // show only nent, mean, rms +h5Style->SetStatBorderSize(h5Width); +h5Style->SetStatFont(h5Font); +h5Style->SetStatFontSize(0.05); +h5Style->SetStatFormat("6.4g"); +h5Style->SetStatX(0.99); // (1.,1.) is upper right corner +h5Style->SetStatY(0.6); // (0.,0.) is lower left corner +h5Style->SetStatW(0.22); +h5Style->SetStatH(0.15); + +h5Style->SetOptTitle(0); +h5Style->SetOptFit(0); +//h5Style->SetOptFit(1011); // show probability, parameters and errors + +// put tick marks on top and RHS of plots +h5Style->SetPadTickX(1); +h5Style->SetPadTickY(1); + +h5Style->SetTickLength(0.04,"x"); +h5Style->SetTickLength(0.02,"y"); + +// histogram divisions: only 7 in x to avoid label overlaps +h5Style->SetNdivisions(507,"x"); +h5Style->SetNdivisions(510,"y"); + +// paper size for printing +h5Style->SetPaperSize(TStyle::kA4); +//h5Style->SetPaperSize(TStyle::kUSLetter); + +gROOT->SetStyle("h5Style"); +gROOT->ForceStyle(); + +h5Name->SetFillColor(0); +h5Name->SetTextAlign(12); +h5Name->SetBorderSize(0); +h5Name->AddText("H5"); + +h5Label->SetTextFont(h5Font); +h5Label->SetTextColor(1); +h5Label->SetTextSize(0.04); +h5Label->SetTextAlign(12); + +h5Latex->SetTextFont(h5Font); +h5Latex->SetTextColor(1); +h5Latex->SetTextSize(0.04); +h5Latex->SetTextAlign(12); + +} diff --git a/tools/h5Proot/H5root.cc b/tools/h5Proot/H5root.cc new file mode 100644 index 0000000..999f11b --- /dev/null +++ b/tools/h5Proot/H5root.cc @@ -0,0 +1,55 @@ +#include +//#include + +#include "H5Style.h" +#include "TH5MainFrame.h" + +using namespace std; + +int main(int argc, char **argv) { + + h5Style(); + + Int_t ssr = 1; // subsampling rate + Int_t nOpt = 0; + + // check command line for option strings + if (argc > 2) { + if (strstr(argv[1],"-ss")||strstr(argv[1],"-subSample")) { + ssr = atoi(argv[2]); + if (ssr < 2) { + printf("\tBad or trivial subsampling rate %d will be ignored.\n",ssr); + ssr = 1; + } else { + printf("\tSubsampling option specified. Will read in only every %dth particle.\n",ssr); + } + nOpt++; + } + } + + // parse command line for files to be loaded + Int_t shift = 1 + 2*nOpt; + Int_t nFiles = argc - shift; + char *File[5]; + + if (nFiles < 6) { + for (Int_t n = 0; n < nFiles; n++) { + File[n] = argv[n+shift]; + } + } else { + printf("\tError: cannot load %d files!\n\n",nFiles); + return(0); + } + + TApplication theApp("App",&argc,argv); + + // if a command line prompt is desired, use TRint: + // TRint *theApp = new TRint("Rint", &argc, argv); + + TH5MainFrame* mainGUI = new TH5MainFrame(gClient->GetRoot(),700,495,ssr); + for (Int_t n = 0; n < nFiles; n++) mainGUI->LoadFile(File[n]); + + theApp.Run(); + + return(0); +} diff --git a/tools/h5Proot/H5rootLinkDef.h b/tools/h5Proot/H5rootLinkDef.h new file mode 100644 index 0000000..8615b0d --- /dev/null +++ b/tools/h5Proot/H5rootLinkDef.h @@ -0,0 +1,4 @@ +#pragma link C++ class TH5MainFrame; +#pragma link C++ class TH5Dataset; +#pragma link C++ class TH5Variable; +#pragma link C++ class TH5Legend; diff --git a/tools/h5Proot/README b/tools/h5Proot/README new file mode 100644 index 0000000..ec3d565 --- /dev/null +++ b/tools/h5Proot/README @@ -0,0 +1,3 @@ +Go To : + +http://people.web.psi.ch/schietinger/H5PartROOT/ diff --git a/tools/h5Proot/TH5Dataset.cc b/tools/h5Proot/TH5Dataset.cc new file mode 100644 index 0000000..2167228 --- /dev/null +++ b/tools/h5Proot/TH5Dataset.cc @@ -0,0 +1,590 @@ +#include "TH5Dataset.h" + +#include + +#include + +using namespace std; + +ClassImp(TH5Dataset) + +Double_t AddMargin(Double_t& plotMin, Double_t& plotMax, const Double_t margin) { + // (by default) add 10% at each edge to make a nice plot + Double_t range = plotMax-plotMin; + if (range < 1.e-20) { + plotMin -= 1.; + plotMax += 1.; + } else { + plotMin = plotMin-margin*range; + plotMax = plotMax+margin*range; + } + return(range); +} + +TString AddBrackets(TString s) { + + TString sb(" ["); + sb += s; + sb += TString("] "); + return(sb); + +} + +TH5Dataset::TH5Dataset(const char * fname, const Int_t subsamplingRate) { // constructor + Int_t OK = Construct(fname, subsamplingRate); + if (!OK) Error("TH5Dataset", "Could not create TH5Dataset!"); +} + +TH5Dataset::TH5Dataset(const TString& fnamestr, const Int_t subsamplingRate) { // alternative constructor + Int_t OK = Construct(fnamestr.Data(), subsamplingRate); + if (!OK) Error("TH5Dataset", "Could not create TH5Dataset!"); +} + +Int_t TH5Dataset::Construct(const char * fname, const Int_t subsamplingRate) { // the real constructor! + + // extract file names; use standard strings for these manipulations + // (rewrite with TStrings later?) + string sFilename = string(fname); + string sFullFilename(sFilename); + + if(sFilename.find("/")!=string::npos) + sFilename.erase(0,sFilename.find_last_of("/")+1); + + string sFilenameNoExt(sFilename); + + if(sFilenameNoExt.find(".")!=string::npos) + sFilenameNoExt.erase(sFilenameNoExt.find_last_of(".")); + + fFullFilename = TString(sFullFilename.c_str()); + fFilename = TString(sFilename.c_str()); + fFilenameNoExt = TString(sFilenameNoExt.c_str()); + + fH5File = H5PartOpenFile(fFullFilename.Data(),H5PART_READ); + + H5PartSetStep(fH5File,0); + Int_t nDataset = H5PartGetNumDatasets(fH5File); + + //---------------------------------------------------------------------- + // read in the variable/attribute names + //---------------------------------------------------------------------- + + const Int_t maxLength(64); + char name[maxLength]; + + for(Int_t i = 0; i < 9; i++) { + fPartVarName[i] = TString(""); + fPartVarUnit[i] = TString(""); + } + + if (nDataset > 0) { + for(Int_t i=0;i 0) { + printf("\tFound %d file attributes:\n",fNFileAttr); + for (Int_t n = 0; n < fNFileAttr; n++) { + + H5PartGetFileAttribInfo(fH5File,n,an,32,0,nElem); + attrName = TString(an); + fFileAttr.AddLast(new TObjString(attrName)); + + // nice print out: + if (n==fNFileAttr-1) { + cout << attrName << endl << endl; + } else if (n==0) { + cout << "\t" << attrName << ", "; + } else { + cout << attrName << ", "; + if (!((n+1)%5)) cout << endl << "\t"; + } + } + } else { + printf("\tFound no file attributes.\n"); + } + + printf("\tFound %d step attributes:\n",fNStepAttr); + + // retrieve step attributes for step 0 (assume they're the same for all steps!) + H5PartSetStep(fH5File,0); + TString sposName; + + fNScalarAttr=0; + fNVectorAttr=0; + + // initialize names: + for (Int_t n=0; n + (fScalarName.At(i))->GetString()))); + for (Int_t i = 0; i < fNVectorAttr; i++) + fVectorUnit.AddLast(new TObjString(GetUnit(static_cast + (fVectorName.At(i))->GetString()))); + + //---------------------------------------------------------------------- + // read in the data + //---------------------------------------------------------------------- + + // initialize (clones) arrays + fSpos = new TArrayD(fNStep); + // add filename to histogram name to avoid memory leak warning + fScalar = new TH2D((TString("fScalar-")+fFilenameNoExt).Data(), + "scalar values",fNStep,0.,1.,fNScalarAttr,0.,1.); + fVector = new TClonesArray("TClonesArray",fNStep); + for (Int_t step=0;step 0) { + + for (Int_t step=0; step(fScalarName.At(i)); + H5PartReadStepAttrib(fH5File,const_cast(s->GetString().Data()), &val); + if ( TMath::Abs(val) < 1.e-20) { + if (step != 0 && val != 0.) { + Warning("Construct","Read in very small value %e for attribute %s, will set to 0.", + val,const_cast(s->GetString().Data())); + } + val = 0.; + } + fScalar->SetBinContent(step,i,val); + } + + // separately read in spos values: + H5PartReadStepAttrib(fH5File,const_cast(sposName.Data()), &spos); + (*fSpos)[step] = spos; + + // read in vector attributes + for (int i=0; i(fVectorName.At(i)); + H5PartReadStepAttrib(fH5File,const_cast(s->GetString().Data()), arr); + TClonesArray* a = static_cast(fVector->At(step)); + if ( TMath::Abs(arr[0]) < 1.e-20 && TMath::Abs(arr[1]) < 1.e-20 && TMath::Abs(arr[2]) < 1.e-20) { + Warning("Construct","Read in very small values %e, %e, %e for attribute %s, will set to 0.", + arr[0],arr[1],arr[2],const_cast(s->GetString().Data())); + arr[0] = 0.; arr[1] = 0.;arr[2] = 0.; + } + (*a)[i] = new TVector3(arr); + } + + // demonstrate how to read elements from fVector: + TClonesArray* fV = static_cast(fVector->At(step)); + TVector3* v = static_cast(fV->At(0)); + cout << "\tStep " << step << ": n = " << n << ", Spos = " << (*fSpos)[step] << ",\t" + << static_cast(fVectorName.At(0))->GetString() << ": " + << v->x() << " " << v->y() << " " << v->z() << endl; + + TClonesArray &fN = *fNtuple; + new(fN[step]) TNtuple(ntupleName,ntupleDesc,"x:y:z:phiz:px:py:pz:enez:id"); + + double *x= new double[n]; + double *y= new double[n]; + double *z= new double[n]; + double *px= new double[n]; + double *py= new double[n]; + double *pz= new double[n]; + long long *id= new long long[n]; + + double *phiz= new double[n]; + double *enez= new double[n]; + + // H5PartReadParticleStep(fH5File,step,x,y,z,px,py,pz,id); + + if (fPartVarName[0] == "x") { + H5PartReadDataFloat64(fH5File,"x",x); + } else { + for (unsigned long i = 0; i < n; i++) x[i] = 0.; + } + + if (fPartVarName[1] == "y") { + H5PartReadDataFloat64(fH5File,"y",y); + } else { + for (unsigned long i = 0; i < n; i++) y[i] = 0.; + } + + if (fPartVarName[2] == "z") { + H5PartReadDataFloat64(fH5File,"z",z); + } else { + for (unsigned long i = 0; i < n; i++) z[i] = 0.; + } + + if (fPartVarName[4] == "px") { + H5PartReadDataFloat64(fH5File,"px",px); + } else { + for (unsigned long i = 0; i < n; i++) px[i] = 0.; + } + + if (fPartVarName[5] == "py") { + H5PartReadDataFloat64(fH5File,"py",py); + } else { + for (unsigned long i = 0; i < n; i++) py[i] = 0.; + } + + if (fPartVarName[6] == "pz") { + H5PartReadDataFloat64(fH5File,"pz",pz); + } else { + for (unsigned long i = 0; i < n; i++) pz[i] = 0.; + } + + if (fPartVarName[3] == "phiz") { + H5PartReadDataFloat64(fH5File,"phiz",phiz); + } else { + for (unsigned long i = 0; i < n; i++) phiz[i] = 0.; + } + + if (fPartVarName[7] == "enez") { + H5PartReadDataFloat64(fH5File,"enez",enez); + } else { + for (unsigned long i = 0; i < n; i++) enez[i] = 0.; + } + + if (fPartVarName[8] == "id") { + H5PartReadDataInt64(fH5File,"id",id); + } else { + for (unsigned long i = 0; i < n; i++) id[i] = 0; + } + + for (unsigned long i=0; i(fNtuple->At(step))-> + Fill(x[i],y[i],z[i],phiz[i],px[i],py[i],pz[i],enez[i],static_cast(id[i])); + } + } + + delete[] x; delete[] y; delete[] z; + delete[] px; delete[] py; delete[] pz; + delete[] id; + delete[] phiz; delete[] enez; + }// end for loop over steps + + } // end if (nDataset > 0) + + // set file active: + fFileState = kActive; + + return(1); +} + + +TH5Dataset::~TH5Dataset() { + + delete [] fH5File; + + delete fScalar; + delete fVector; + delete fNtuple; + +} // Destructor + + +Double_t TH5Dataset::GetSpos(const Int_t step) const { + + if (step < fNStep) { + return(fSpos->At(step)); + } else { + Warning("GetSpos", "Step %u is requested, but there are only %u steps!", step, fNStep); + return(fSpos->At(fNStep-1)); + } +} + +Int_t TH5Dataset::GetStep(const Double_t spos) const { + + if (fNStep == 0) return(0); + Int_t step = 0; + + while (fSpos->At(step) < spos && step < fNStep) step++; + step -= 1; + return(step); + +} + +Double_t TH5Dataset::GetStepVar(TString stepVarName, EH5Coord crd, Int_t step) const { + + if (crd==kScalar) return(GetScalarStepVar(stepVarName, step)); + if (crd==kX) return(GetVectorStepVar(stepVarName, step).x()); + if (crd==kY) return(GetVectorStepVar(stepVarName, step).y()); + if (crd==kZ) return(GetVectorStepVar(stepVarName, step).z()); + return(0.); +} + +Double_t TH5Dataset::GetScalarStepVar(TString stepVarName, Int_t step) const { + + if (step >= fNStep) { + Warning("GetScalarStepVar", "Step %u is requested, but there are only %u steps!", step, fNStep); + step = fNStep-1; + } + Double_t val(0.); + for (Int_t i=0;i(fScalarName.At(i)); + if (s->GetString() == stepVarName) val = fScalar->GetBinContent(step,i); + } + return (val); +} + +TVector3 TH5Dataset::GetVectorStepVar(TString stepVarName, Int_t step) const { + + if (step >= fNStep) { + Warning("GetVectorStepVar", "Step %u is requested, but there are only %u steps!", step, fNStep); + step = fNStep-1; + } + TVector3 vec = TVector3(0.,0.,0.); + for (Int_t i=0;i(fVectorName.At(i)); + if (s->GetString() == stepVarName) { + TClonesArray* fV = static_cast(fVector->At(step)); + TVector3* pv = static_cast(fV->At(i)); + vec = *pv; + } + } + return (vec); + +} + +TH1F* TH5Dataset::Histo1d(const TString* varName, const Int_t step, + const Double_t min, const Double_t max, const Int_t nBin) { + + TString vname = *varName; + TNtuple* nt = static_cast(fNtuple->At(step)); + TString hname = vname + TString(" distribution"); + + // delete previous histogram to avoid memory leak + // (caller's responsibility to change name if histo is needed later!) + TH1F* histVar = (TH1F*) gROOT->FindObject("histVar"); + if (histVar) delete histVar; + + histVar = new TH1F("histVar",hname,nBin,min,max); + histVar->SetXTitle(vname); + histVar->SetYTitle("entries"); + + if (nt) nt->Draw(vname+TString(">>histVar")); + + return(histVar); +} + +TH2F* TH5Dataset::Histo2d(const TString* varNameX, const TString* varNameY, const Int_t step, + const Double_t minX, const Double_t maxX, + const Double_t minY, const Double_t maxY, + const Int_t nBinX, const Int_t nBinY) { + + TString vxname = *varNameX; + TString vyname = *varNameY; + TNtuple* nt = static_cast(fNtuple->At(step)); + TString hname = vxname+TString("-")+vyname+TString(" distribution"); + + TH2F *histXY = static_cast(gROOT->FindObject("histXY")); + if (histXY) delete histXY; + + histXY = new TH2F("histXY",hname,nBinX,minX,maxX,nBinY,minY,maxY); + histXY->SetXTitle(vxname); + histXY->SetYTitle(vyname); + + if (nt) nt->Draw((vyname+TString(":")+vxname+TString(">>histXY"))); + + return(histXY); + +} + +TH1F* TH5Dataset::Scatter(const TString* varNameX, const TString* varNameY, TCanvas* canv, + const Int_t step, + const Double_t minX, const Double_t maxX, + const Double_t minY, const Double_t maxY) { + + TString vxname = *varNameX; + TString vyname = *varNameY; + TNtuple* nt = static_cast(fNtuple->At(step)); + TString hname = vxname+TString("-")+vyname+TString(" distribution"); + + TH1F *scatPlot = canv->DrawFrame(minX,minY,maxX,maxY); + scatPlot->SetXTitle(vxname); + scatPlot->SetYTitle(vyname); + + Int_t origStyle = nt->GetMarkerStyle(); + nt->SetMarkerStyle(1); + if (nt) nt->Draw(vyname+TString(":")+vxname,"","same"); + nt->SetMarkerStyle(origStyle); + + return(scatPlot); +} + +TH3F* TH5Dataset::Histo3d(const TString* varNameX, const TString* varNameY, const TString* varNameZ, + const Int_t step, + const Double_t minX, const Double_t maxX, + const Double_t minY, const Double_t maxY, + const Double_t minZ, const Double_t maxZ, + const Int_t nBinX, const Int_t nBinY, const Int_t nBinZ) { + + TString vxname = *varNameX; + TString vyname = *varNameY; + TString vzname = *varNameZ; + TNtuple* nt = static_cast(fNtuple->At(step)); + TString hname = vxname+TString("-")+vyname+TString("-")+vzname+TString(" distribution"); + + TH3F *histXYZ = static_cast(gROOT->FindObject("histXYZ")); + if (histXYZ) delete histXYZ; + + histXYZ = new TH3F("histXYZ",hname, + nBinX,minX,maxX,nBinY,minY,maxY,nBinZ,minZ,maxZ); + histXYZ->SetXTitle(vxname); + histXYZ->SetYTitle(vyname); + histXYZ->SetZTitle(vzname); + + if (nt) nt->Draw(vzname+TString(":")+vyname+TString(":")+vxname+TString(">>histXYZ")); + + return(histXYZ); + +} + + +Double_t TH5Dataset::FindMinimum(const TString* varName, Int_t step) const { + TNtuple* nt = static_cast(fNtuple->At(step)); + Double_t min = nt->GetMinimum(*varName); + return(min); +} + +Double_t TH5Dataset::FindMaximum(const TString* varName, Int_t step) const { + TNtuple* nt = static_cast(fNtuple->At(step)); + Double_t max = nt->GetMaximum(*varName); + return(max); +} + +Double_t TH5Dataset::PlotRange(const TString* varName, const Int_t step, + Double_t& plotMin, Double_t& plotMax) const { + TNtuple* nt = static_cast(fNtuple->At(step)); + plotMin = nt->GetMinimum(*varName); + plotMax = nt->GetMaximum(*varName); + return(AddMargin(plotMin,plotMax)); +} + +Double_t TH5Dataset::Range(const TString* varName, const Int_t step, + Double_t& min, Double_t& max) const { + TNtuple* nt = static_cast(fNtuple->At(step)); + min = nt->GetMinimum(*varName); + max = nt->GetMaximum(*varName); + return(max-min); +} + +TString TH5Dataset::GetPartVarName(const Int_t index) const { + if (index >= 0 && index < 9) { + return(fPartVarName[index]); + } else { + return(TString("")); + } +} + +TString TH5Dataset::GetScalarStepVarName(const Int_t index) const { + + return(static_cast(fScalarName.At(index))->GetString()); + +} + +TString TH5Dataset::GetVectorStepVarName(const Int_t index) const { + + return(static_cast(fVectorName.At(index))->GetString()); + +} + +TString TH5Dataset::GetUnit(const TString varName) const { + + TString unit(""); + TString varNameU = varName; + varNameU += TString("Unit"); + + // loop over file attributes, look for entry var+Unit: + for (Int_t i = 0; i < fNFileAttr; i++) { + + TObjString* s = static_cast(fFileAttr.At(i)); + if (s->GetString() == varNameU) { + char u[32]; + H5PartReadFileAttrib(fH5File,const_cast(s->GetString().Data()), &u); + unit = TString(u); + } + } + return(unit); + +} + diff --git a/tools/h5Proot/TH5Dataset.h b/tools/h5Proot/TH5Dataset.h new file mode 100644 index 0000000..cab6075 --- /dev/null +++ b/tools/h5Proot/TH5Dataset.h @@ -0,0 +1,130 @@ +#ifndef __TH5Dataset__ +#define __TH5Dataset__ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include "H5Part.hh" + +enum EH5State { kNotExist=-1, kNotActive=0, kActive=1}; +enum EH5Coord { kScalar, kX, kY, kZ }; + +class H5PartFile; + +using namespace std; + +class TH5Dataset : public TObject +{ + private: + + H5PartFile* fH5File; // H5 file + TString fFullFilename; // full filename of H5file + TString fFilename; // filename of H5file (without path) + TString fFilenameNoExt; // filename of H5file (without path, no extension) + EH5State fFileState; // flag for active/loaded... + Int_t fNStep; // number of time steps + Int_t fNStepAttr; // number of step attributes + Int_t fNFileAttr; // number of file attributes + Int_t fNScalarAttr; // number of scalar step attributes + Int_t fNVectorAttr; // number of vector step attributes + + TObjArray fFileAttr; + + TString fPartVarName[9]; + TString fPartVarUnit[9]; + + TObjArray fScalarName; + TObjArray fScalarUnit; + TObjArray fVectorName; + TObjArray fVectorUnit; + + TArrayD* fSpos; // spos values + TH2D* fScalar; // 2D histogram to emulate 2D array + TClonesArray* fVector; // vector attributes are TClonesArray (TClonesArray of + // TClonesArray of TVector3's... + + TClonesArray* fNtuple; // array of ntuples (one per step) + + public: + + TH5Dataset(const char * filename, const Int_t subsamplingRate = 1); // constructor + TH5Dataset(const TString& filename, const Int_t subsamplingRate = 1); // alternative constructor + Int_t Construct(const char * filename, const Int_t subsamplingRate); // the real constructor! + + ~TH5Dataset(); // Destructor + + Int_t GetNSteps() const { return(fNStep); } + Int_t GetNScalarAttr() const { return(fNScalarAttr); } + Int_t GetNVectorAttr() const { return(fNVectorAttr); } + + Double_t GetSpos(const Int_t step) const ; + Int_t GetStep(const Double_t spos) const ; + + Double_t GetStepVar(TString stepVarName, EH5Coord crd, Int_t step) const ; + Double_t GetScalarStepVar(TString stepVarName, Int_t step) const ; + TVector3 GetVectorStepVar(TString stepVarName, Int_t step) const ; + + TString GetFullFilename() const { return(fFullFilename); } + TString GetFilename() const { return(fFilename); } + TString GetFilenameNoExt() const { return(fFilenameNoExt); } + + EH5State GetState() const { return(fFileState); } + void SetState(const EH5State s) { fFileState=s; } + + TString GetPartVarName(const Int_t index) const ; + TString GetScalarStepVarName(const Int_t index) const ; + TString GetVectorStepVarName(const Int_t index) const ; + + TString GetUnit(const TString varName) const ; + + TH1F* Histo1d(const TString* varName, const Int_t step=0, + const Double_t min=-1., const Double_t max = 1., + const Int_t nBin=30); + + TH2F* Histo2d(const TString* varNameX, const TString* varNameY, const Int_t step=0, + const Double_t minX=-1., const Double_t maxX = 1., + const Double_t minY=-1., const Double_t maxY = 1., + const Int_t nBinX=50, Int_t nBinY=50); + + TH1F* Scatter(const TString* varNameX, const TString* varNameY, TCanvas* canv, + const Int_t step=0, + const Double_t minX=-2., const Double_t maxX = 2., + const Double_t minY=-2., const Double_t maxY = 2.); + + TH3F* Histo3d(const TString* varNameX, const TString* varNameY, const TString* varNameZ, + const Int_t step=0, + const Double_t minX=-1., const Double_t maxX = 1., + const Double_t minY=-1., const Double_t maxY = 1., + const Double_t minZ=-1., const Double_t maxZ = 1., + const Int_t nBinX=30, const Int_t nBinY=30, const Int_t nBinZ=30); + + Double_t FindMinimum(const TString* varName, Int_t step=0) const ; + Double_t FindMaximum(const TString* varName, Int_t step=0) const ; + Double_t PlotRange(const TString* varName, const Int_t step, + Double_t& plotMin, Double_t& plotMax) const ; + Double_t Range(const TString* varName, const Int_t step, + Double_t& min, Double_t& max) const ; + + ClassDef(TH5Dataset,1); + +}; + +Double_t AddMargin(Double_t& plotMin, Double_t& plotMax, const Double_t margin=0.1); + +TString AddBrackets(const TString s);; + +#endif diff --git a/tools/h5Proot/TH5Legend.cc b/tools/h5Proot/TH5Legend.cc new file mode 100644 index 0000000..be17718 --- /dev/null +++ b/tools/h5Proot/TH5Legend.cc @@ -0,0 +1,19 @@ +#include "TH5Legend.h" + +//ClassImp(TH5Legend) + +TH5Legend::TH5Legend() : TLegend() { } + +TH5Legend::TH5Legend( Double_t x1, Double_t y1, Double_t x2, Double_t y2) + : TLegend(x1,y1,x2,y2) { + + SetTextFont(62); + SetTextSize(0.035); + SetFillColor(0); + SetBorderSize(0); + +} + +TH5Legend::~TH5Legend() {} // Destructor + + diff --git a/tools/h5Proot/TH5Legend.h b/tools/h5Proot/TH5Legend.h new file mode 100644 index 0000000..a46794e --- /dev/null +++ b/tools/h5Proot/TH5Legend.h @@ -0,0 +1,23 @@ +#ifndef __TH5Legend__ +#define __TH5Legend__ + +#include + +#include + +// a slightly customized version of TLegend + +class TH5Legend : public TLegend +{ + public: + TH5Legend(); + TH5Legend( Double_t x1, Double_t y1, Double_t x2, Double_t y2); + ~TH5Legend(); // Destructor + + ClassDef(TH5Legend,1); + + private: + +}; + +#endif diff --git a/tools/h5Proot/TH5MainFrame.cc b/tools/h5Proot/TH5MainFrame.cc new file mode 100644 index 0000000..2097fa0 --- /dev/null +++ b/tools/h5Proot/TH5MainFrame.cc @@ -0,0 +1,1742 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include "TH5MainFrame.h" +#include "TH5Dataset.h" +#include "TH5Legend.h" + +using namespace std; + +ClassImp(TH5MainFrame) + +TH5MainFrame::TH5MainFrame(const TGWindow *p, UInt_t w, UInt_t h, Int_t ssr) + : TGMainFrame(p, w, h), fSubsamplingRate(ssr) { + + //initialize pointers to datasets: + for (Int_t n=0; n<5; ++n) { + fDataset[n] = NULL; + } + + fNStepMax = 0; + + // some predefined layout hints: numbers are left, right, top, bottom + fLayoutLeftflush = new TGLayoutHints(kLHintsLeft,5,5,5,5); + fLayoutRightflush = new TGLayoutHints(kLHintsRight,5,5,5,5); + fLayoutCentered = new TGLayoutHints(kLHintsCenterX,5,5,15,5); + + //-------------------------------------------------------------------------- + // main canvas for plotting: + fEcanvas = new TRootEmbeddedCanvas ("Ecanvas",this,w,h); + fLayoutCanvas = new TGLayoutHints(kLHintsExpandX | kLHintsExpandY,10,10,10,1); + AddFrame(fEcanvas, fLayoutCanvas); + + //-------------------------------------------------------------------------- + // file entry bar (includes Exit button) + fFileEntryBar = new TGHorizontalFrame(this, 600,40); + + fFileLabel = new TGLabel(fFileEntryBar,"Enter filename: "); + + fFileEntry = new TGTextEntry(fFileEntryBar, fFilenameBuffer = new TGTextBuffer(100)); + fFileEntry->Resize(400, fFileEntry->GetDefaultHeight()); + fFileEntry->SetToolTipText("Enter the filename, dude!"); + fFileEntry->Connect("ReturnPressed()","TH5MainFrame",this,"LoadFile()"); + + fLoad = new TGTextButton(fFileEntryBar," &Load "); + fLoad->Connect("Clicked()","TH5MainFrame",this,"LoadFile()"); + + fExit = new TGTextButton(fFileEntryBar," &Exit ","gApplication->Terminate()"); + + fFileEntryBar->AddFrame(fFileLabel, fLayoutLeftflush); + fFileEntryBar->AddFrame(fFileEntry, fLayoutLeftflush); + fFileEntryBar->AddFrame(fLoad, fLayoutLeftflush); + fFileEntryBar->AddFrame(fExit, fLayoutRightflush); + + AddFrame(fFileEntryBar, new TGLayoutHints(kLHintsLeft,2,2,2,2)); + + //-------------------------------------------------------------------------- + // work space: (everything below the file entry bar) + fWorkspace = new TGHorizontalFrame(this, 600,40); + + //-------------------------------------------------------------------------- + // selection space: for file and step selection + fSelspace = new TGVerticalFrame(fWorkspace, 300,100); + + // group frame for file selection: + fFileSelection = new TGGroupFrame(fSelspace, "File selection",kVerticalFrame); + fFileSelection->SetTitlePos(TGGroupFrame::kLeft); + + for (Int_t n=0; n<5; ++n) { + fFileButton[n] = new TGCheckButton(fFileSelection, " no file loaded yet ",200); + fFileButton[n]->SetState(kButtonDisabled); + fFileSelection->AddFrame(fFileButton[n], new TGLayoutHints(kLHintsLeft,5,5,3,3)); + TString slotCommand = TString("ActivateFile(Int_t="); + slotCommand+=n; + slotCommand+=TString(")"); + fFileButton[n]->Connect("Clicked()","TH5MainFrame",this,slotCommand.Data()); + } + + fSelspace->AddFrame(fFileSelection, fLayoutLeftflush); + + // group frame for step selection: + fStepSelection = new TGGroupFrame(fSelspace, "Step selection",kVerticalFrame); + fStepSelection->SetTitlePos(TGGroupFrame::kLeft); + + fStepSlider = new TGHSlider(fStepSelection, 220, kSlider1 | kScaleDownRight, stepSliderID); + fStepSlider->SetRange(0,100); + fStepSlider->Connect("PositionChanged(Int_t)", "TH5MainFrame", this, "DoStepSlider(Int_t)"); + fStepSlider->Connect("Released()", "TH5MainFrame", this, "DoLastPlot"); + + // various subframes needed for layout below step slider: + fStepSposTEFrame = new TGHorizontalFrame(fStepSelection); + fStepTEFrame = new TGVerticalFrame(fStepSposTEFrame); + fSposTEFrame = new TGVerticalFrame(fStepSposTEFrame); + fPrevStepFrame = new TGVerticalFrame(fStepSposTEFrame); + fNextStepFrame = new TGVerticalFrame(fStepSposTEFrame); + + fStepLabel = new TGLabel(fStepTEFrame,"Step"); + fStepSliderTE = new TGTextEntry(fStepTEFrame, fStepSliderTB = new TGTextBuffer(5), stepSliderTEID); + fStepSliderTB->AddText(0, "0"); + fStepSliderTE->Connect("TextChanged(char*)", "TH5MainFrame", this, "DoStepText(char*)"); + fStepTEFrame->AddFrame(fStepLabel, new TGLayoutHints(kLHintsLeft,2,1,1,0)); + fStepTEFrame->AddFrame(fStepSliderTE, new TGLayoutHints(kLHintsCenterX,2,1,0,0)); + + fSposLabel = new TGLabel(fSposTEFrame,"Spos"); + fSposSliderTE = new TGTextEntry(fSposTEFrame, fSposSliderTB = new TGTextBuffer(5), sposSliderTEID); + fSposSliderTB->AddText(0, "0"); + fSposSliderTE->Connect("TextChanged(char*)", "TH5MainFrame", this, "DoStepText(char*)"); + fSposSliderTE->Connect("ReturnPressed()","TH5MainFrame",this,"DoStepTextReturn(char*)"); + fSposTEFrame->AddFrame(fSposLabel, new TGLayoutHints(kLHintsLeft,2,1,1,0)); + fSposTEFrame->AddFrame(fSposSliderTE, new TGLayoutHints(kLHintsCenterX,2,1,0,0)); + + fPrevStepLabel = new TGLabel(fPrevStepFrame," "); + fPrevButton = new TGTextButton(fPrevStepFrame," Pre&v "); + fPrevButton->Connect("Clicked()","TH5MainFrame",this,"PlotNextStep(Int_t=-1)"); + fPrevStepFrame->AddFrame(fPrevStepLabel, new TGLayoutHints(kLHintsLeft,2,1,1,0)); + fPrevStepFrame->AddFrame(fPrevButton, new TGLayoutHints(kLHintsRight,2,1,0,0)); + + fNextStepLabel = new TGLabel(fNextStepFrame," "); + fNextButton = new TGTextButton(fNextStepFrame," &Next "); + fNextButton->Connect("Clicked()","TH5MainFrame",this,"PlotNextStep(Int_t=1)"); + fNextStepFrame->AddFrame(fNextStepLabel, new TGLayoutHints(kLHintsLeft,2,1,1,0)); + fNextStepFrame->AddFrame(fNextButton, new TGLayoutHints(kLHintsRight,2,1,0,0)); + + fStepSposTEFrame->AddFrame(fStepTEFrame, new TGLayoutHints(kLHintsCenterX,2,1,0,0)); + fStepSposTEFrame->AddFrame(fSposTEFrame, new TGLayoutHints(kLHintsCenterX,2,1,0,0)); + fStepSposTEFrame->AddFrame(fNextStepFrame, new TGLayoutHints(kLHintsRight,5,1,0,0)); + fStepSposTEFrame->AddFrame(fPrevStepFrame, new TGLayoutHints(kLHintsRight,10,1,0,0)); + + fStepSelection->AddFrame(fStepSlider, new TGLayoutHints(kLHintsCenterX,5,1,0,2)); + fStepSelection->AddFrame(fStepSposTEFrame, new TGLayoutHints(kLHintsCenterX,5,1,2,0)); + + fSelspace->AddFrame(fStepSelection, new TGLayoutHints(kLHintsCenterX,1,1,1,1)); + + fSelspace->MapSubwindows(); + fWorkspace->AddFrame(fSelspace, new TGLayoutHints(kLHintsLeft,1,1,1,1)); + + //-------------------------------------------------------------------------- + // variable space: for variable selection (also contains print button) + fVarspace = new TGVerticalFrame(fWorkspace, 300,100); + + // group frame for variable selection + fVarSelection = new TGGroupFrame(fVarspace, "Var. sel.",kVerticalFrame); + fVarSelection->SetTitlePos(TGGroupFrame::kLeft); + + // default names for particle variables + // (will be overwritten by loaded file) + fVarNameDefault[0] = TString(" x "); + fVarNameDefault[1] = TString(" y "); + fVarNameDefault[2] = TString(" z "); + fVarNameDefault[3] = TString(" phiz"); + fVarNameDefault[4] = TString(" px "); + fVarNameDefault[5] = TString(" py "); + fVarNameDefault[6] = TString(" pz "); + fVarNameDefault[7] = TString(" enez"); + + for (Int_t n=0; n<8; ++n) { + fVarName[n] = fVarNameDefault[n]; + fVarButton[n] = new TGCheckButton(fVarSelection, fVarName[n],200); + fVarButton[n]->SetState(kButtonDisabled); + Int_t l = 5; + if (n==3||n==7) l = 15; + Int_t b = 2; + if (n==3) b = 10; + fVarSelection->AddFrame(fVarButton[n], new TGLayoutHints(kLHintsLeft,l,0,2,b)); + } + + fVarspace->AddFrame(fVarSelection, new TGLayoutHints(kLHintsLeft,2,2,2,2)); + + // print space + fPrintspace = new TGVerticalFrame(fVarspace); + + fPrintButton = new TGTextButton(fPrintspace," &Print "); + fPrintButton->Connect("Clicked()","TH5MainFrame",this,"PrintCanv()"); + fPrintspace->AddFrame(fPrintButton, fLayoutLeftflush); + + fPrintBox = new TGComboBox(fPrintspace,"format",100); + // define string array at the same time (see note at end of PrintCanv() method) + fPrintBox->AddEntry("pdf",0); H5PrintFormat[0] = TString("pdf"); + fPrintBox->AddEntry("jpg",1); H5PrintFormat[1] = TString("jpg"); + fPrintBox->AddEntry("png",2); H5PrintFormat[2] = TString("png"); + fPrintBox->AddEntry("gif",3); H5PrintFormat[3] = TString("gif"); + fPrintBox->AddEntry("tiff",4); H5PrintFormat[4] = TString("tiff"); + fPrintBox->AddEntry("ps",5); H5PrintFormat[5] = TString("ps"); + fPrintBox->AddEntry("ps-port",6); H5PrintFormat[6] = TString("Portrait"); + fPrintBox->AddEntry("ps-land",7); H5PrintFormat[7] = TString("Landscape"); + fPrintBox->AddEntry("eps",8); H5PrintFormat[8] = TString("eps"); + fPrintBox->AddEntry("eps-pre",9); H5PrintFormat[9] = TString("Preview"); + fPrintBox->AddEntry("svg",10); H5PrintFormat[10] = TString("svg"); + fPrintBox->AddEntry("xpm",11); H5PrintFormat[11] = TString("xpm"); + fPrintBox->AddEntry("xml",12); H5PrintFormat[12] = TString("xml"); + fPrintBox->AddEntry("cxx",13); H5PrintFormat[13] = TString("cxx"); + fPrintBox->AddEntry("root",14); H5PrintFormat[14] = TString("root"); + fPrintBox->Select(0); + fPrintBox->Resize(70,20); + fPrintspace->AddFrame(fPrintBox, fLayoutLeftflush); + + fVarspace->AddFrame(fPrintspace, fLayoutLeftflush); + + fVarspace->MapSubwindows(); + fWorkspace->AddFrame(fVarspace, fLayoutLeftflush); + + //-------------------------------------------------------------------------- + // button space: for plot buttons + fButtonspace = new TGVerticalFrame(fWorkspace, 300,100); + + // group frame for histogramming, with three subframes + fHistoFrame = new TGGroupFrame(fButtonspace, "Histograms",kVerticalFrame); + f1dFrame = new TGHorizontalFrame(fHistoFrame); + f2dFrame = new TGHorizontalFrame(fHistoFrame); + f3dFrame = new TGHorizontalFrame(fHistoFrame); + + // 1d histograms + fHisto1d = new TGTextButton(f1dFrame," &1D "); + fHisto1d->Connect("Clicked()","TH5MainFrame",this,"Histo1d()"); + fHisto1d->Resize(20,fHisto1d->GetDefaultHeight()); + + fHisto1dBox = new TGComboBox(f1dFrame,"style",100); + fHisto1dBox->AddEntry("HIST",0); H5DrawOpt1d[0] = TString(""); + fHisto1dBox->AddEntry("ERRBAR",1); H5DrawOpt1d[1] = TString("e1p"); + fHisto1dBox->AddEntry("ERRBOX",2); H5DrawOpt1d[2] = TString("e2p"); + fHisto1dBox->AddEntry("CURVE",3); H5DrawOpt1d[3] = TString("c"); + fHisto1dBox->AddEntry("BAR",4); H5DrawOpt1d[4] = TString("b"); + fHisto1dBox->AddEntry("LINE",5); H5DrawOpt1d[5] = TString("l"); + fHisto1dBox->AddEntry("LEGO",6); H5DrawOpt1d[6] = TString("lego"); + fHisto1dBox->Select(0); + fHisto1dBox->Resize(70,20); + + // 2d histograms + fHisto2d = new TGTextButton(f2dFrame," &2D "); + fHisto2d->Connect("Clicked()","TH5MainFrame",this,"Histo2d()"); + fHisto2d->Resize(70,fHisto2d->GetDefaultHeight()); + + fHisto2dBox = new TGComboBox(f2dFrame,"style",100); + fHisto2dBox->AddEntry("NOBIN",0); H5DrawOpt2d[0] = TString("unbinned"); + fHisto2dBox->AddEntry("SCAT",1); H5DrawOpt2d[1] = TString(""); + fHisto2dBox->AddEntry("BOX",2); H5DrawOpt2d[2] = TString("box"); + fHisto2dBox->AddEntry("ARR",3); H5DrawOpt2d[3] = TString("arr"); + fHisto2dBox->AddEntry("COLZ",4); H5DrawOpt2d[4] = TString("colz"); + fHisto2dBox->AddEntry("TEXT",5); H5DrawOpt2d[5] = TString("text"); + fHisto2dBox->AddEntry("CONT",6); H5DrawOpt2d[6] = TString("cont"); + fHisto2dBox->AddEntry("CONTZ",7); H5DrawOpt2d[7] = TString("contz"); + fHisto2dBox->AddEntry("CONT1",8); H5DrawOpt2d[8] = TString("cont1"); + fHisto2dBox->AddEntry("CONT2",9); H5DrawOpt2d[9] = TString("cont2"); + fHisto2dBox->AddEntry("CONT3",10); H5DrawOpt2d[10] = TString("cont3"); + fHisto2dBox->AddEntry("LEGO",11); H5DrawOpt2d[11] = TString("lego"); + fHisto2dBox->AddEntry("LEGO1",12); H5DrawOpt2d[12] = TString("lego1"); + fHisto2dBox->AddEntry("LEGO2",13); H5DrawOpt2d[13] = TString("lego2"); + fHisto2dBox->AddEntry("SURF1",14); H5DrawOpt2d[14] = TString("surf1"); + fHisto2dBox->AddEntry("SURF2z",15);H5DrawOpt2d[15] = TString("surf2z"); + fHisto2dBox->AddEntry("SURF3",16); H5DrawOpt2d[16] = TString("surf3"); + fHisto2dBox->AddEntry("SURF4",17); H5DrawOpt2d[17] = TString("surf4"); + fHisto2dBox->AddEntry("SURF1POL",18); H5DrawOpt2d[18] = TString("surf1pol"); + fHisto2dBox->AddEntry("SURF1CYL",19); H5DrawOpt2d[19] = TString("surf1cyl"); + fHisto2dBox->Select(0); + fHisto2dBox->Resize(70,20); + + // 3d histograms + fHisto3d = new TGTextButton(f3dFrame," &3D "); + fHisto3d->Connect("Clicked()","TH5MainFrame",this,"Histo3d()"); + fHisto3d->Resize(100,fHisto3d->GetDefaultHeight()); + + fHisto3dBox = new TGComboBox(f3dFrame,"style",100); + fHisto3dBox->AddEntry("SCAT",0); H5DrawOpt3d[0] = TString(""); + fHisto3dBox->AddEntry("BOX",1); H5DrawOpt3d[1] = TString("box"); + fHisto3dBox->Select(0); + fHisto3dBox->Resize(70,20); + + f1dFrame->AddFrame(fHisto1d, new TGLayoutHints(kLHintsLeft,2,10,2,2)); + f1dFrame->AddFrame(fHisto1dBox, new TGLayoutHints(kLHintsLeft,2,2,2,2)); + + f2dFrame->AddFrame(fHisto2d, new TGLayoutHints(kLHintsLeft,2,10,2,2)); + f2dFrame->AddFrame(fHisto2dBox, new TGLayoutHints(kLHintsLeft,2,2,2,2)); + + f3dFrame->AddFrame(fHisto3d, new TGLayoutHints(kLHintsLeft,2,10,2,2)); + f3dFrame->AddFrame(fHisto3dBox, new TGLayoutHints(kLHintsLeft,2,2,2,2)); + + fHistoFrame->AddFrame(f1dFrame, new TGLayoutHints(kLHintsLeft,2,2,10,2)); + fHistoFrame->AddFrame(f2dFrame, new TGLayoutHints(kLHintsLeft,2,2,2,2)); + fHistoFrame->AddFrame(f3dFrame, new TGLayoutHints(kLHintsLeft,2,2,2,2)); + + fHistoFrame->Resize(2000,500); + + fButtonspace->AddFrame(fHistoFrame, new TGLayoutHints(kLHintsCenterX,2,2,2,2)); + + // group frame for line plots + fLinePlotFrame = new TGGroupFrame(fButtonspace, "Line plots",kVerticalFrame); + + fSelLPFrame = new TGHorizontalFrame(fLinePlotFrame); + + fSelLPFrameLeft = new TGVerticalFrame(fSelLPFrame); + fSelLPLabel1 = new TGLabel(fSelLPFrame,"Independent"); + fSelLPLabel2 = new TGLabel(fSelLPFrame,"variable:"); + fSelLPFrameLeft->AddFrame(fSelLPLabel1, new TGLayoutHints(kLHintsLeft,0,0,0,0)); + fSelLPFrameLeft->AddFrame(fSelLPLabel2, new TGLayoutHints(kLHintsRight,0,0,0,0)); + + fSelLPFrameRight = new TGVerticalFrame(fSelLPFrame); + fSelLPBox = new TGComboBox(fSelLPFrameRight,"select",100); + fSelLPBox->Resize(70,20); + fSelLPFrameRight->AddFrame(fSelLPBox, new TGLayoutHints(kLHintsLeft,5,0,5,0)); + + fScalarLPFrame = new TGHorizontalFrame(fLinePlotFrame); + + fScalar = new TGTextButton(fScalarLPFrame,"&Scalar"); + fScalar->Connect("Clicked()","TH5MainFrame",this,"ScalarLinePlot()"); + + fScalarLPBox = new TGComboBox(fScalarLPFrame,"scalar",100); + fScalarLPBox->Resize(70,20); + + fVectorLPFrame = new TGHorizontalFrame(fLinePlotFrame); + + fVector = new TGTextButton(fVectorLPFrame,"&Vector"); + fVector->Connect("Clicked()","TH5MainFrame",this,"VectorLinePlot()"); + + fVectorLPBox = new TGComboBox(fVectorLPFrame,"vector",100); + fVectorLPBox->Resize(70,20); + + fSelLPFrame->AddFrame(fSelLPFrameLeft, new TGLayoutHints(kLHintsLeft,0,0,0,0)); + fSelLPFrame->AddFrame(fSelLPFrameRight, new TGLayoutHints(kLHintsRight,5,0,2,0)); + + fScalarLPFrame->AddFrame(fScalar, new TGLayoutHints(kLHintsLeft,2,10,2,2)); + fScalarLPFrame->AddFrame(fScalarLPBox, new TGLayoutHints(kLHintsLeft,2,2,2,2)); + + fVectorLPFrame->AddFrame(fVector, new TGLayoutHints(kLHintsLeft,2,10,2,2)); + fVectorLPFrame->AddFrame(fVectorLPBox, new TGLayoutHints(kLHintsLeft,2,2,2,2)); + + fRadioLPFrame = new TGHorizontalFrame(fLinePlotFrame); + fRadioLPFrame->AddFrame(fRadioLP[0] = new TGRadioButton(fRadioLPFrame, "x", linePlotXID), + new TGLayoutHints(kLHintsLeft,20,2,2,2)); + fRadioLPFrame->AddFrame(fRadioLP[1] = new TGRadioButton(fRadioLPFrame, "y", linePlotYID), + new TGLayoutHints(kLHintsLeft,2,2,2,2)); + fRadioLPFrame->AddFrame(fRadioLP[2] = new TGRadioButton(fRadioLPFrame, "z", linePlotZID), + new TGLayoutHints(kLHintsLeft,2,2,2,2)); + fRadioLP[0]->Connect("Pressed()", "TH5MainFrame", this, "DoLinePlotRadioButtons()"); + fRadioLP[1]->Connect("Pressed()", "TH5MainFrame", this, "DoLinePlotRadioButtons()"); + fRadioLP[2]->Connect("Pressed()", "TH5MainFrame", this, "DoLinePlotRadioButtons()"); + + fLinePlotFrame->AddFrame(fSelLPFrame, new TGLayoutHints(kLHintsLeft,2,2,10,2)); + fLinePlotFrame->AddFrame(fScalarLPFrame, new TGLayoutHints(kLHintsLeft,2,2,10,2)); + fLinePlotFrame->AddFrame(fVectorLPFrame, new TGLayoutHints(kLHintsLeft,2,2,2,2)); + fLinePlotFrame->AddFrame(fRadioLPFrame, new TGLayoutHints(kLHintsLeft,2,2,2,2)); + fLinePlotFrame->MapSubwindows(); + + fButtonspace->AddFrame(fLinePlotFrame, new TGLayoutHints(kLHintsCenterX,2,2,2,2)); + + fButtonspace->MapSubwindows(); + fWorkspace->AddFrame(fButtonspace, fLayoutLeftflush); + + fWorkspace->MapSubwindows(); + AddFrame(fWorkspace, fLayoutCentered); + + // Sets window name and shows the main frame + SetWindowName("H5PartROOT"); + MapSubwindows(); + Resize(GetDefaultSize()); + MapWindow(); + + fLastPlot = kNoPlot; + +} + +TH5MainFrame::~TH5MainFrame() { + + delete [] fDataset; + + Cleanup(); // deletes all buttons and frames etc. + +} + +void TH5MainFrame::LoadFile() { + if (fFilenameBuffer->GetTextLength()==0) { + Error("LoadFile", "No filename entered!"); + } else { + LoadFile(fFilenameBuffer->GetString()); + } +} + +void TH5MainFrame::LoadFile(const char * filename) { + + FileStat_t fs; + Int_t notExist = gSystem->GetPathInfo(filename, fs); + if (notExist) { + Error("LoadFile", "There is no file named \"%s\"!",filename); + return; + } + + // find the first available slot: + Int_t slot(0); + for (Int_t n=0; n<5; ++n) { + if (!fDataset[n]) { + slot = n; + break; + } + if (n==4) { + Error("LoadFile", "You have already loaded 5 files!"); + return; + } + } + + fDataset[slot] = new TH5Dataset(filename, fSubsamplingRate); + + // update name of check button (strip path): + TString fname = fDataset[slot]->GetFilename(); + Int_t nSteps = fDataset[slot]->GetNSteps(); + + TString bname(fname+TString(" (")); + bname+=nSteps; + bname+=TString(" steps)"); + fFileButton[slot]->SetText(bname); + + // ... and check the box! + fFileButton[slot]->SetState(kButtonDown); + // set file to active: + fDataset[slot]->SetState(kActive); + + // warn if number of steps is larger than for first file: + if (nSteps != fDataset[0]->GetNSteps()) + Warning("LoadFile","New file has %d steps, whereas first file has %d!", + nSteps,fDataset[0]->GetNSteps()); + + UpdateSelections(); + +} + +void TH5MainFrame::ActivateFile(Int_t slot) { + if (fDataset[slot]->GetState() == kNotExist) { + fFileButton[slot]->SetState(kButtonDisabled); + return; + } + if (fFileButton[slot]->GetState()==kButtonUp) fDataset[slot]->SetState(kNotActive); + if (fFileButton[slot]->GetState()==kButtonDown) fDataset[slot]->SetState(kActive); + + UpdateSelections(); + +} + +void TH5MainFrame::UpdateSelections() { + + // update step and variable selection (according to first selected file) + TH5Dataset* activeData[5]; + Int_t nFiles(0); + GetSelFiles(activeData,nFiles); + + if (activeData[0]) { + + fStepSlider->SetRange(0,(activeData[0]->GetNSteps())-1); + fStepSlider->SetPosition(0); + + for(Int_t i=0;i<8;i++){ + EButtonState prevState = fVarButton[i]->GetState(); + fVarName[i] = activeData[0]->GetPartVarName(i); + if (fVarName[i] != TString("")) { + if (prevState==kButtonDown) { + fVarButton[i]->SetState(prevState); + } else { + fVarButton[i]->SetState(kButtonUp); + } + fVarButton[i]->SetText(activeData[0]->GetPartVarName(i)); + } else { + fVarName[i] = fVarNameDefault[i]; + fVarButton[i]->SetState(kButtonDisabled); + } + } + + Int_t prevSelEntry = fSelLPBox->GetSelected(); + Int_t prevScalarEntry = fScalarLPBox->GetSelected(); + Int_t prevVectorEntry = fVectorLPBox->GetSelected(); + + // fSelLPBox->RemoveAll(); // only in most recent version?? + // fScalarLPBox->RemoveAll(); // only in most recent version?? + fSelLPBox->RemoveEntries(0,fSelLPBox->GetNumberOfEntries()-1); + fScalarLPBox->RemoveEntries(0,fScalarLPBox->GetNumberOfEntries()-1); + Int_t sposID(0); + for (Int_t is = 0; is < activeData[0]->GetNScalarAttr(); is++) { + TString vname = activeData[0]->GetScalarStepVarName(is); + fSelLPBox->AddEntry(vname,is); + fScalarLPBox->AddEntry(vname,is); + if (vname=="Spos"||vname=="spos"||vname=="s") sposID = is; + } + + // fVectorLPBox->RemoveAll(); // only in most recent version?? + fVectorLPBox->RemoveEntries(0,fVectorLPBox->GetNumberOfEntries()-1); + for (Int_t iv = 0; iv < activeData[0]->GetNVectorAttr(); iv++) { + fVectorLPBox->AddEntry(activeData[0]->GetVectorStepVarName(iv),iv); + } + + // restore previous setting if possible + if (activeData[0]->GetNScalarAttr() > prevSelEntry) { + fSelLPBox->Select(prevSelEntry); + } else { + fSelLPBox->Select(sposID); + } + if (activeData[0]->GetNScalarAttr() > prevScalarEntry) { + fScalarLPBox->Select(prevScalarEntry); + } else { + fScalarLPBox->Select(0); + } + if (activeData[0]->GetNVectorAttr() > prevVectorEntry) { + fVectorLPBox->Select(prevVectorEntry); + } else { + fVectorLPBox->Select(0); + } + } + +} + + +void TH5MainFrame::Histo1d() { + + TH5Dataset* dataToPlot[5]; + Int_t nFiles(0); + GetSelFiles(dataToPlot,nFiles); + + switch (nFiles) { + case 0: + Error("Histo1d", "No files have been selected!"); + break; + case 1: + Histo1d(dataToPlot[0]); + break; + case 2: + Histo1d(dataToPlot[0],dataToPlot[1]); + break; + case 3: + Error("Histo1d", "Histogramming for %d files not yet implemented",nFiles); + break; + case 4: + Error("Histo1d", "Histogramming for %d files not yet implemented",nFiles); + break; + case 5: + Error("Histo1d", "Histogramming for %d files not yet implemented",nFiles); + break; + default: + cout << "Huh?" << endl; + } // switch + + fLastPlot = kHisto1d; + +} + +void TH5MainFrame::Histo1d(TH5Dataset* data) { + + // Int_t step = fStepBox->GetSelected(); + Int_t step = fStepSlider->GetPosition(); + Int_t opt = fHisto1dBox->GetSelected(); + TString drawOpt = H5DrawOpt1d[opt]; + + TString legEntry = TString("l"); + if (drawOpt=="e1p") legEntry = TString("lp"); + if (drawOpt=="e2p") legEntry = TString("fp"); + + TString* varToPlot[8]; + Int_t nVars; + GetSelVar(varToPlot,nVars); + + TCanvas *canv = fEcanvas->GetCanvas(); + + Double_t plotMin(0.); + Double_t plotMax(0.); + + switch (nVars) { + case 0: + Error("Histo1d", "No variable has been selected!"); + break; + + case 1: // nVars == 1 + + { + TH1F* hist; + if (data) { + data->PlotRange(varToPlot[0], step, plotMin, plotMax); + hist = data->Histo1d(varToPlot[0],step,plotMin,plotMax); + if (data->GetUnit(*varToPlot[0]) != "") + hist->SetXTitle(*varToPlot[0] + AddBrackets(data->GetUnit(*varToPlot[0]))); + } + canv->Clear(); + canv->SetRightMargin(0.25); + + if (drawOpt=="e2p") hist->SetFillColor(17); + if (drawOpt=="b") { + hist->SetBarOffset(0.2); + hist->SetBarWidth(0.75); + hist->SetFillColor(kBlack); + } + hist->Draw(drawOpt); + + TH5Legend* leg = new TH5Legend(0.8,0.8,1.,0.95); + TString header(*varToPlot[0]+TString( "distribution, step ")); + header+=step; + leg->AddEntry(hist, data->GetFilename(),legEntry); + leg->SetHeader(header); + leg->Draw(); + + canv->Update(); + } + break; + case 2: // nVars == 2 + + TH1F* hist0 = (TH1F*) gROOT->FindObject("hist0"); + if (hist0) delete hist0; + TH1F* hist1 = (TH1F*) gROOT->FindObject("hist1"); + if (hist1) delete hist1; + + if (data) { + data->PlotRange(varToPlot[0], step, plotMin, plotMax); + hist0 = data->Histo1d(varToPlot[0],step,plotMin,plotMax); + hist0->SetName("hist0"); + if (data->GetUnit(*varToPlot[0]) != "") + hist0->SetXTitle(*varToPlot[0] + AddBrackets(data->GetUnit(*varToPlot[0]))); + data->PlotRange(varToPlot[1], step, plotMin, plotMax); + hist1 = data->Histo1d(varToPlot[1],step,plotMin,plotMax); + hist1->SetName("hist1"); + if (data->GetUnit(*varToPlot[1]) != "") + hist1->SetXTitle(*varToPlot[1] + AddBrackets(data->GetUnit(*varToPlot[1]))); + } + + canv->Clear(); + canv->Divide(2,1); + + if (drawOpt=="e2p") { + hist0->SetFillColor(17);hist1->SetFillColor(17); + } + if (drawOpt=="b") { + hist0->SetBarOffset(0.2);hist1->SetBarOffset(0.2); + hist0->SetBarWidth(0.75);hist1->SetBarWidth(0.75); + hist0->SetFillColor(kBlack);hist1->SetFillColor(kBlack); + } + + canv->cd(1); + hist0->Draw(drawOpt); + TH5Legend* leg0 = new TH5Legend(0.7,0.75,.9,0.9); + leg0->AddEntry(hist0, data->GetFilename(),legEntry); + leg0->SetHeader(*varToPlot[0]+TString(" distribution")); + leg0->Draw(); + + canv->cd(2); + hist1->Draw(drawOpt); + TH5Legend* leg1 = new TH5Legend(0.7,0.75,.9,0.9); + leg1->AddEntry(hist1, data->GetFilename(),legEntry); + leg1->SetHeader(*varToPlot[1]+TString(" distribution")); + leg1->Draw(); + + break; + case 3: // nVars == 3 + Error("Histo1d", "Histogramming for %d variables not yet implemented",nVars); + break; + case 4: // nVars == 4 + Error("Histo1d", "Histogramming for %d variables not yet implemented",nVars); + break; + case 5: // nVars == 5 + Error("Histo1d", "Histogramming for %d variables not yet implemented",nVars); + break; + case 6: // nVars == 6 + Error("Histo1d", "Histogramming for %d variables not yet implemented",nVars); + break; + default: + cout << "Huh?" << endl; + }//switch + + canv->Update(); + +} + +void TH5MainFrame::Histo1d(TH5Dataset* data0, TH5Dataset* data1) { + + Int_t step = fStepSlider->GetPosition(); + Int_t opt = fHisto1dBox->GetSelected(); + + TString drawOpt = H5DrawOpt1d[opt]; + TString drawOptSame = H5DrawOpt1d[opt]+TString("same"); + + TString legEntry = TString("l"); + if (drawOpt=="e1p") legEntry = TString("lp"); + if (drawOpt=="e2p") legEntry = TString("fp"); + + if (opt!=0) Warning("Histo1d", "Drawing option %s may give weird results for two files!", drawOpt.Data()); + + TString* varToPlot[8]; + Int_t nVars; + GetSelVar(varToPlot,nVars); + + TCanvas *canv = fEcanvas->GetCanvas(); + canv->Clear(); + canv->SetRightMargin(0.25); + + Double_t plotMin(0.); + Double_t plotMax(0.); + Double_t min0(0.); + Double_t max0(0.); + Double_t min1(0.); + Double_t max1(0.); + + switch (nVars) { + case 0: + Error("Histo1d", "No variables have been selected"); + break; + + case 1: { // nVars == 1 + TH1F* hist0 = (TH1F*) gROOT->FindObject("hist0"); + if (hist0) delete hist0; + TH1F* hist1 = (TH1F*) gROOT->FindObject("hist1"); + if (hist1) delete hist1; + + if (data0) data0->Range(varToPlot[0], step, min0, max0); + if (data1) data1->Range(varToPlot[0], step, min1, max1); + plotMin = min0 ? max1; + AddMargin(plotMin,plotMax); + + if (data0) hist0 = data0->Histo1d(varToPlot[0], step, plotMin, plotMax); + hist0->SetName("hist0"); + if (data1) hist1 = data1->Histo1d(varToPlot[0], step, plotMin, plotMax); + hist1->SetName("hist1"); + + if (data0->GetUnit(*varToPlot[0]) == data1->GetUnit(*varToPlot[0])) { + if (data0->GetUnit(*varToPlot[0]) != "") { + hist0->SetXTitle(*varToPlot[0] + AddBrackets(data0->GetUnit(*varToPlot[0]))); + } + } else { + Warning("Histo1d","Inconsistent units between files %s and %s", + data0->GetFilename().Data(),data1->GetFilename().Data()); + if (data0->GetUnit(*varToPlot[0]) != "") { + hist0->SetXTitle(*varToPlot[0] + AddBrackets(data0->GetUnit(*varToPlot[0]))); + } else if (data0->GetUnit(*varToPlot[0]) != "") { + hist0->SetXTitle(*varToPlot[0] + AddBrackets(data0->GetUnit(*varToPlot[0]))); + } + } + + if (drawOpt=="e2p") { + hist0->SetFillColor(15);hist1->SetFillColor(18); + } + + hist1->SetLineStyle(kDashed); + hist1->SetMarkerStyle(25); + + if (hist0->GetMaximum() > hist1->GetMaximum()) { + hist0->Draw(drawOpt); hist1->Draw(drawOptSame); + } else { + hist1->Draw(drawOpt); hist0->Draw(drawOptSame); + } + + TH5Legend* leg = new TH5Legend(0.8,0.8,1.,0.95); + leg->AddEntry(hist0, data0->GetFilename(),legEntry); + leg->AddEntry(hist1, data1->GetFilename(),legEntry); + leg->SetHeader(*varToPlot[0]+TString(" distribution")); + leg->Draw(); + + break; } + + case 2: { // nVars == 2 + + TH1F* hist00 = (TH1F*) gROOT->FindObject("hist00"); + if (hist00) delete hist00; + TH1F* hist01 = (TH1F*) gROOT->FindObject("hist01"); + if (hist01) delete hist01; + TH1F* hist10 = (TH1F*) gROOT->FindObject("hist10"); + if (hist10) delete hist10; + TH1F* hist11 = (TH1F*) gROOT->FindObject("hist11"); + if (hist11) delete hist11; + + if (data0) data0->Range(varToPlot[0], step, min0, max0); + if (data1) data1->Range(varToPlot[0], step, min1, max1); + plotMin = min0 ? max1; + AddMargin(plotMin,plotMax); + + if (data0) hist00 = data0->Histo1d(varToPlot[0], step, plotMin, plotMax); + hist00->SetName("hist00"); + if (data1) hist10 = data1->Histo1d(varToPlot[0], step, plotMin, plotMax); + hist10->SetName("hist10"); + + if (data0->GetUnit(*varToPlot[0]) == data1->GetUnit(*varToPlot[0])) { + if (data0->GetUnit(*varToPlot[0]) != "") { + hist00->SetXTitle(*varToPlot[0] + AddBrackets(data0->GetUnit(*varToPlot[0]))); + } + } else { + Warning("Histo1d","Inconsistent units between files %s and %s", + data0->GetFilename().Data(),data1->GetFilename().Data()); + if (data0->GetUnit(*varToPlot[0]) != "") { + hist00->SetXTitle(*varToPlot[0] + AddBrackets(data0->GetUnit(*varToPlot[0]))); + } else if (data0->GetUnit(*varToPlot[0]) != "") { + hist00->SetXTitle(*varToPlot[0] + AddBrackets(data0->GetUnit(*varToPlot[0]))); + } + } + + if (data0) data0->Range(varToPlot[1], step, min0, max0); + if (data1) data1->Range(varToPlot[1], step, min1, max1); + plotMin = min0 ? max1; + AddMargin(plotMin,plotMax); + + if (data0) hist01 = data0->Histo1d(varToPlot[1], step, plotMin, plotMax); + hist01->SetName("hist01"); + if (data1) hist11 = data1->Histo1d(varToPlot[1], step, plotMin, plotMax); + hist11->SetName("hist11"); + + if (data0->GetUnit(*varToPlot[1]) == data1->GetUnit(*varToPlot[1])) { + if (data0->GetUnit(*varToPlot[1]) != "") { + hist01->SetXTitle(*varToPlot[1] + AddBrackets(data0->GetUnit(*varToPlot[1]))); + } + } else { + Warning("Histo1d","Inconsistent units between files %s and %s", + data0->GetFilename().Data(),data1->GetFilename().Data()); + if (data0->GetUnit(*varToPlot[1]) != "") { + hist01->SetXTitle(*varToPlot[1] + AddBrackets(data0->GetUnit(*varToPlot[1]))); + } else if (data0->GetUnit(*varToPlot[1]) != "") { + hist01->SetXTitle(*varToPlot[1] + AddBrackets(data0->GetUnit(*varToPlot[1]))); + } + } + + if (drawOpt=="e2p") { + hist00->SetFillColor(15);hist10->SetFillColor(18); + hist01->SetFillColor(15);hist11->SetFillColor(18); + } + + canv->Clear(); + canv->Divide(2,1); + + canv->cd(1); + + hist10->SetLineStyle(kDashed); + hist10->SetMarkerStyle(25); + + if (hist00->GetMaximum() > hist10->GetMaximum()) { + hist00->Draw(drawOpt); hist10->Draw(drawOptSame); + } else { + hist10->Draw(drawOpt); hist00->Draw(drawOptSame); + } + + TH5Legend* leg0 = new TH5Legend(0.7,0.75,.9,0.9); + leg0->AddEntry(hist00, data0->GetFilename(),legEntry); + leg0->AddEntry(hist10, data1->GetFilename(),legEntry); + leg0->SetHeader(*varToPlot[0]+TString(" distribution")); + leg0->Draw(); + + canv->cd(2); + + hist11->SetLineStyle(kDashed); + hist11->SetMarkerStyle(25); + + if (hist01->GetMaximum() > hist11->GetMaximum()) { + hist01->Draw(drawOpt); hist11->Draw(drawOptSame); + } else { + hist11->Draw(drawOpt); hist01->Draw(drawOptSame); + } + + TH5Legend* leg1 = new TH5Legend(0.7,0.75,.9,0.9); + leg1->AddEntry(hist01, data0->GetFilename(),legEntry); + leg1->AddEntry(hist11, data1->GetFilename(),legEntry); + leg1->SetHeader(*varToPlot[1] + TString(" distribution")); + leg1->Draw(); + + break; } + case 3: // nVars == 3 + Error("Histo1d", "Histogramming for %d variables not yet implemented",nVars); + break; + case 4: // nVars == 4 + Error("Histo1d", "Histogramming for %d variables not yet implemented",nVars); + break; + case 5: // nVars == 5 + Error("Histo1d", "Histogramming for %d variables not yet implemented",nVars); + break; + case 6: // nVars == 6 + Error("Histo1d", "Histogramming for %d variables not yet implemented",nVars); + break; + default: + cout << "Huh?" << endl; + } //switch + + canv->Update(); + + +} + +void TH5MainFrame::Histo2d() { + + TH5Dataset* dataToPlot[5]; + Int_t nFiles(0); + GetSelFiles(dataToPlot,nFiles); + + switch (nFiles) { + case 0: + Error("Histo2d", "No files have been selected!"); + break; + case 1: + Histo2d(dataToPlot[0]); + break; + case 2: + Error("Histo2d", "2d histogram for %d files not yet implemented",nFiles); + break; + case 3: + Error("Histo2d", "2d histogram for %d files not yet implemented",nFiles); + break; + case 4: + Error("Histo2d", "2d histogram for %d files not yet implemented",nFiles); + break; + case 5: + Error("Histo2d", "2d histogram for %d files not yet implemented",nFiles); + break; + default: + cout << "Huh?" << endl; + } // switch + + fLastPlot = kHisto2d; + +} + +void TH5MainFrame::Histo2d(TH5Dataset* data) { + + Int_t step = fStepSlider->GetPosition(); + Int_t opt = fHisto2dBox->GetSelected(); + + TString* varToPlot[8]; + Int_t nVars; + GetSelVar(varToPlot,nVars); + + TCanvas *canv = fEcanvas->GetCanvas(); + + canv->Clear(); + if (H5DrawOpt2d[opt]=="colz"||H5DrawOpt2d[opt]=="contz"||H5DrawOpt2d[opt]=="surf2z") { + canv->SetRightMargin(0.35); + } else { + canv->SetRightMargin(0.25); + } + + Double_t plotMinX(0.); + Double_t plotMaxX(0.); + Double_t plotMinY(0.); + Double_t plotMaxY(0.); + + switch (nVars) { + case 0: + Error("Histo2d", "No variable has been selected!"); + break; + + case 1: // nVars == 1 + + { + TH2F* hist; + if (data) { + data->PlotRange(varToPlot[0], step, plotMinX, plotMaxX); + hist = data->Histo2d(varToPlot[0],varToPlot[0],step,plotMinX,plotMaxX,plotMinX,plotMaxX); + if (data->GetUnit(*varToPlot[0]) != "") { + hist->SetXTitle(*varToPlot[0] + AddBrackets(data->GetUnit(*varToPlot[0]))); + hist->SetYTitle(*varToPlot[0] + AddBrackets(data->GetUnit(*varToPlot[0]))); + } + } + hist->SetMarkerStyle(1); + hist->Draw(H5DrawOpt2d[opt]); + + TH5Legend* leg = new TH5Legend(0.8,0.8,1.,0.95); + TString header(*varToPlot[0]+TString("-") + *varToPlot[0] + + TString(" distr., step ")); + header+=step; + leg->AddEntry(hist, data->GetFilename(),"p"); + leg->SetHeader(header); + leg->Draw(); + + canv->Update(); + } + break; + case 2: // nVars == 2 + + { + TH2F* hist; + if (data) { + data->PlotRange(varToPlot[0], step, plotMinX, plotMaxX); + data->PlotRange(varToPlot[1], step, plotMinY, plotMaxY); + hist = data->Histo2d(varToPlot[0],varToPlot[1],step,plotMinX,plotMaxX,plotMinY,plotMaxY); + if (data->GetUnit(*varToPlot[0]) != "") + hist->SetXTitle(*varToPlot[0] + AddBrackets(data->GetUnit(*varToPlot[0]))); + if (data->GetUnit(*varToPlot[1]) != "") + hist->SetYTitle(*varToPlot[1] + AddBrackets(data->GetUnit(*varToPlot[1]))); + } + hist->SetMarkerStyle(1); + + if (H5DrawOpt2d[opt]=="unbinned") { // true scatter plot + canv->Clear(); + TH1F* shist = data->Scatter(varToPlot[0],varToPlot[1],canv,step,plotMinX,plotMaxX,plotMinY,plotMaxY); + if (data->GetUnit(*varToPlot[0]) != "") + shist->SetXTitle(*varToPlot[0] + AddBrackets(data->GetUnit(*varToPlot[0]))); + if (data->GetUnit(*varToPlot[1]) != "") + shist->SetYTitle(*varToPlot[1] + AddBrackets(data->GetUnit(*varToPlot[1]))); + } else { + hist->Draw(H5DrawOpt2d[opt]); + } + + TH5Legend* leg = new TH5Legend(0.8,0.8,1.,0.95); + TString header(*varToPlot[0] + TString("-") + *varToPlot[1] + + TString(" distr., step ")); + header+=step; + leg->AddEntry(hist, data->GetFilename(),"p"); + leg->SetHeader(header); + leg->Draw(); + + canv->Update(); + } + break; + case 3: // nVars == 3 + Error("Histo2d", "Cannot produce 2d histogram with %d variables!",nVars); + break; + case 4: // nVars == 4 + Error("Histo2d", "2d histogram for %d variables not yet implemented",nVars); + break; + case 5: // nVars == 5 + Error("Histo2d", "Cannot produce 2d histogram with %d variables!",nVars); + break; + case 6: // nVars == 6 + Error("Histo2d", "2d histogram for %d variables not yet implemented",nVars); + break; + default: + cout << "Huh?" << endl; + }//switch + +} + +void TH5MainFrame::Histo3d() { + + TH5Dataset* dataToPlot[5]; + Int_t nFiles(0); + GetSelFiles(dataToPlot,nFiles); + + switch (nFiles) { + case 0: + Error("Histo3d", "No files have been selected!"); + break; + case 1: + Histo3d(dataToPlot[0]); + break; + case 2: + Error("Histo3d", "3d histogram for %d files not yet implemented",nFiles); + break; + case 3: + Error("Histo3d", "3d histogram for %d files not yet implemented",nFiles); + break; + case 4: + Error("Histo3d", "3d histogram for %d files not yet implemented",nFiles); + break; + case 5: + Error("Histo3d", "3d histogram for %d files not yet implemented",nFiles); + break; + default: + cout << "Huh?" << endl; + } // switch + + fLastPlot = kHisto3d; + +} + +void TH5MainFrame::Histo3d(TH5Dataset* data) { + + Int_t step = fStepSlider->GetPosition(); + Int_t opt = fHisto3dBox->GetSelected(); + + TString* varToPlot[8]; + Int_t nVars; + GetSelVar(varToPlot,nVars); + + TCanvas *canv = fEcanvas->GetCanvas(); + + canv->Clear(); + canv->SetRightMargin(0.50); // is ignored by TH3F... + + Double_t plotMinX(0.); + Double_t plotMaxX(0.); + Double_t plotMinY(0.); + Double_t plotMaxY(0.); + Double_t plotMinZ(0.); + Double_t plotMaxZ(0.); + + switch (nVars) { + case 0: + Error("Histo3d", "No variable has been selected!"); + break; + + case 1: // nVars == 1 + Error("Histo3d", "Cannot produce 3d histogram with %d variables",nVars); + break; + case 2: // nVars == 2 + Error("Histo3d", "Cannot produce 3d histogram with %d variables",nVars); + break; + case 3: // nVars == 3 + { + + TH3F* hist; + if (data) { + data->PlotRange(varToPlot[0], step, plotMinX, plotMaxX); + data->PlotRange(varToPlot[1], step, plotMinY, plotMaxY); + data->PlotRange(varToPlot[2], step, plotMinZ, plotMaxZ); + hist = data->Histo3d(varToPlot[0],varToPlot[1],varToPlot[2],step, + plotMinX,plotMaxX,plotMinY,plotMaxY,plotMinZ,plotMaxZ); + if (data->GetUnit(*varToPlot[0]) != "") + hist->SetXTitle(*varToPlot[0] + AddBrackets(data->GetUnit(*varToPlot[0]))); + if (data->GetUnit(*varToPlot[1]) != "") + hist->SetYTitle(*varToPlot[1] + AddBrackets(data->GetUnit(*varToPlot[1]))); + if (data->GetUnit(*varToPlot[2]) != "") + hist->SetZTitle(*varToPlot[2] + AddBrackets(data->GetUnit(*varToPlot[2]))); + } + hist->SetMarkerStyle(6); + hist->Draw(H5DrawOpt3d[opt]); + + TH5Legend* leg = new TH5Legend(0.8,0.8,1.,0.95); + TString header(*varToPlot[0] + TString("-") + *varToPlot[1] + + TString("-") + *varToPlot[2] + TString(" distr., step ")); + header += step; + leg->AddEntry(hist, data->GetFilename(),"p"); + leg->SetHeader(header); + leg->Draw(); + + canv->Update(); + } + break; + case 4: // nVars == 4 + Error("Histo3d", "3d histogram for %d variables not yet implemented",nVars); + break; + case 5: // nVars == 5 + Error("Histo3d", "3d histogram for %d variables not yet implemented",nVars); + break; + case 6: // nVars == 6 + Error("Histo3d", "3d histogram for %d variables not yet implemented",nVars); + break; + default: + cout << "Huh?" << endl; + }//switch + +} + +void TH5MainFrame::ScalarLinePlot() { + + // determine active datafiles + TH5Dataset* dataToPlot[5]; + Int_t nFiles(0); + GetSelFiles(dataToPlot,nFiles); + + // get selected variables + TString stepVarNameX; + TString stepVarNameY; + if (nFiles) { + stepVarNameX = TString(fSelLPBox->GetSelectedEntry()->GetTitle()); + stepVarNameY = TString(fScalarLPBox->GetSelectedEntry()->GetTitle()); + } + + switch (nFiles) { + case 0: + Error("ScalarLinePlot", "No files have been selected!"); + break; + case 1: + LinePlot(dataToPlot[0],stepVarNameX,stepVarNameY,kScalar); + break; + case 2: + LinePlot(dataToPlot[0],dataToPlot[1],stepVarNameX,stepVarNameY,kScalar); + break; + case 3: + Error("ScalarLinePlot", "LinePlot for %d files not yet implemented",nFiles); + break; + case 4: + Error("ScalarLinePlot", "LinePlot for %d files not yet implemented",nFiles); + break; + case 5: + Error("ScalarLinePlot", "LinePlot for %d files not yet implemented",nFiles); + break; + default: + cout << "Huh?" << endl; + } // switch + + fLastPlot = kScalarLinePlot; +} + +void TH5MainFrame::VectorLinePlot() { + + // determine active datafiles + TH5Dataset* dataToPlot[5]; + Int_t nFiles(0); + GetSelFiles(dataToPlot,nFiles); + + // get selected variables + TString stepVarNameX; + TString stepVarNameY; + if (nFiles) { + stepVarNameX = TString(fSelLPBox->GetSelectedEntry()->GetTitle()); + stepVarNameY = TString(fVectorLPBox->GetSelectedEntry()->GetTitle()); + } + + // get selected coordinate: + EH5Coord crd; + if (kButtonDown == fRadioLP[2]->GetState()) crd = kZ; + if (kButtonDown == fRadioLP[1]->GetState()) crd = kY; + if (kButtonDown == fRadioLP[0]->GetState()) crd = kX; + + switch (nFiles) { + case 0: + Error("VectorLinePlot", "No files have been selected!"); + break; + case 1: + LinePlot(dataToPlot[0],stepVarNameX,stepVarNameY,crd); + break; + case 2: + LinePlot(dataToPlot[0],dataToPlot[1],stepVarNameX,stepVarNameY,crd); + break; + case 3: + Error("VectorLinePlot", "LinePlot for %d files not yet implemented",nFiles); + break; + case 4: + Error("VectorLinePlot", "LinePlot for %d files not yet implemented",nFiles); + break; + case 5: + Error("VectorLinePlot", "LinePlot for %d files not yet implemented",nFiles); + break; + default: + cout << "Huh?" << endl; + } // switch + + fLastPlot = kVectorLinePlot; +} + +void TH5MainFrame::LinePlot(const TH5Dataset* data, const TString stepVarNameX, + const TString stepVarNameY, const EH5Coord coord) { + + TString coordName; + if (coord==kScalar) coordName = TString(""); + if (coord==kX) coordName = TString(" (x) "); + if (coord==kY) coordName = TString(" (y) "); + if (coord==kZ) coordName = TString(" (z) "); + + Int_t nStep = data->GetNSteps(); + + Double_t varX[nStep]; + Double_t varY[nStep]; + + Double_t varXMin = 1.e20; + Double_t varXMax = -1.e20; + Double_t varYMin = 1.e20; + Double_t varYMax = -1.e20; + + TCanvas *canv = fEcanvas->GetCanvas(); + canv->SetRightMargin(0.25); + + for(Int_t step = 0; step < nStep; step++){ + varX[step] = data->GetStepVar(stepVarNameX,kScalar,step); + if (varX[step] < varXMin) varXMin = varX[step]; + if (varX[step] > varXMax) varXMax = varX[step]; + + varY[step] = data->GetStepVar(stepVarNameY,coord,step); + + if (varY[step] < varYMin) varYMin = varY[step]; + if (varY[step] > varYMax) varYMax = varY[step]; + } + + AddMargin(varXMin,varXMax); + AddMargin(varYMin,varYMax); + + TH2F *linePlot = static_cast(gROOT->FindObject("linePlot")); + if (linePlot) delete linePlot; + + linePlot = new TH2F("linePlot","line plot", + 200,varXMin,varXMax,200,varYMin,varYMax); + canv->Clear(); + linePlot->SetStats(kFALSE); + linePlot->Draw(); + + TGraph* varGraph = new TGraph(nStep,varX,varY); + varGraph->Draw("LP"); + + TString varXTitle = stepVarNameX; + TString varYTitle = stepVarNameY+coordName; + + if (data->GetUnit(stepVarNameX) != "") + varXTitle += AddBrackets(data->GetUnit(stepVarNameX)); + if (data->GetUnit(stepVarNameY) != "") + varYTitle += AddBrackets(data->GetUnit(stepVarNameY)); + + TH5Legend* leg = new TH5Legend(0.8,0.8,1.,0.95); + leg->AddEntry(varGraph, data->GetFilename(),"lp"); + leg->SetHeader("line plot"); + leg->Draw(); + + linePlot->SetYTitle(varYTitle); + linePlot->SetXTitle(varXTitle); + canv->Update(); + +} + +void TH5MainFrame::LinePlot(const TH5Dataset* data0, const TH5Dataset* data1, + const TString stepVarNameX, const TString stepVarNameY, + const EH5Coord coord) { + + TString coordName; + if (coord==kScalar) coordName = TString(""); + if (coord==kX) coordName = TString(" (x) "); + if (coord==kY) coordName = TString(" (y) "); + if (coord==kZ) coordName = TString(" (z) "); + + Int_t nStep0 = data0->GetNSteps(); + Int_t nStep1 = data1->GetNSteps(); + + Double_t varY0[nStep0]; + Double_t varX0[nStep0]; + Double_t varY1[nStep1]; + Double_t varX1[nStep1]; + + Double_t varXMin0 = 1.e20; + Double_t varXMax0 = -1.e20; + Double_t varYMin0 = 1.e20; + Double_t varYMax0 = -1.e20; + Double_t varXMin1 = 1.e20; + Double_t varXMax1 = -1.e20; + Double_t varYMin1 = 1.e20; + Double_t varYMax1 = -1.e20; + + TCanvas *canv = fEcanvas->GetCanvas(); + canv->SetRightMargin(0.25); + + for(Int_t step = 0; step < nStep0; step++){ + varX0[step] = data0->GetStepVar(stepVarNameX,kScalar,step); + if (varX0[step] < varXMin0) varXMin0 = varX0[step]; + if (varX0[step] > varXMax0) varXMax0 = varX0[step]; + + varY0[step] = data0->GetStepVar(stepVarNameY,coord,step); + if (varY0[step] < varYMin0) varYMin0 = varY0[step]; + if (varY0[step] > varYMax0) varYMax0 = varY0[step]; + } + + for(Int_t step = 0; step < nStep1; step++){ + varX1[step] = data1->GetStepVar(stepVarNameX,kScalar,step); + if (varX1[step] < varXMin1) varXMin1 = varX1[step]; + if (varX1[step] > varXMax1) varXMax1 = varX1[step]; + + varY1[step] = data1->GetStepVar(stepVarNameY,coord,step); + if (varY1[step] < varYMin1) varYMin1 = varY1[step]; + if (varY1[step] > varYMax1) varYMax1 = varY1[step]; + } + + Double_t varXMin = varXMin0 ? varXMax1; + Double_t varYMin = varYMin0 ? varYMax1; + + AddMargin(varXMin,varXMax); + AddMargin(varYMin,varYMax); + + TH2F *linePlot = static_cast(gROOT->FindObject("linePlot")); + if (linePlot) delete linePlot; + + linePlot = new TH2F("linePlot","line plot", + 200,varXMin,varXMax,200,varYMin,varYMax); + canv->Clear(); + linePlot->SetStats(kFALSE); + linePlot->Draw(); + + TGraph* varGraph0 = new TGraph(nStep0,varX0,varY0); + varGraph0->SetMarkerStyle(20); + varGraph0->SetLineStyle(kSolid); + + TGraph* varGraph1 = new TGraph(nStep1,varX1,varY1); + varGraph1->SetMarkerStyle(25); + varGraph1->SetLineStyle(kDashed); + + varGraph0->Draw("LP"); + varGraph1->Draw("LPsame"); + + TString varXTitle = stepVarNameX; + TString varYTitle = stepVarNameY+coordName; + + if (data0->GetUnit(stepVarNameX) == data1->GetUnit(stepVarNameX)) { + if (data0->GetUnit(stepVarNameX) != "") { + varXTitle += AddBrackets(data0->GetUnit(stepVarNameX)); + } + } else { + Warning("LinePlot","Inconsistent units between files %s and %s", + data0->GetFilename().Data(),data1->GetFilename().Data()); + if (data0->GetUnit(stepVarNameX) != "") { + varXTitle += AddBrackets(data0->GetUnit(stepVarNameX)); + } else if (data1->GetUnit(stepVarNameX) != "") { + varXTitle += AddBrackets(data1->GetUnit(stepVarNameX)); + } + } + + if (data0->GetUnit(stepVarNameY) == data1->GetUnit(stepVarNameY)) { + if (data0->GetUnit(stepVarNameY) != "") { + varYTitle += AddBrackets(data0->GetUnit(stepVarNameY)); + } + } else { + Warning("LinePlot","Inconsistent units between files %s and %s", + data0->GetFilename().Data(),data1->GetFilename().Data()); + if (data0->GetUnit(stepVarNameY) != "") { + varYTitle += AddBrackets(data0->GetUnit(stepVarNameY)); + } else if (data1->GetUnit(stepVarNameY) != "") { + varYTitle += AddBrackets(data1->GetUnit(stepVarNameY)); + } + } + + + TH5Legend* leg = new TH5Legend(0.8,0.8,1.,0.95); + leg->AddEntry(varGraph0, data0->GetFilename(),"lp"); + leg->AddEntry(varGraph1, data1->GetFilename(),"lp"); + leg->SetHeader("line plot"); + leg->Draw(); + + linePlot->SetYTitle(varYTitle); + linePlot->SetXTitle(varXTitle); + canv->Update(); + +} + +void TH5MainFrame::GetSelVar(TString* selVarName[8], Int_t& nv) { + + nv=0; + Int_t iter(0); + for (Int_t n=0; n<8; ++n) { + selVarName[n] = NULL; + if (fVarName[n]) { + if (fVarButton[n]->GetState()==kButtonDown) { + nv++; + selVarName[iter] = &fVarName[n]; + iter++; + } + } + } +} + +void TH5MainFrame::GetSelFiles(TH5Dataset* selFile[5], Int_t& nf) { + + nf=0; + Int_t iter(0); + + for (Int_t n=0; n<5; ++n) { + selFile[n] = NULL; + if (fDataset[n]) { + if (fDataset[n]->GetState()==kActive) { + nf++; + selFile[iter] = fDataset[n]; + iter++; + } + } + } +} + +void TH5MainFrame::PrintCanv() { + + Int_t format = fPrintBox->GetSelected(); + + TCanvas *canv = fEcanvas->GetCanvas(); + + // construct filename from active files and plotted variables: + TString PrintFilename; + + Int_t nFiles(0); + for (Int_t n=0; n<5; ++n) { + if (fDataset[n]) { + if (fDataset[n]->GetState()==kActive) { + if (nFiles > 0) { + PrintFilename+= TString("-"); + PrintFilename+= fDataset[n]->GetFilenameNoExt(); + } else { + PrintFilename = fDataset[n]->GetFilenameNoExt(); + } + nFiles++; + } + } + } + + Int_t nVars(0); + + if (fLastPlot==kHisto1d || fLastPlot==kHisto2d || fLastPlot==kHisto3d) { + for (Int_t n=0; n<8; ++n) { + if (fVarName[n]) { + if (fVarButton[n]->GetState()==kButtonDown) { + PrintFilename += TString("-"); + PrintFilename += fVarName[n]; + nVars++; + } + } + } + } + + if (fLastPlot==kScalarLinePlot) { + PrintFilename += TString("-"); + PrintFilename += fScalarLPBox->GetSelectedEntry()->GetTitle(); + PrintFilename += TString("-"); + PrintFilename += fSelLPBox->GetSelectedEntry()->GetTitle(); + } + + if (fLastPlot==kVectorLinePlot) { + TString coordName; + if (kButtonDown == fRadioLP[2]->GetState()) coordName = TString("z"); + if (kButtonDown == fRadioLP[1]->GetState()) coordName = TString("y"); + if (kButtonDown == fRadioLP[0]->GetState()) coordName = TString("x"); + + PrintFilename += TString("-"); + PrintFilename += fVectorLPBox->GetSelectedEntry()->GetTitle(); + PrintFilename += TString("-"); + PrintFilename += coordName; + PrintFilename += TString("-"); + PrintFilename += fSelLPBox->GetSelectedEntry()->GetTitle(); + } + + PrintFilename+= "."; + PrintFilename+= H5PrintFormat[format]; + canv->Print(PrintFilename,H5PrintFormat[format]); + + // note: could do this directly like this: + // PrintFilename+= "."; + // PrintFilename+= fPrintBox->GetSelectedEntry()->GetTitle(); + // canv->Print(PrintFilename,fPrintBox->GetSelectedEntry()->GetTitle()); + // but then we would not have the opportunity to choose option labels in the + // GUI that are different from the sometimes cryptic ROOT option strings! + +} + +void TH5MainFrame::DoStepSlider(Int_t step) { + + Int_t id; + TGFrame *frm = (TGFrame *) gTQSender; + if (frm->IsA()->InheritsFrom(TGSlider::Class())) { + TGSlider *sl = (TGSlider*) frm; + id = sl->WidgetId(); + } else { + TGDoubleSlider *sd = (TGDoubleSlider *) frm; + id = sd->WidgetId(); + } + + char bufStep[32]; + sprintf(bufStep, "%d", step); + + Double_t spos = Spos(step); + char bufSpos[32]; + sprintf(bufSpos, "%g", spos); + + switch (id) { + case stepSliderID: + fStepSliderTB->Clear(); + fStepSliderTB->AddText(0, bufStep); + // Re-align the cursor with the characters. + fStepSliderTE->SetCursorPosition(fStepSliderTE->GetCursorPosition()); + fStepSliderTE->Deselect(); + gClient->NeedRedraw(fStepSliderTE); + + fSposSliderTB->Clear(); + fSposSliderTB->AddText(0, bufSpos); + // Re-align the cursor with the characters. + fSposSliderTE->SetCursorPosition(fSposSliderTE->GetCursorPosition()); + fSposSliderTE->Deselect(); + gClient->NeedRedraw(fSposSliderTE); + + break; + default: + break; + } +} + + +void TH5MainFrame::DoStepText(const char * ) { + + TGTextEntry *te = (TGTextEntry *) gTQSender; + Int_t id = te->WidgetId(); + + Double_t spos; + Int_t step; + char bufSpos[32]; + char bufStep[32]; + + switch (id) { + case stepSliderTEID: + step = atoi(fStepSliderTB->GetString()); + fStepSlider->SetPosition(step); + // update spos field: + spos = Spos(step); + sprintf(bufSpos, "%g", spos); + fSposSliderTB->Clear(); + fSposSliderTB->AddText(0, bufSpos); + fSposSliderTE->SetCursorPosition(fSposSliderTE->GetCursorPosition()); + fSposSliderTE->Deselect(); + gClient->NeedRedraw(fSposSliderTE); + break; + case sposSliderTEID: + spos = atof(fSposSliderTB->GetString()); + step = Step(spos); + fStepSlider->SetPosition(step); + // update step field: + sprintf(bufStep, "%d", step); + fStepSliderTB->Clear(); + fStepSliderTB->AddText(0, bufStep); + fStepSliderTE->SetCursorPosition(fStepSliderTE->GetCursorPosition()); + fStepSliderTE->Deselect(); + gClient->NeedRedraw(fStepSliderTE); + break; + default: + break; + } +} + +void TH5MainFrame::DoStepTextReturn(const char * ) { + + TGTextEntry *te = (TGTextEntry *) gTQSender; + Int_t id = te->WidgetId(); + + Double_t spos; + Int_t step; + char bufSpos[32]; + char bufStep[32]; + + switch (id) { + case sposSliderTEID: + spos = atof(fSposSliderTB->GetString()); + step = Step(spos); + fStepSlider->SetPosition(step); + // update step field: + sprintf(bufStep, "%d", step); + fStepSliderTB->Clear(); + fStepSliderTB->AddText(0, bufStep); + fStepSliderTE->SetCursorPosition(fStepSliderTE->GetCursorPosition()); + fStepSliderTE->Deselect(); + gClient->NeedRedraw(fStepSliderTE); + // update spos field: (jump to next smaller spos) + spos = Spos(step); + sprintf(bufSpos, "%g", spos); + fSposSliderTB->Clear(); + fSposSliderTB->AddText(0, bufSpos); + fSposSliderTE->SetCursorPosition(fSposSliderTE->GetCursorPosition()); + fSposSliderTE->Deselect(); + gClient->NeedRedraw(fSposSliderTE); + break; + default: + break; + } +} + +void TH5MainFrame::PlotNextStep(Int_t jump) { + + // update step slider: + Int_t step = fStepSlider->GetPosition(); + Int_t stepMax = fStepSlider->GetMaxPosition(); + step += jump; + if (step > stepMax) step = stepMax; + if (step < 0) step = 0; + fStepSlider->SetPosition(step); + fStepSlider->PositionChanged(step); // triggers DoStepSlider! + + DoLastPlot(); + +} + +void TH5MainFrame::DoLastPlot() { + + // redo last plot: + if (fLastPlot==kHisto1d) Histo1d(); + if (fLastPlot==kHisto2d) Histo2d(); + if (fLastPlot==kHisto3d) Histo3d(); + if (fLastPlot==kScalarLinePlot) ScalarLinePlot(); + if (fLastPlot==kVectorLinePlot) VectorLinePlot(); + +} + +void TH5MainFrame::DoLinePlotRadioButtons() +{ + + TGButton *btn = (TGButton *) gTQSender; + Int_t id = btn->WidgetId(); + + switch (id) { + case linePlotXID: + fRadioLP[1]->SetState(kButtonUp); + fRadioLP[2]->SetState(kButtonUp); + break; + case linePlotYID: + fRadioLP[0]->SetState(kButtonUp); + fRadioLP[2]->SetState(kButtonUp); + break; + case linePlotZID: + fRadioLP[0]->SetState(kButtonUp); + fRadioLP[1]->SetState(kButtonUp); + break; + default: + break; + } +} + + +Int_t TH5MainFrame::Step(const Double_t spos ) { + + TH5Dataset* activeData[5]; + Int_t nFiles(0); + GetSelFiles(activeData,nFiles); + + Int_t step; + if (activeData[0]) { + step = activeData[0]->GetStep(spos); + } else { + step = TMath::Nint(0.5*spos); // dummy + } + return(step); +} + +Double_t TH5MainFrame::Spos(const Int_t step ) { + + TH5Dataset* activeData[5]; + Int_t nFiles(0); + GetSelFiles(activeData,nFiles); + + Double_t spos; + if (activeData[0]) { + spos = activeData[0]->GetSpos(step); + } else { + spos = 2.*step; // dummy + } + return (spos); +} + +void TH5MainFrame::Test() { + // try to change name of test button! + if (*(fTestButton->GetText())==TGHotString(" Test ")) { + fTestButton->SetText("Why"); + } else if (*(fTestButton->GetText())==TGHotString("Why")) { + fTestButton->SetText("the"); + } else if (*(fTestButton->GetText())==TGHotString("the")) { + fTestButton->SetText("hell"); + } else if (*(fTestButton->GetText())==TGHotString("hell")) { + fTestButton->SetText("do"); + } else if (*(fTestButton->GetText())==TGHotString("do")) { + fTestButton->SetText("you"); + } else if (*(fTestButton->GetText())==TGHotString("you")) { + fTestButton->SetText("keep"); + } else if (*(fTestButton->GetText())==TGHotString("keep")) { + fTestButton->SetText("clicking?"); + } else if (*(fTestButton->GetText())==TGHotString("clicking?")) { + fTestButton->SetText(" Test "); + } else { + cout << "Huh?" << endl; + } +} + diff --git a/tools/h5Proot/TH5MainFrame.h b/tools/h5Proot/TH5MainFrame.h new file mode 100644 index 0000000..3bbcddd --- /dev/null +++ b/tools/h5Proot/TH5MainFrame.h @@ -0,0 +1,182 @@ +#ifndef __TH5MainFrame__ +#define __TH5MainFrame__ + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "TH5Dataset.h" + +enum EH5StepVar { kSpos, kEmit, kRms }; + +enum EWidgetIDs { stepSliderID, stepSliderTEID, sposSliderTEID, + linePlotXID, linePlotYID, linePlotZID }; + +enum EPlotType { kNoPlot, kHisto1d, kHisto2d, kHisto3d, + kScalarLinePlot, kVectorLinePlot }; + +using namespace std; + +class TH5MainFrame : public TGMainFrame { + + public: + + TH5MainFrame(const TGWindow *p, UInt_t w, UInt_t h, Int_t ssr = 1); + virtual ~TH5MainFrame(); + + void LoadFile(); + void LoadFile(const char * filename); + + void ActivateFile(Int_t slot); + // void SelectVar(Int_t n); + void UpdateSelections(); + + void Histo1d(); + void Histo1d(TH5Dataset* data); + void Histo1d(TH5Dataset* data0, TH5Dataset* data1); + + void Histo2d(); + void Histo2d(TH5Dataset* data); + + void Histo3d(); + void Histo3d(TH5Dataset* data); + + void ScalarLinePlot(); + void VectorLinePlot(); + void LinePlot(const TH5Dataset* data, const TString stepVarNameX, + const TString stepVarNameY, const EH5Coord coord); + void LinePlot(const TH5Dataset* data0, const TH5Dataset* data1, + const TString stepVarNameX, const TString stepVarNameY, + const EH5Coord coord); + + // void GetSelVar(TH5Variable* selVar[6], Int_t& nv); + void GetSelVar(TString* selVar[6], Int_t& nv); + void GetSelFiles(TH5Dataset* selFile[5], Int_t& nf); + + void PrintCanv(); + + void Test(); + + void DoStepSlider(Int_t pos); + void DoStepText(const char * ); + void DoStepTextReturn(const char * ); + void DoLinePlotRadioButtons(); + + void PlotNextStep(Int_t jump); + + void DoLastPlot(); + + Int_t Step(const Double_t spos); + Double_t Spos(const Int_t step); + + TString H5DrawOpt1d[10]; + TString H5DrawOpt2d[19]; + TString H5DrawOpt3d[2]; + TString H5PrintFormat[15]; + + private: + TH5Dataset* fDataset[5]; // array of H5files + TString fVarName[8]; // array of particle variables + TString fVarNameDefault[8]; // + Int_t fNStepMax; // maximum number of steps in loaded files + EPlotType fLastPlot; // type of last plot + Int_t fSubsamplingRate; // subsampling rate + + // frames, canvas + TRootEmbeddedCanvas *fEcanvas; + TGHorizontalFrame *fFileEntryBar; + TGHorizontalFrame *fWorkspace; + TGVerticalFrame *fSelspace; + TGVerticalFrame *fVarspace; + TGVerticalFrame *fButtonspace; + TGVerticalFrame *fPrintspace; + TGGroupFrame *fFileSelection; + TGGroupFrame *fStepSelection; + TGGroupFrame *fVarSelection; + + TGGroupFrame *fHistoFrame; + TGHorizontalFrame *f1dFrame; + TGHorizontalFrame *f2dFrame; + TGHorizontalFrame *f3dFrame; + TGGroupFrame *fLinePlotFrame; + // TGVerticalFrame *fLinePlotSubFrame1; + // TGVerticalFrame *fLinePlotSubFrame2; + + //buttons, labels, etc. + TGTextButton *fLoad; + TGTextButton *fExit; + TGTextButton *fHisto1d; + TGTextButton *fHisto2d; + TGTextButton *fHisto3d; + TGTextButton *fEmittance; + TGTextButton *fRMS; + + TGTextButton *fPrintButton; + + TGTextButton *fTestButton; + + TGLabel *fFileLabel; + TGTextEntry *fFileEntry; + TGTextBuffer *fFilenameBuffer; + + TGCheckButton *fFileButton[5]; + TGCheckButton *fVarButton[8]; + + TGComboBox *fStepBox; + TGComboBox *fHisto1dBox; + TGComboBox *fHisto2dBox; + TGComboBox *fHisto3dBox; + + TGComboBox *fPrintBox; + + TGHSlider *fStepSlider; + TGHorizontalFrame *fStepSposTEFrame; + TGVerticalFrame *fStepTEFrame; + TGVerticalFrame *fSposTEFrame; + TGVerticalFrame *fPrevStepFrame; + TGVerticalFrame *fNextStepFrame; + TGLabel *fStepLabel; + TGLabel *fSposLabel; + TGLabel *fPrevStepLabel; + TGLabel *fNextStepLabel; + TGTextEntry *fStepSliderTE; + TGTextBuffer *fStepSliderTB; + TGTextEntry *fSposSliderTE; + TGTextBuffer *fSposSliderTB; + TGTextButton *fNextButton; + TGTextButton *fPrevButton; + + TGHorizontalFrame *fSelLPFrame; + TGVerticalFrame *fSelLPFrameLeft; + TGVerticalFrame *fSelLPFrameRight; + TGHorizontalFrame *fScalarLPFrame; + TGHorizontalFrame *fVectorLPFrame; + TGHorizontalFrame *fRadioLPFrame; + TGLabel *fSelLPLabel1; + TGLabel *fSelLPLabel2; + TGTextButton *fScalar; + TGTextButton *fVector; + TGComboBox *fSelLPBox; + TGComboBox *fScalarLPBox; + TGComboBox *fVectorLPBox; + TGRadioButton *fRadioLP[3]; + TGTextButton *fLinePlot; + + //other GUI stuff + TGLayoutHints* fLayoutCanvas; + TGLayoutHints* fLayoutLeftflush; + TGLayoutHints* fLayoutRightflush; + TGLayoutHints* fLayoutCentered; + + ClassDef(TH5MainFrame,0) +}; + +#endif diff --git a/tools/h5pAttrib.cc b/tools/h5pAttrib.cc new file mode 100644 index 0000000..ece98ee --- /dev/null +++ b/tools/h5pAttrib.cc @@ -0,0 +1,1263 @@ +/* h5pAttrib.cc + Antino Kim + This utility will output information on h5part files accodring to the flags provided from the command line. + The parser was imported from the example of h5dump utility with slight modifications. +*/ + +#include +#include +#include +#include +#include +#include "H5Part.hh" + +#define MAX_LEN 100 + +/* Function headers */ +int get_option(int argc, const char **argv, const char *opts, const struct long_options *l_opts); +static void print_help(); +static void free_handler(struct arg_handler *hand, int len); +static void print_all(H5PartFile* file); +static void print_nstep(H5PartFile* file, char * garbage); +static void print_file_attributes(H5PartFile* file, char * garbage); +static void print_step_attributes(H5PartFile* file, char *attr); +static void print_dataset(H5PartFile* file, char *attr); +static struct arg_handler* function_assign(int argc, const char *argv[]); + +/* Global variables */ +static int display_all = true; +static int print_header = false; +static const char* global_fname = NULL; + +/* `get_option' variables */ +int opt_err = 1; /*get_option prints errors if this is on */ +int opt_ind = 1; /*token pointer */ +const char *opt_arg = NULL; /*flag argument (or value) */ + +/* indication whether the flag (option) requires an argument or not */ +enum { + no_arg = 0, /* doesn't take an argument */ + require_arg, /* requires an argument */ +}; + +/* struct for flags (options) */ +typedef struct long_options +{ + const char *name; /* name of the long option */ + int has_arg; /* whether we should look for an arg */ + char shortval; /* the shortname equivalent of long arg + * this gets returned from get_option */ +} long_options; + +/* List of options in single characters */ +static const char *s_opts = "hnAHa:d:"; + +/* List of options in full words */ +static struct long_options l_opts[] = +{ + { "help", no_arg, 'h' }, // Print help page + { "nstep", no_arg, 'n' }, // Print number of steps + { "fileA", no_arg, 'A' }, // Print file attributes + { "stepA", require_arg, 'a' }, // Print step attributes & values for time step n + { "dataset", require_arg, 'd' }, // Print data sets names & values for time step n + { "header", require_arg, 'H' }, // Print shorter version without the values + { NULL, 0, '\0' } +}; + +/* a structure for handling the order command-line parameters come in */ +struct arg_handler { + void (*func)(H5PartFile *, char *); + char *obj; +}; + + +/************************************************************************************ +*********************************** FUNCTIONS ************************************* +*************************************************************************************/ + + +/* get_option is the parsing function that was majorly ported from h5dump utility */ +int get_option(int argc, const char **argv, const char *opts, const struct long_options *l_opts) +{ + static int sp = 1; /* character index in current token */ + int opt_opt = '?'; /* option character passed back to user */ + + if (sp == 1) + { + /* check for more flag-like tokens */ + if (opt_ind >= argc || argv[opt_ind][0] != '-' || argv[opt_ind][1] == '\0') + { + return EOF; + } + else if (strcmp(argv[opt_ind], "--") == 0) + { + opt_ind++; + return EOF; + } + } + + if (sp == 1 && argv[opt_ind][0] == '-' && argv[opt_ind][1] == '-') + { + /* long command line option */ + const char *arg = &argv[opt_ind][2]; + int i; + + for (i = 0; l_opts && l_opts[i].name; i++) + { + size_t len = strlen(l_opts[i].name); + + if (strncmp(arg, l_opts[i].name, len) == 0) + { + /* we've found a matching long command line flag */ + opt_opt = l_opts[i].shortval; + + if (l_opts[i].has_arg != no_arg) + { + if (arg[len] == '=') + { + opt_arg = &arg[len + 1]; + } + else if (opt_ind < (argc - 1) && argv[opt_ind + 1][0] != '-') + { + opt_arg = argv[++opt_ind]; + } + else if (l_opts[i].has_arg == require_arg) + { + if (opt_err) + fprintf(stderr, "%s: option required for \"--%s\" flag\n", argv[0], arg); + + opt_opt = '?'; + } + } + else + { + if (arg[len] == '=') + { + if (opt_err) + fprintf(stderr, "%s: no option required for \"%s\" flag\n", argv[0], arg); + + opt_opt = '?'; + } + + opt_arg = NULL; + } + + break; + } + } + + if (l_opts[i].name == NULL) + { + /* exhausted all of the l_opts we have and still didn't match */ + if (opt_err) + fprintf(stderr, "%s: unknown option \"%s\"\n", argv[0], arg); + + opt_opt = '?'; + } + + opt_ind++; + sp = 1; + } + else + { + register char *cp; /* pointer into current token */ + + /* short command line option */ + opt_opt = argv[opt_ind][sp]; + + if (opt_opt == ':' || (cp = strchr(opts, opt_opt)) == 0) + { + + if (opt_err) + fprintf(stderr, "%s: unknown option \"%c\"\n", argv[0], opt_opt); + /* if no chars left in this token, move to next token */ + if (argv[opt_ind][++sp] == '\0') + { + opt_ind++; + sp = 1; + } + + return '?'; + } + + if (*++cp == ':') + { + + /* if a value is expected, get it */ + if (argv[opt_ind][sp + 1] != '\0') + { + /* flag value is rest of current token */ + opt_arg = &argv[opt_ind++][sp + 1]; + } + else if (++opt_ind >= argc) + { + if (opt_err) + { + fprintf(stderr, "%s: value expected for option \"%c\"\n", argv[0], opt_opt); + } + opt_opt = '?'; + } + else + { + /* flag value is next token */ + opt_arg = argv[opt_ind++]; + } + + sp = 1; + } + else + { + /* set up to look at next char in token, next time */ + if (argv[opt_ind][++sp] == '\0') + { + /* no more in current token, so setup next token */ + opt_ind++; + sp = 1; + } + + opt_arg = NULL; + } + } + + /* return the current flag character found */ + return opt_opt; +} + +/* Assigns functions according to the parsed result */ +static struct arg_handler* function_assign(int argc, const char *argv[]) +{ + struct arg_handler *hand = NULL; + + int i, option; + + /* this will be plenty big enough to hold the info */ + hand = (arg_handler*)calloc((size_t)argc, sizeof(struct arg_handler)); + + /* set options according to the command line */ + while ((option = get_option(argc, argv, s_opts, l_opts)) != EOF) + { + switch ((char)option) + { + case 'h': // Print help page + print_help(); + exit(1); + case 'A': // Print file attributes + display_all = 0; + + for (i = 0; i < argc; i++) + { + if (!hand[i].func) + { + hand[i].func = print_file_attributes; + hand[i].obj = NULL; // inserting garabage value that we won't use. (For function interface compatibility) + break; + } + } + break; + case 'a': // Print step attributes & values for time step n + display_all = 0; + + for (i = 0; i < argc; i++) + { + if (!hand[i].func) + { + hand[i].func = print_step_attributes; + hand[i].obj = strdup(opt_arg); + break; + } + } + break; + case 'd': // Print data sets names & values for time step n + display_all = 0; + + for (i = 0; i < argc; i++) + { + if (!hand[i].func) + { + hand[i].func = print_dataset; + hand[i].obj = strdup(opt_arg); + break; + } + } + break; + case 'n': // Print number of steps + display_all = 0; + + for (i = 0; i < argc; i++) + { + if (!hand[i].func) + { + hand[i].func = print_nstep; + hand[i].obj = NULL; // inserting garabage value that we won't use. (For function interface compatibility) + break; + } + } + break; + case 'H': // Print shorter version without the values + print_header = true; + break; + default: + print_help(); + exit(1); + } + } + return hand; +} + +/* For printing help page */ +static void print_help() +{ + fflush(stdout); + fprintf(stdout, "\nusage: h5pAttrib [OPTIONS] file\n"); + fprintf(stdout, "\n"); + fprintf(stdout, " OPTIONS\n"); + fprintf(stdout, " -h, --help Print help page\n"); + fprintf(stdout, " -n, --nstep Print number of steps\n"); + fprintf(stdout, " -A, --fileA Print file attributes\n"); + fprintf(stdout, " -a n, --stepA n Print step attributes & values for time step n\n"); + fprintf(stdout, " -d n, --dataset n Print data sets names & values for time step n\n"); + fprintf(stdout, " -H, --header Print shorter version without the values\n"); + fprintf(stdout, "\n"); + fprintf(stdout, " Examples:\n"); + fprintf(stdout, "\n"); + fprintf(stdout, " 1) Show file attribute names & values of sample.h5part\n"); + fprintf(stdout, "\n"); + fprintf(stdout, " h5pAttrib -A sample.h5part\n"); + fprintf(stdout, "\t\t\tOR\n"); + fprintf(stdout, " h5pAttrib --fileA sample.h5part\n"); + fprintf(stdout, "\n"); + fprintf(stdout, " 2) Show step attribute names for time step 5 of sample.h5part\n"); + fprintf(stdout, "\n"); + fprintf(stdout, " h5pAttrib -a 5 -H sample.h5part\n"); + fprintf(stdout, "\t\t\tOR\n"); + fprintf(stdout, " h5pAttrib --stepA 5 -H sample.h5part\n"); + fprintf(stdout, "\n"); +} + +/* For priting everything (default option when no flags provided.) */ +static void print_all(H5PartFile* file) +{ + int nt; + + char file_attrib[MAX_LEN]; + size_t maxlen; + hid_t type; + int num_elem; + int num_attrib; + char step_attrib[MAX_LEN]; + int i, j, k; + long count; + void* value = NULL; + int timestep_ctr; + + char data_name[MAX_LEN]; + int num_dataset; + long long nparticles; + + fprintf(stdout, "\n++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n"); + fprintf(stdout, "\n"); + nt=H5PartGetNumSteps(file); + fprintf(stdout, "There are total %d number of timesteps.\n",nt); + + fprintf(stdout, "\nDump result for \"%s\"...\n\n", global_fname); + fprintf(stdout, "FILE_ATTRIBUTES:\n"); + + + if(print_header) + { + num_attrib = H5PartGetNumFileAttribs(file); + + for(i=0; i +#include +#include +#include +#include +#include "H5Part.hh" + +#define MAX_LEN 100 + +/* Function headers */ +int get_option(int argc, const char **argv, const char *opts, const struct long_options *l_opts); +static void print_help(); +static void variable_assign(int argc, const char *argv[]); + +/* Global variables */ +static char* var_1 = NULL; +static char* var_2 = NULL; +static char* input_name = NULL; +static char* output_name = NULL; +static char* timestep = NULL; +static char* start = NULL; +static char* npoints = NULL; +static int print_all = 0; + +/* `get_option' variables */ +int opt_err = 1; /*get_option prints errors if this is on */ +int opt_ind = 1; /*token pointer */ +const char *opt_arg = NULL; /*flag argument (or value) */ + +/* indication whether the flag (option) requires an argument or not */ +enum { + no_arg = 0, /* doesn't take an argument */ + require_arg, /* requires an argument */ +}; + +/* struct for flags (options) */ +typedef struct long_options +{ + const char *name; /* name of the long option */ + int has_arg; /* whether we should look for an arg */ + char shortval; /* the shortname equivalent of long arg + * this gets returned from get_option */ +} long_options; + +/* List of options in single characters */ +static const char *s_opts = "h1:2:i:o:n:t:s:"; + +/* List of options in full words */ +static struct long_options l_opts[] = +{ + { "help", no_arg, 'h' }, // Print help page + { "1var", require_arg, '1' }, // Takes first variable parameter + { "2var", require_arg, '2' }, // Takes second variable parameter + { "input", require_arg, 'i' }, // Takes input file name + { "output", require_arg, 'o' }, // Takes output file name (without this flag, the program will print to stdout) + { "number", require_arg, 'n' }, // Sets number of output points + { "start", require_arg, 's' }, // Sets the starting particle index + { "timestep", require_arg, 't' }, // Sets the timestep + { NULL, 0, '\0' } +}; + + +/************************************************************************************ +*********************************** FUNCTIONS ************************************* +*************************************************************************************/ + + +/* get_option is the parsing function that was majorly ported from h5dump utility */ +int get_option(int argc, const char **argv, const char *opts, const struct long_options *l_opts) +{ + static int sp = 1; /* character index in current token */ + int opt_opt = '?'; /* option character passed back to user */ + + if (sp == 1) + { + /* check for more flag-like tokens */ + if (opt_ind >= argc || argv[opt_ind][0] != '-' || argv[opt_ind][1] == '\0') + { + return EOF; + } + else if (strcmp(argv[opt_ind], "--") == 0) + { + opt_ind++; + return EOF; + } + } + + if (sp == 1 && argv[opt_ind][0] == '-' && argv[opt_ind][1] == '-') + { + /* long command line option */ + const char *arg = &argv[opt_ind][2]; + int i; + + for (i = 0; l_opts && l_opts[i].name; i++) + { + size_t len = strlen(l_opts[i].name); + + if (strncmp(arg, l_opts[i].name, len) == 0) + { + /* we've found a matching long command line flag */ + opt_opt = l_opts[i].shortval; + + if (l_opts[i].has_arg != no_arg) + { + if (arg[len] == '=') + { + opt_arg = &arg[len + 1]; + } + else if (opt_ind < (argc - 1) && argv[opt_ind + 1][0] != '-') + { + opt_arg = argv[++opt_ind]; + } + else if (l_opts[i].has_arg == require_arg) + { + if (opt_err) + fprintf(stderr, "%s: option required for \"--%s\" flag\n", argv[0], arg); + + opt_opt = '?'; + } + } + else + { + if (arg[len] == '=') + { + if (opt_err) + fprintf(stderr, "%s: no option required for \"%s\" flag\n", argv[0], arg); + + opt_opt = '?'; + } + + opt_arg = NULL; + } + + break; + } + } + + if (l_opts[i].name == NULL) + { + /* exhausted all of the l_opts we have and still didn't match */ + if (opt_err) + fprintf(stderr, "%s: unknown option \"%s\"\n", argv[0], arg); + + opt_opt = '?'; + } + + opt_ind++; + sp = 1; + } + else + { + register char *cp; /* pointer into current token */ + + /* short command line option */ + opt_opt = argv[opt_ind][sp]; + + if (opt_opt == ':' || (cp = strchr(opts, opt_opt)) == 0) + { + + if (opt_err) + fprintf(stderr, "%s: unknown option \"%c\"\n", argv[0], opt_opt); + /* if no chars left in this token, move to next token */ + if (argv[opt_ind][++sp] == '\0') + { + opt_ind++; + sp = 1; + } + + return '?'; + } + + if (*++cp == ':') + { + + /* if a value is expected, get it */ + if (argv[opt_ind][sp + 1] != '\0') + { + /* flag value is rest of current token */ + opt_arg = &argv[opt_ind++][sp + 1]; + } + else if (++opt_ind >= argc) + { + if (opt_err) + { + fprintf(stderr, "%s: value expected for option \"%c\"\n", argv[0], opt_opt); + } + opt_opt = '?'; + } + else + { + /* flag value is next token */ + opt_arg = argv[opt_ind++]; + } + + sp = 1; + } + else + { + /* set up to look at next char in token, next time */ + if (argv[opt_ind][++sp] == '\0') + { + /* no more in current token, so setup next token */ + opt_ind++; + sp = 1; + } + + opt_arg = NULL; + } + } + + /* return the current flag character found */ + return opt_opt; +} + +/* Assigns functions according to the parsed result */ +static void variable_assign(int argc, const char *argv[]) +{ + int option; + + /* set options according to the command line */ + while ((option = get_option(argc, argv, s_opts, l_opts)) != EOF) + { + switch ((char)option) + { + case 'h': // Print help page + print_help(); + exit(1); + case '1': // Print file attributes + var_1 = strdup(opt_arg); + break; + case '2': // Print step attributes & values for time step n + var_2 = strdup(opt_arg); + break; + case 'i': // Print data sets names & values for time step n + input_name = strdup(opt_arg); + break; + case 'o': // Print number of steps + output_name = strdup(opt_arg); + break; + case 'n': // Print shorter version without the values + npoints = strdup(opt_arg); + break; + case 's': // Print shorter version without the values + start = strdup(opt_arg); + break; + case 't': // Print shorter version without the values + timestep = strdup(opt_arg); + if(atoi(timestep)==-1) + { + print_all = 1; + } + break; + default: + print_help(); + exit(1); + } + } +} + +/* For printing help page */ +static void print_help() +{ + fflush(stdout); + fprintf(stdout, "\nusage: h5pToGNUplot -t TIMESTEP -1 VARIABLE#1 -2 VARIABLE#2 -i INPUTFILE [OPTIONAL_FLAGS]\n"); + fprintf(stdout, "\n"); + fprintf(stdout, " FLAGS\n"); + fprintf(stdout, " -h, --help Print help page\n"); + fprintf(stdout, " -1 par, --1var par (REQUIRED) Takes first variable parameter to \"par\"\n"); + fprintf(stdout, " -2 par, --2var par (REQUIRED) Takes second variable parameter to \"par\"\n"); + fprintf(stdout, " -i file, --input file (REQUIRED) Takes input file name to \"file\"\n"); + fprintf(stdout, " -t step, --timestep step (REQUIRED) Sets the timestep to \"step\" (Value -1 will result in dumping values of all timesteps.)\n"); + fprintf(stdout, " -o file, --output file (OPTIONAL) Takes output file name to \"file\" (without this flag, the program will print to stdout)\n"); + fprintf(stdout, " -n num, --number num (OPTIONAL) Sets number of output points to \"num\"\n"); + fprintf(stdout, " -s idx, --start idx (OPTIONAL) Sets the starting particle index to \"idx\"\n"); + fprintf(stdout, "\n"); + fprintf(stdout, " Examples:\n"); + fprintf(stdout, "\n"); + fprintf(stdout, " 1) Create GNU plot file output.txt from sample.h5part by ploting x vs px for timestep 54\n"); + fprintf(stdout, "\n"); + fprintf(stdout, " h5pToGNUplot -t 54 -1 x -2 px -i sample.h5part -o output.txt\n"); + fprintf(stdout, "\n"); + fprintf(stdout, " 2) Create GNU plot file output.txt from sample.h5part by ploting x vs px for timestep 54 \n using 1200 points from particle index 76\n"); + fprintf(stdout, "\n"); + fprintf(stdout, " h5pToGNUplot -t 54 -1 x -2 px -i sample.h5part -o output.txt -s 76 -n 1200\n"); + fprintf(stdout, "\n"); +} + +int main(int argc, const char *argv[]) +{ + /* Numerous variables */ + H5PartFile *h5file = NULL; + char data_name[MAX_LEN]; + int i, j, start_indx = 0; + hid_t type; + hid_t type_1; + hid_t type_2; + int num_dataset; + long long nparticles; + int stop = 0; + void* value_1 = NULL; + void* value_2 = NULL; + FILE * outFile; + int ntime_step = 0; + + variable_assign(argc, argv); + + if(input_name == NULL) + { + fprintf(stdout, "missing file name\n"); + print_help(); + exit(1); + } + + if(var_1 == NULL || var_2 == NULL || timestep == NULL) + { + fprintf(stdout, "missing required parameters\n"); + print_help(); + exit(1); + } + + h5file = H5PartOpenFile(input_name, H5PART_READ); + + if(!H5PartFileIsValid(h5file)) + { + fprintf(stdout, "unable to open file %s\n", input_name); + print_help(); + exit(1); + } + + j = atoi(timestep); + ntime_step = j+1; + + if(print_all) + { + j=0; + ntime_step = H5PartGetNumSteps(h5file); + } + + for (; j nparticles) + { + stop = nparticles; + } + + + if(output_name != NULL) + { + outFile = fopen (output_name,"w"); + + for(i=start_indx; i nparticle: + stop = nparticle + +if options.output_file != None: + outFile = open(options.output_file,"w") + + for x in range(start_indx, stop): + if type_1 == 201326626: # H5Part.H5T_NATIVE_INT64: + outFile.write("%ld" % value_1[x]) + elif type_1 == 201326635: # H5Part.H5T_NATIVE_DOUBLE: + outFile.write("%lf" % value_1[x]) + + if type_2 == 201326626: # H5Part.H5T_NATIVE_INT64: + outFile.write("\t%ld" % value_2[x]) + outFile.write("\n") + elif type_2 == 201326635: # H5Part.H5T_NATIVE_DOUBLE: + outFile.write("\t%lf" % value_2[x]) + outFile.write("\n") + + outFile.write("\n") + outFile.close() + +else: + for y in range(start_indx, stop): + if type_1 == 201326626: # H5Part.H5T_NATIVE_INT64: + print "%ld" % value_1[y], + elif type_1 == 201326635: # H5Part.H5T_NATIVE_DOUBLE: + print "%lf" % value_1[y], + + if type_2 == 201326626: # H5Part.H5T_NATIVE_INT64: + print "\t%ld" % value_2[y] + elif type_2 == 201326635: # H5Part.H5T_NATIVE_DOUBLE: + print "\t%lf" % value_2[y] + + print "\n" + + +H5Part.H5PartCloseFile(h5file) + +# if __name__ == "__main__": +# print "I'M RUNNING AS A MAIN PROGRAM!!!" diff --git a/visit_plugins/databases/H5Part/.depend b/visit_plugins/databases/H5Part/.depend new file mode 100644 index 0000000..adaf743 --- /dev/null +++ b/visit_plugins/databases/H5Part/.depend @@ -0,0 +1,626 @@ +h5partPluginInfo.o: h5partPluginInfo.C h5partPluginInfo.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/DatabasePluginInfo.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/plugin_exports.h \ + /usr/include/stdio.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/gnu/stubs.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/wordsize.h \ + /usr/include/bits/typesizes.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h /usr/include/bits/wchar.h \ + /usr/include/gconv.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/c++/4.0.2/string \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++config.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/os_defines.h \ + /usr/include/c++/4.0.2/bits/stringfwd.h \ + /usr/include/c++/4.0.2/bits/char_traits.h \ + /usr/include/c++/4.0.2/cstring /usr/include/c++/4.0.2/cstddef \ + /usr/include/string.h /usr/include/xlocale.h \ + /usr/include/c++/4.0.2/bits/stl_algobase.h \ + /usr/include/c++/4.0.2/climits \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/limits.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ + /usr/include/c++/4.0.2/cstdlib /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/bits/sched.h \ + /usr/include/alloca.h /usr/include/c++/4.0.2/iosfwd \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++locale.h \ + /usr/include/c++/4.0.2/cstdio /usr/include/c++/4.0.2/clocale \ + /usr/include/locale.h /usr/include/bits/locale.h \ + /usr/include/langinfo.h /usr/include/nl_types.h /usr/include/iconv.h \ + /usr/include/libintl.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++io.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/gthr.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/gthr-default.h \ + /usr/include/pthread.h /usr/include/sched.h /usr/include/signal.h \ + /usr/include/bits/initspin.h /usr/include/bits/sigthread.h \ + /usr/include/unistd.h /usr/include/bits/posix_opt.h \ + /usr/include/bits/environments.h /usr/include/bits/confname.h \ + /usr/include/getopt.h /usr/include/c++/4.0.2/cctype \ + /usr/include/ctype.h /usr/include/c++/4.0.2/bits/postypes.h \ + /usr/include/c++/4.0.2/cwchar /usr/include/c++/4.0.2/ctime \ + /usr/include/stdint.h /usr/include/c++/4.0.2/bits/functexcept.h \ + /usr/include/c++/4.0.2/exception_defines.h \ + /usr/include/c++/4.0.2/bits/stl_pair.h \ + /usr/include/c++/4.0.2/bits/cpp_type_traits.h \ + /usr/include/c++/4.0.2/bits/stl_iterator_base_types.h \ + /usr/include/c++/4.0.2/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/4.0.2/bits/concept_check.h \ + /usr/include/c++/4.0.2/bits/stl_iterator.h \ + /usr/include/c++/4.0.2/debug/debug.h /usr/include/c++/4.0.2/cassert \ + /usr/include/assert.h /usr/include/c++/4.0.2/memory \ + /usr/include/c++/4.0.2/bits/allocator.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++allocator.h \ + /usr/include/c++/4.0.2/ext/new_allocator.h /usr/include/c++/4.0.2/new \ + /usr/include/c++/4.0.2/exception \ + /usr/include/c++/4.0.2/bits/stl_construct.h \ + /usr/include/c++/4.0.2/bits/stl_uninitialized.h \ + /usr/include/c++/4.0.2/bits/stl_raw_storage_iter.h \ + /usr/include/c++/4.0.2/limits \ + /usr/include/c++/4.0.2/bits/stl_function.h \ + /usr/include/c++/4.0.2/bits/basic_string.h \ + /usr/include/c++/4.0.2/bits/atomicity.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/atomic_word.h \ + /usr/include/c++/4.0.2/algorithm /usr/include/c++/4.0.2/bits/stl_algo.h \ + /usr/include/c++/4.0.2/bits/stl_heap.h \ + /usr/include/c++/4.0.2/bits/stl_tempbuf.h \ + /usr/include/c++/4.0.2/bits/basic_string.tcc \ + /usr/include/c++/4.0.2/vector /usr/include/c++/4.0.2/bits/stl_vector.h \ + /usr/include/c++/4.0.2/bits/stl_bvector.h \ + /usr/include/c++/4.0.2/bits/vector.tcc \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/database_plugin_exports.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit-config.h +h5partCommonPluginInfo.o: h5partCommonPluginInfo.C h5partPluginInfo.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/DatabasePluginInfo.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/plugin_exports.h \ + /usr/include/stdio.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/gnu/stubs.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/wordsize.h \ + /usr/include/bits/typesizes.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h /usr/include/bits/wchar.h \ + /usr/include/gconv.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/c++/4.0.2/string \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++config.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/os_defines.h \ + /usr/include/c++/4.0.2/bits/stringfwd.h \ + /usr/include/c++/4.0.2/bits/char_traits.h \ + /usr/include/c++/4.0.2/cstring /usr/include/c++/4.0.2/cstddef \ + /usr/include/string.h /usr/include/xlocale.h \ + /usr/include/c++/4.0.2/bits/stl_algobase.h \ + /usr/include/c++/4.0.2/climits \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/limits.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ + /usr/include/c++/4.0.2/cstdlib /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/bits/sched.h \ + /usr/include/alloca.h /usr/include/c++/4.0.2/iosfwd \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++locale.h \ + /usr/include/c++/4.0.2/cstdio /usr/include/c++/4.0.2/clocale \ + /usr/include/locale.h /usr/include/bits/locale.h \ + /usr/include/langinfo.h /usr/include/nl_types.h /usr/include/iconv.h \ + /usr/include/libintl.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++io.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/gthr.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/gthr-default.h \ + /usr/include/pthread.h /usr/include/sched.h /usr/include/signal.h \ + /usr/include/bits/initspin.h /usr/include/bits/sigthread.h \ + /usr/include/unistd.h /usr/include/bits/posix_opt.h \ + /usr/include/bits/environments.h /usr/include/bits/confname.h \ + /usr/include/getopt.h /usr/include/c++/4.0.2/cctype \ + /usr/include/ctype.h /usr/include/c++/4.0.2/bits/postypes.h \ + /usr/include/c++/4.0.2/cwchar /usr/include/c++/4.0.2/ctime \ + /usr/include/stdint.h /usr/include/c++/4.0.2/bits/functexcept.h \ + /usr/include/c++/4.0.2/exception_defines.h \ + /usr/include/c++/4.0.2/bits/stl_pair.h \ + /usr/include/c++/4.0.2/bits/cpp_type_traits.h \ + /usr/include/c++/4.0.2/bits/stl_iterator_base_types.h \ + /usr/include/c++/4.0.2/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/4.0.2/bits/concept_check.h \ + /usr/include/c++/4.0.2/bits/stl_iterator.h \ + /usr/include/c++/4.0.2/debug/debug.h /usr/include/c++/4.0.2/cassert \ + /usr/include/assert.h /usr/include/c++/4.0.2/memory \ + /usr/include/c++/4.0.2/bits/allocator.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++allocator.h \ + /usr/include/c++/4.0.2/ext/new_allocator.h /usr/include/c++/4.0.2/new \ + /usr/include/c++/4.0.2/exception \ + /usr/include/c++/4.0.2/bits/stl_construct.h \ + /usr/include/c++/4.0.2/bits/stl_uninitialized.h \ + /usr/include/c++/4.0.2/bits/stl_raw_storage_iter.h \ + /usr/include/c++/4.0.2/limits \ + /usr/include/c++/4.0.2/bits/stl_function.h \ + /usr/include/c++/4.0.2/bits/basic_string.h \ + /usr/include/c++/4.0.2/bits/atomicity.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/atomic_word.h \ + /usr/include/c++/4.0.2/algorithm /usr/include/c++/4.0.2/bits/stl_algo.h \ + /usr/include/c++/4.0.2/bits/stl_heap.h \ + /usr/include/c++/4.0.2/bits/stl_tempbuf.h \ + /usr/include/c++/4.0.2/bits/basic_string.tcc \ + /usr/include/c++/4.0.2/vector /usr/include/c++/4.0.2/bits/stl_vector.h \ + /usr/include/c++/4.0.2/bits/stl_bvector.h \ + /usr/include/c++/4.0.2/bits/vector.tcc \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/database_plugin_exports.h \ + avth5partFileFormat.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtMTSDFileFormat.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/database_exports.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtFileFormat.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/array_ref_ptr.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/visitstream.h \ + /usr/include/c++/4.0.2/iostream /usr/include/c++/4.0.2/ostream \ + /usr/include/c++/4.0.2/ios /usr/include/c++/4.0.2/bits/localefwd.h \ + /usr/include/c++/4.0.2/bits/ios_base.h \ + /usr/include/c++/4.0.2/bits/locale_classes.h \ + /usr/include/c++/4.0.2/streambuf \ + /usr/include/c++/4.0.2/bits/streambuf.tcc \ + /usr/include/c++/4.0.2/bits/basic_ios.h \ + /usr/include/c++/4.0.2/bits/streambuf_iterator.h \ + /usr/include/c++/4.0.2/bits/locale_facets.h \ + /usr/include/c++/4.0.2/cwctype /usr/include/wctype.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/ctype_base.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/ctype_inline.h \ + /usr/include/c++/4.0.2/bits/codecvt.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/time_members.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/messages_members.h \ + /usr/include/c++/4.0.2/bits/basic_ios.tcc \ + /usr/include/c++/4.0.2/bits/ostream.tcc /usr/include/c++/4.0.2/locale \ + /usr/include/c++/4.0.2/bits/locale_facets.tcc \ + /usr/include/c++/4.0.2/typeinfo /usr/include/c++/4.0.2/istream \ + /usr/include/c++/4.0.2/bits/istream.tcc /usr/include/c++/4.0.2/fstream \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/basic_file.h \ + /usr/include/c++/4.0.2/bits/fstream.tcc \ + /usr/include/c++/4.0.2/backward/strstream \ + /usr/include/c++/4.0.2/backward/backward_warning.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtDataSelection.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/pipeline_exports.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/ImproperUseException.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtexception_exports.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/PipelineException.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/VisItException.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/misc_exports.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/ref_ptr.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtTypes.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/dbatts_exports.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/void_ref_ptr.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/utility_exports.h \ + /d/visusers/cristina/H5Part/H5ecloud/H5Part.hh \ + /d/visusers/cristina/H5Part/H5ecloud/H5Part.h \ + /usr/local/hdf5/include/hdf5.h /usr/local/hdf5/include/H5public.h \ + /usr/local/hdf5/include/H5pubconf.h /usr/include/inttypes.h \ + /usr/local/hdf5/include/H5api_adpt.h \ + /usr/local/hdf5/include/H5Apublic.h /usr/local/hdf5/include/H5Ipublic.h \ + /usr/local/hdf5/include/H5ACpublic.h \ + /usr/local/hdf5/include/H5Bpublic.h /usr/local/hdf5/include/H5Dpublic.h \ + /usr/local/hdf5/include/H5Epublic.h /usr/local/hdf5/include/H5Fpublic.h \ + /usr/local/hdf5/include/H5FDpublic.h \ + /usr/local/hdf5/include/H5Gpublic.h /usr/local/hdf5/include/H5Opublic.h \ + /usr/local/hdf5/include/H5HGpublic.h \ + /usr/local/hdf5/include/H5HLpublic.h \ + /usr/local/hdf5/include/H5MMpublic.h \ + /usr/local/hdf5/include/H5Ppublic.h /usr/local/hdf5/include/H5Zpublic.h \ + /usr/local/hdf5/include/H5Rpublic.h /usr/local/hdf5/include/H5Spublic.h \ + /usr/local/hdf5/include/H5Tpublic.h /usr/local/hdf5/include/H5FDcore.h \ + /usr/local/hdf5/include/H5FDfamily.h /usr/local/hdf5/include/H5FDgass.h \ + /usr/local/hdf5/include/H5FDlog.h /usr/local/hdf5/include/H5FDmpi.h \ + /usr/local/hdf5/include/H5FDmpio.h \ + /usr/local/hdf5/include/H5FDmpiposix.h \ + /usr/local/hdf5/include/H5FDmulti.h /usr/local/hdf5/include/H5FDsec2.h \ + /usr/local/hdf5/include/H5FDsrb.h /usr/local/hdf5/include/H5FDstdio.h \ + /usr/local/hdf5/include/H5FDstream.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtMTSDFileFormatInterface.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtFileFormatInterface.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtGenericDatabase.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtDatasetDatabase.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtDatabase.h \ + /usr/include/c++/4.0.2/list /usr/include/c++/4.0.2/bits/stl_list.h \ + /usr/include/c++/4.0.2/bits/list.tcc \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtDataSpecification.h \ + /usr/include/c++/4.0.2/map /usr/include/c++/4.0.2/bits/stl_tree.h \ + /usr/include/c++/4.0.2/bits/stl_map.h \ + /usr/include/c++/4.0.2/bits/stl_multimap.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtSILRestriction.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtSIL.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtSILCollection.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtSILMatrix.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtSILSet.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtGhostData.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtDataset.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtCommonDataFunctions.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtDataRepresentation.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtDataObject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtDataObjectInformation.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtDataAttributes.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/VisWindowTypes.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtVector.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/math_exports.h \ + /usr/include/math.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/viswindow_exports.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtMatrix.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtDataValidity.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtPipelineSpecification.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtDataTree.h \ + /usr/include/c++/4.0.2/set /usr/include/c++/4.0.2/bits/stl_set.h \ + /usr/include/c++/4.0.2/bits/stl_multiset.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtIOInformation.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/vectortypes.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtMaterial.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtSpecies.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtVariableCache.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/MIR.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/mir_exports.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/MIROptions.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common/vtkSystemIncludes.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common/vtkWin32Header.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/vtkConfigure.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common/vtkIOStream.h \ + /usr/include/c++/4.0.2/iomanip /usr/include/c++/4.0.2/functional \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common/vtkIdType.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common/vtkOStreamWrapper.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common/vtkOStrStreamWrapper.h \ + /usr/include/c++/4.0.2/deque /usr/include/c++/4.0.2/bits/stl_deque.h \ + /usr/include/c++/4.0.2/bits/deque.tcc +h5partMDServerPluginInfo.o: h5partMDServerPluginInfo.C h5partPluginInfo.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/DatabasePluginInfo.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/plugin_exports.h \ + /usr/include/stdio.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/gnu/stubs.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/wordsize.h \ + /usr/include/bits/typesizes.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h /usr/include/bits/wchar.h \ + /usr/include/gconv.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/c++/4.0.2/string \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++config.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/os_defines.h \ + /usr/include/c++/4.0.2/bits/stringfwd.h \ + /usr/include/c++/4.0.2/bits/char_traits.h \ + /usr/include/c++/4.0.2/cstring /usr/include/c++/4.0.2/cstddef \ + /usr/include/string.h /usr/include/xlocale.h \ + /usr/include/c++/4.0.2/bits/stl_algobase.h \ + /usr/include/c++/4.0.2/climits \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/limits.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ + /usr/include/c++/4.0.2/cstdlib /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/bits/sched.h \ + /usr/include/alloca.h /usr/include/c++/4.0.2/iosfwd \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++locale.h \ + /usr/include/c++/4.0.2/cstdio /usr/include/c++/4.0.2/clocale \ + /usr/include/locale.h /usr/include/bits/locale.h \ + /usr/include/langinfo.h /usr/include/nl_types.h /usr/include/iconv.h \ + /usr/include/libintl.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++io.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/gthr.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/gthr-default.h \ + /usr/include/pthread.h /usr/include/sched.h /usr/include/signal.h \ + /usr/include/bits/initspin.h /usr/include/bits/sigthread.h \ + /usr/include/unistd.h /usr/include/bits/posix_opt.h \ + /usr/include/bits/environments.h /usr/include/bits/confname.h \ + /usr/include/getopt.h /usr/include/c++/4.0.2/cctype \ + /usr/include/ctype.h /usr/include/c++/4.0.2/bits/postypes.h \ + /usr/include/c++/4.0.2/cwchar /usr/include/c++/4.0.2/ctime \ + /usr/include/stdint.h /usr/include/c++/4.0.2/bits/functexcept.h \ + /usr/include/c++/4.0.2/exception_defines.h \ + /usr/include/c++/4.0.2/bits/stl_pair.h \ + /usr/include/c++/4.0.2/bits/cpp_type_traits.h \ + /usr/include/c++/4.0.2/bits/stl_iterator_base_types.h \ + /usr/include/c++/4.0.2/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/4.0.2/bits/concept_check.h \ + /usr/include/c++/4.0.2/bits/stl_iterator.h \ + /usr/include/c++/4.0.2/debug/debug.h /usr/include/c++/4.0.2/cassert \ + /usr/include/assert.h /usr/include/c++/4.0.2/memory \ + /usr/include/c++/4.0.2/bits/allocator.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++allocator.h \ + /usr/include/c++/4.0.2/ext/new_allocator.h /usr/include/c++/4.0.2/new \ + /usr/include/c++/4.0.2/exception \ + /usr/include/c++/4.0.2/bits/stl_construct.h \ + /usr/include/c++/4.0.2/bits/stl_uninitialized.h \ + /usr/include/c++/4.0.2/bits/stl_raw_storage_iter.h \ + /usr/include/c++/4.0.2/limits \ + /usr/include/c++/4.0.2/bits/stl_function.h \ + /usr/include/c++/4.0.2/bits/basic_string.h \ + /usr/include/c++/4.0.2/bits/atomicity.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/atomic_word.h \ + /usr/include/c++/4.0.2/algorithm /usr/include/c++/4.0.2/bits/stl_algo.h \ + /usr/include/c++/4.0.2/bits/stl_heap.h \ + /usr/include/c++/4.0.2/bits/stl_tempbuf.h \ + /usr/include/c++/4.0.2/bits/basic_string.tcc \ + /usr/include/c++/4.0.2/vector /usr/include/c++/4.0.2/bits/stl_vector.h \ + /usr/include/c++/4.0.2/bits/stl_bvector.h \ + /usr/include/c++/4.0.2/bits/vector.tcc \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/database_plugin_exports.h +avth5partFileFormat.o: avth5partFileFormat.C avth5partFileFormat.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtMTSDFileFormat.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/database_exports.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtFileFormat.h \ + /usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/gnu/stubs.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/stddef.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h /usr/include/xlocale.h \ + /usr/include/sys/types.h /usr/include/bits/types.h \ + /usr/include/bits/wordsize.h /usr/include/bits/typesizes.h \ + /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/bits/sched.h \ + /usr/include/alloca.h /usr/include/c++/4.0.2/string \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++config.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/os_defines.h \ + /usr/include/c++/4.0.2/bits/stringfwd.h \ + /usr/include/c++/4.0.2/bits/char_traits.h \ + /usr/include/c++/4.0.2/cstring /usr/include/c++/4.0.2/cstddef \ + /usr/include/string.h /usr/include/c++/4.0.2/bits/stl_algobase.h \ + /usr/include/c++/4.0.2/climits \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/limits.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ + /usr/include/bits/stdio_lim.h /usr/include/c++/4.0.2/cstdlib \ + /usr/include/c++/4.0.2/iosfwd \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++locale.h \ + /usr/include/c++/4.0.2/cstdio /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h /usr/include/bits/wchar.h \ + /usr/include/gconv.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/stdarg.h \ + /usr/include/bits/sys_errlist.h /usr/include/bits/stdio.h \ + /usr/include/c++/4.0.2/clocale /usr/include/locale.h \ + /usr/include/bits/locale.h /usr/include/langinfo.h \ + /usr/include/nl_types.h /usr/include/iconv.h /usr/include/libintl.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++io.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/gthr.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/gthr-default.h \ + /usr/include/pthread.h /usr/include/sched.h /usr/include/signal.h \ + /usr/include/bits/initspin.h /usr/include/bits/sigthread.h \ + /usr/include/unistd.h /usr/include/bits/posix_opt.h \ + /usr/include/bits/environments.h /usr/include/bits/confname.h \ + /usr/include/getopt.h /usr/include/c++/4.0.2/cctype \ + /usr/include/ctype.h /usr/include/c++/4.0.2/bits/postypes.h \ + /usr/include/c++/4.0.2/cwchar /usr/include/c++/4.0.2/ctime \ + /usr/include/stdint.h /usr/include/c++/4.0.2/bits/functexcept.h \ + /usr/include/c++/4.0.2/exception_defines.h \ + /usr/include/c++/4.0.2/bits/stl_pair.h \ + /usr/include/c++/4.0.2/bits/cpp_type_traits.h \ + /usr/include/c++/4.0.2/bits/stl_iterator_base_types.h \ + /usr/include/c++/4.0.2/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/4.0.2/bits/concept_check.h \ + /usr/include/c++/4.0.2/bits/stl_iterator.h \ + /usr/include/c++/4.0.2/debug/debug.h /usr/include/c++/4.0.2/cassert \ + /usr/include/assert.h /usr/include/c++/4.0.2/memory \ + /usr/include/c++/4.0.2/bits/allocator.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++allocator.h \ + /usr/include/c++/4.0.2/ext/new_allocator.h /usr/include/c++/4.0.2/new \ + /usr/include/c++/4.0.2/exception \ + /usr/include/c++/4.0.2/bits/stl_construct.h \ + /usr/include/c++/4.0.2/bits/stl_uninitialized.h \ + /usr/include/c++/4.0.2/bits/stl_raw_storage_iter.h \ + /usr/include/c++/4.0.2/limits \ + /usr/include/c++/4.0.2/bits/stl_function.h \ + /usr/include/c++/4.0.2/bits/basic_string.h \ + /usr/include/c++/4.0.2/bits/atomicity.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/atomic_word.h \ + /usr/include/c++/4.0.2/algorithm /usr/include/c++/4.0.2/bits/stl_algo.h \ + /usr/include/c++/4.0.2/bits/stl_heap.h \ + /usr/include/c++/4.0.2/bits/stl_tempbuf.h \ + /usr/include/c++/4.0.2/bits/basic_string.tcc \ + /usr/include/c++/4.0.2/vector /usr/include/c++/4.0.2/bits/stl_vector.h \ + /usr/include/c++/4.0.2/bits/stl_bvector.h \ + /usr/include/c++/4.0.2/bits/vector.tcc \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/array_ref_ptr.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/visitstream.h \ + /usr/include/c++/4.0.2/iostream /usr/include/c++/4.0.2/ostream \ + /usr/include/c++/4.0.2/ios /usr/include/c++/4.0.2/bits/localefwd.h \ + /usr/include/c++/4.0.2/bits/ios_base.h \ + /usr/include/c++/4.0.2/bits/locale_classes.h \ + /usr/include/c++/4.0.2/streambuf \ + /usr/include/c++/4.0.2/bits/streambuf.tcc \ + /usr/include/c++/4.0.2/bits/basic_ios.h \ + /usr/include/c++/4.0.2/bits/streambuf_iterator.h \ + /usr/include/c++/4.0.2/bits/locale_facets.h \ + /usr/include/c++/4.0.2/cwctype /usr/include/wctype.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/ctype_base.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/ctype_inline.h \ + /usr/include/c++/4.0.2/bits/codecvt.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/time_members.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/messages_members.h \ + /usr/include/c++/4.0.2/bits/basic_ios.tcc \ + /usr/include/c++/4.0.2/bits/ostream.tcc /usr/include/c++/4.0.2/locale \ + /usr/include/c++/4.0.2/bits/locale_facets.tcc \ + /usr/include/c++/4.0.2/typeinfo /usr/include/c++/4.0.2/istream \ + /usr/include/c++/4.0.2/bits/istream.tcc /usr/include/c++/4.0.2/fstream \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/basic_file.h \ + /usr/include/c++/4.0.2/bits/fstream.tcc \ + /usr/include/c++/4.0.2/backward/strstream \ + /usr/include/c++/4.0.2/backward/backward_warning.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtDataSelection.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/pipeline_exports.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/ImproperUseException.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtexception_exports.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/PipelineException.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/VisItException.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/misc_exports.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/ref_ptr.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtTypes.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/dbatts_exports.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/void_ref_ptr.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/utility_exports.h \ + /d/visusers/cristina/H5Part/H5ecloud/H5Part.hh \ + /d/visusers/cristina/H5Part/H5ecloud/H5Part.h \ + /usr/local/hdf5/include/hdf5.h /usr/local/hdf5/include/H5public.h \ + /usr/local/hdf5/include/H5pubconf.h /usr/include/inttypes.h \ + /usr/local/hdf5/include/H5api_adpt.h \ + /usr/local/hdf5/include/H5Apublic.h /usr/local/hdf5/include/H5Ipublic.h \ + /usr/local/hdf5/include/H5ACpublic.h \ + /usr/local/hdf5/include/H5Bpublic.h /usr/local/hdf5/include/H5Dpublic.h \ + /usr/local/hdf5/include/H5Epublic.h /usr/local/hdf5/include/H5Fpublic.h \ + /usr/local/hdf5/include/H5FDpublic.h \ + /usr/local/hdf5/include/H5Gpublic.h /usr/local/hdf5/include/H5Opublic.h \ + /usr/local/hdf5/include/H5HGpublic.h \ + /usr/local/hdf5/include/H5HLpublic.h \ + /usr/local/hdf5/include/H5MMpublic.h \ + /usr/local/hdf5/include/H5Ppublic.h /usr/local/hdf5/include/H5Zpublic.h \ + /usr/local/hdf5/include/H5Rpublic.h /usr/local/hdf5/include/H5Spublic.h \ + /usr/local/hdf5/include/H5Tpublic.h /usr/local/hdf5/include/H5FDcore.h \ + /usr/local/hdf5/include/H5FDfamily.h /usr/local/hdf5/include/H5FDgass.h \ + /usr/local/hdf5/include/H5FDlog.h /usr/local/hdf5/include/H5FDmpi.h \ + /usr/local/hdf5/include/H5FDmpio.h \ + /usr/local/hdf5/include/H5FDmpiposix.h \ + /usr/local/hdf5/include/H5FDmulti.h /usr/local/hdf5/include/H5FDsec2.h \ + /usr/local/hdf5/include/H5FDsrb.h /usr/local/hdf5/include/H5FDstdio.h \ + /usr/local/hdf5/include/H5FDstream.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common/vtkFloatArray.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common/vtkDataArray.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common/vtkObject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common/vtkObjectBase.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common/vtkIndent.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common/vtkSystemIncludes.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common/vtkWin32Header.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/vtkConfigure.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common/vtkIOStream.h \ + /usr/include/c++/4.0.2/iomanip /usr/include/c++/4.0.2/functional \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common/vtkIdType.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common/vtkOStreamWrapper.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common/vtkOStrStreamWrapper.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common/vtkSetGet.h \ + /usr/include/math.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common/vtkTimeStamp.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common/vtkRectilinearGrid.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common/vtkDataSet.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common/vtkDataObject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common/vtkStructuredData.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common/vtkStructuredGrid.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common/vtkPointSet.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common/vtkPoints.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common/vtkUnsignedCharArray.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common/vtkUnstructuredGrid.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtDatabaseMetaData.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/vectortypes.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/AttributeSubject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/state_exports.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/AttributeGroup.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/Subject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/ExpressionList.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/Expression.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/InvalidVariableException.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/DatabaseException.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/InvalidFilesException.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/BadIndexException.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common/vtkCellType.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common/vtkPolyData.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common/vtkCellTypes.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common/vtkIntArray.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common/vtkCellType.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common/vtkCellLinks.h +h5partEnginePluginInfo.o: h5partEnginePluginInfo.C h5partPluginInfo.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/DatabasePluginInfo.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/plugin_exports.h \ + /usr/include/stdio.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/gnu/stubs.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/wordsize.h \ + /usr/include/bits/typesizes.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h /usr/include/bits/wchar.h \ + /usr/include/gconv.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h /usr/include/c++/4.0.2/string \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++config.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/os_defines.h \ + /usr/include/c++/4.0.2/bits/stringfwd.h \ + /usr/include/c++/4.0.2/bits/char_traits.h \ + /usr/include/c++/4.0.2/cstring /usr/include/c++/4.0.2/cstddef \ + /usr/include/string.h /usr/include/xlocale.h \ + /usr/include/c++/4.0.2/bits/stl_algobase.h \ + /usr/include/c++/4.0.2/climits \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/limits.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ + /usr/include/c++/4.0.2/cstdlib /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/bits/sched.h \ + /usr/include/alloca.h /usr/include/c++/4.0.2/iosfwd \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++locale.h \ + /usr/include/c++/4.0.2/cstdio /usr/include/c++/4.0.2/clocale \ + /usr/include/locale.h /usr/include/bits/locale.h \ + /usr/include/langinfo.h /usr/include/nl_types.h /usr/include/iconv.h \ + /usr/include/libintl.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++io.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/gthr.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/gthr-default.h \ + /usr/include/pthread.h /usr/include/sched.h /usr/include/signal.h \ + /usr/include/bits/initspin.h /usr/include/bits/sigthread.h \ + /usr/include/unistd.h /usr/include/bits/posix_opt.h \ + /usr/include/bits/environments.h /usr/include/bits/confname.h \ + /usr/include/getopt.h /usr/include/c++/4.0.2/cctype \ + /usr/include/ctype.h /usr/include/c++/4.0.2/bits/postypes.h \ + /usr/include/c++/4.0.2/cwchar /usr/include/c++/4.0.2/ctime \ + /usr/include/stdint.h /usr/include/c++/4.0.2/bits/functexcept.h \ + /usr/include/c++/4.0.2/exception_defines.h \ + /usr/include/c++/4.0.2/bits/stl_pair.h \ + /usr/include/c++/4.0.2/bits/cpp_type_traits.h \ + /usr/include/c++/4.0.2/bits/stl_iterator_base_types.h \ + /usr/include/c++/4.0.2/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/4.0.2/bits/concept_check.h \ + /usr/include/c++/4.0.2/bits/stl_iterator.h \ + /usr/include/c++/4.0.2/debug/debug.h /usr/include/c++/4.0.2/cassert \ + /usr/include/assert.h /usr/include/c++/4.0.2/memory \ + /usr/include/c++/4.0.2/bits/allocator.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++allocator.h \ + /usr/include/c++/4.0.2/ext/new_allocator.h /usr/include/c++/4.0.2/new \ + /usr/include/c++/4.0.2/exception \ + /usr/include/c++/4.0.2/bits/stl_construct.h \ + /usr/include/c++/4.0.2/bits/stl_uninitialized.h \ + /usr/include/c++/4.0.2/bits/stl_raw_storage_iter.h \ + /usr/include/c++/4.0.2/limits \ + /usr/include/c++/4.0.2/bits/stl_function.h \ + /usr/include/c++/4.0.2/bits/basic_string.h \ + /usr/include/c++/4.0.2/bits/atomicity.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/atomic_word.h \ + /usr/include/c++/4.0.2/algorithm /usr/include/c++/4.0.2/bits/stl_algo.h \ + /usr/include/c++/4.0.2/bits/stl_heap.h \ + /usr/include/c++/4.0.2/bits/stl_tempbuf.h \ + /usr/include/c++/4.0.2/bits/basic_string.tcc \ + /usr/include/c++/4.0.2/vector /usr/include/c++/4.0.2/bits/stl_vector.h \ + /usr/include/c++/4.0.2/bits/stl_bvector.h \ + /usr/include/c++/4.0.2/bits/vector.tcc \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/database_plugin_exports.h diff --git a/visit_plugins/databases/H5Part/Makefile b/visit_plugins/databases/H5Part/Makefile new file mode 100644 index 0000000..b997d2a --- /dev/null +++ b/visit_plugins/databases/H5Part/Makefile @@ -0,0 +1,104 @@ +## +## Programs and options... +## +TOPDIR=/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/ +include $(TOPDIR)/include/make-variables +TOPDIR=/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/ +HOMEPLUGINS=/d/visusers/cristina/.visit/linux-x86_64/plugins + +## +## Libraries and includes... +## +VTK_INCLUDE= \ + -I$(TOPDIR)/include/vtk \ + -I$(TOPDIR)/include/vtk/Common \ + -I$(TOPDIR)/include/vtk/Filtering \ + -I$(TOPDIR)/include/vtk/Graphics \ + -I$(TOPDIR)/include/vtk/Hybrid \ + -I$(TOPDIR)/include/vtk/IO \ + -I$(TOPDIR)/include/vtk/Imaging \ + -I$(TOPDIR)/include/vtk/Rendering +MOC=$(TOPDIR)/bin/moc +CXXFLAGS=$(CXXFLAGSORIG) -I/usr/local/hdf5/include -I/d/visusers/cristina/H5Part/H5ecloud +CPPFLAGS=$(CPPFLAGSORIG) $(VTK_INCLUDE) -I. -I/usr/local/hdf5/include -I/d/visusers/cristina/H5Part/H5ecloud -I$(TOPDIR)/include -I$(TOPDIR)/include/visit +LDFLAGS=$(LDFLAGSORIG) -L$(HOMEPLUGINS)/databases + +## +## Files... +## +PLUGINDIR=databases +PLUGINNAME=h5partDatabase + +WIDGETS= +ISRC=h5partPluginInfo.C +COMMONSRC=h5partPluginInfo.C h5partCommonPluginInfo.C +MSRC=h5partMDServerPluginInfo.C avth5partFileFormat.C +ESRC=h5partEnginePluginInfo.C avth5partFileFormat.C + + +SRC=$(ISRC) $(COMMONSRC) $(MSRC) $(ESRC) + +SHLIB_FORCED=-L/d/visusers/cristina/H5Part/H5ecloud/ -lH5Part + +ELIBS_FOR_MACOSX_PREBINDING=$(BZIP2_LIBS) +MLIBS_FOR_MACOSX_PREBINDING=$(BZIP2_LIBS) +ILIBS= +MLIBS=-lpipeline_ser -ldatabase_ser -lmir_ser -lavtmath_ser -ldbatts -lavtexceptions -lstate -lcomm -lmisc -lexpr -lparser -lplugin -lutility -lvisit_vtk -llightweight_visit_vtk -L$(HOMEPLUGINS)/databases -lI$(PLUGINNAME) $(MLIBS_FOR_MACOSX_PREBINDING) $(VTK_LIBS) +ESERLIBS=-lpipeline_ser -ldatabase_ser -lmir_ser -lavtmath_ser -ldbatts -lavtexceptions -lstate -lcomm -lmisc -lexpr -lparser -lplugin -lutility -lvisit_vtk -llightweight_visit_vtk -L$(HOMEPLUGINS)/databases -lI$(PLUGINNAME) $(ELIBS_FOR_MACOSX_PREBINDING) $(VTK_LIBS) +EPARLIBS=-lpipeline_par -ldatabase_par -lmir_par -lavtmath_par -ldbatts -lavtexceptions -lstate -lcomm -lmisc -lexpr -lparser -lplugin -lutility -lvisit_vtk -llightweight_visit_vtk -L$(HOMEPLUGINS)/databases -lI$(PLUGINNAME) $(ELIBS_FOR_MACOSX_PREBINDING) $(VTK_LIBS) $(SHLIB_MPI_LIBS) + +IDSO=$(HOMEPLUGINS)/databases/libIh5partDatabase.so +MDSO=$(HOMEPLUGINS)/databases/libMh5partDatabase.so +ESERDSO=$(HOMEPLUGINS)/databases/libEh5partDatabase_ser.so +EPARDSO=$(HOMEPLUGINS)/databases/libEh5partDatabase_par.so + + +DISTRIB= + +## +## Derived objects +## +IOBJ=$(ISRC:.C=.o) +GOBJ=$(COMMONSRC:.C=.o) $(GSRC:.C=.o) +SOBJ=$(COMMONSRC:.C=.o) $(SSRC:.C=.o) +VOBJ=$(COMMONSRC:.C=.o) $(VSRC:.C=.o) +MOBJ=$(COMMONSRC:.C=.o) $(MSRC:.C=.o) $(MSPECIFICSRC:.C=_mds.o) +ESEROBJ=$(COMMONSRC:.C=.o) $(ESRC:.C=.o) +EPAROBJ=$(COMMONSRC:.C=.o) $(ESRC:.C=_par.o) + +MOCSRC = $(WIDGETS:.h=_moc.C) +MOCOBJ = $(MOCSRC:.C=.o) + +## +## Standard targets... +## +all: message $(IDSO) $(MDSERVERLIB) $(ENGINELIBSER) $(ENGINELIBPAR) + +clean: + $(RM) $(IOBJ) $(COMMONOBJ) + $(RM) $(GOBJ) $(SOBJ) $(VOBJ) $(MOBJ) $(ESEROBJ) $(EPAROBJ) + $(RM) $(MOCSRC) $(MOCOBJ) + $(RM) $(IDSO) $(GDSO) $(SDSO) $(VDSO) $(MDSO) $(ESERDSO) $(EPARDSO) + $(RM) $(JAVAOBJ) + +## +## Other targets... +## +message: + @echo + @echo "****************************************************************************" + @echo "*** Building h5part Database Plugin" + @echo "****************************************************************************" + +## +## moc +## +$(MOCSRC) or_no_widgets: $(WIDGETS) + @rm -f $@ + $(MOC) $(@:_moc.C=.h) > $@ + + +## +## Automatic dependency stuff +## +include $(TOPDIR)/include/make-targets diff --git a/visit_plugins/databases/H5Part/README.txt b/visit_plugins/databases/H5Part/README.txt new file mode 100644 index 0000000..5e48118 --- /dev/null +++ b/visit_plugins/databases/H5Part/README.txt @@ -0,0 +1,21 @@ +Reading H5Part data into VisIt: + +VisIt, http://www.llnl.gov/visit, is an open source point-and-click 3D scientific visualization application that supports most of the common visualization techniques on structured and unstructured grids. One of its advantages is that it employs a distributed and parallel architecture in order to handle extremely large data sets interactively. VisIt's rendering and data processing capabilities are split into viewer and engine components that may be distributed across multiple machines. + +This database plugins allows the user to read H5Part data into VisIt. To be recognized by VisIt the filename needs to have the extension ".h5part". This is important, otherwise VisIt will try to open the file with another reader and it will fail. + +Building the plugin: +You must first install VisIt in your machine to be able to link to its libraries. + +Modify the Makefile to reflect your installation. + +TOPDIR is the path to the VisIt Distribution installation. +HOMEPLUGINS is the path to your home dir .visit plugin directory. Create it if not there. +SHLIB_FORCED is the path to your H5Part. I made H5Part statically linked to the hdf5 library, if you don't, add your -L/hdf5librarypath -lhdf5 +Modify the location of the hdf5 include and the H5Part library. + + +If compiling a parallel version add -DPARALLEL_IO to the CXXFLAGS and CPPFLAGS. + + +Note: TOPDIR is defined twice because in make-variables it is defined by the VisIt developers to be in one of their machines. diff --git a/visit_plugins/databases/H5Part/avth5partFileFormat.C b/visit_plugins/databases/H5Part/avth5partFileFormat.C new file mode 100644 index 0000000..e2b6d9d --- /dev/null +++ b/visit_plugins/databases/H5Part/avth5partFileFormat.C @@ -0,0 +1,597 @@ +// ************************************************************************* // +// avth5partFileFormat.C // +// ************************************************************************* // + +#include + +#include +#include + +#include +#include +#include +#include + +#include + +#include + +#include +#include +#include +#include +#include + + +//h5part specific +#include +#include +#include + +#include +#include +#include + + + +#ifdef PARALLEL_IO +#include +#include +#endif + +using namespace std; + +// **************************************************************************** +// Method: avth5part constructor +// +// Programmer: cristina -- generated by xml2avt +// Creation: Mon Feb 27 13:47:07 PST 2006 +// +// **************************************************************************** + +avth5partFileFormat::avth5partFileFormat(const char *filename) + : avtMTMDFileFormat(filename) +{ + // INITIALIZE DATA MEMBERS + + + H5PartFile *file; + fname = filename; + + file = H5PartOpenFile(filename,H5PART_READ); + + if (!file) + EXCEPTION1(InvalidFilesException, filename); + + + int i, j; + int npoints, npointvars; + int nspace = 3; + + H5PartSetStep(file,0); + //points + npoints= (int) H5PartGetNumParticles(file); + if (npoints == 0) + EXCEPTION1(VisItException, "npoints is zero"); + points.resize(npoints*nspace); + cout << "constructor: npoints: " << npoints << "\n"; + + //point vars + npointvars= (int) H5PartGetNumDatasets(file); /* get number of datasets in timestep 0 */ + pointvars.resize(npointvars); + pointvarnames.resize(npointvars); + cout << "constructor: nvariables: " << npointvars << "\n"; + + char name[64]; + int status; + for (j=0; j < npointvars; j++){ + status = H5PartGetDatasetName(file,j, name,64); + if (status != 1){ + EXCEPTION1(VisItException, "could not read a variable name"); + } + pointvarnames[j] = name; + } + + H5PartCloseFile(file); +} + + +// **************************************************************************** +// Method: avtEMSTDFileFormat::GetNTimesteps +// +// Purpose: +// Tells the rest of the code how many timesteps there are in this file. +// +// Programmer: cristina -- generated by xml2avt +// Creation: Mon Feb 27 13:47:07 PST 2006 +// +// **************************************************************************** + +int +avth5partFileFormat::GetNTimesteps(void) +{ + int nt; + H5PartFile *file; + file = H5PartOpenFile(fname.c_str(),H5PART_READ); + H5PartSetStep(file,0); + nt=H5PartGetNumSteps(file); /* get number of steps in file */ + H5PartCloseFile(file); + return nt; +} + + +// **************************************************************************** +// Method: avth5partFileFormat::FreeUpResources +// +// Purpose: +// When VisIt is done focusing on a particular timestep, it asks that +// timestep to free up any resources (memory, file descriptors) that +// it has associated with it. This method is the mechanism for doing +// that. +// +// Programmer: cristina -- generated by xml2avt +// Creation: Mon Feb 27 13:47:07 PST 2006 +// +// **************************************************************************** + +void +avth5partFileFormat::FreeUpResources(void) +{ +} + + +// **************************************************************************** +// Method: avth5partFileFormat::PopulateDatabaseMetaData +// +// Purpose: +// This database meta-data object is like a table of contents for the +// file. By populating it, you are telling the rest of VisIt what +// information it can request from you. +// +// Programmer: cristina -- generated by xml2avt +// Creation: Mon Feb 27 13:47:07 PST 2006 +// +// **************************************************************************** + +void +avth5partFileFormat::PopulateDatabaseMetaData(avtDatabaseMetaData *md, int timeState) +{ + // + // CODE TO ADD A MESH + // + // string meshname = ... + // + // AVT_RECTILINEAR_MESH, AVT_CURVILINEAR_MESH, AVT_UNSTRUCTURED_MESH, + // AVT_POINT_MESH, AVT_SURFACE_MESH, AVT_UNKNOWN_MESH + // avtMeshType mt = AVT_RECTILINEAR_MESH; + // + // int nblocks = YOU_MUST_DECIDE; + // int block_origin = 0; + // int spatial_dimension = 2; + // int topological_dimension = 2; + // float *extents = NULL; + // + // Here's the call that tells the meta-data object that we have a mesh: + // + // AddMeshToMetaData(md, meshname, mt, extents, nblocks, block_origin, + // spatial_dimension, topological_dimension); + // + + // + // CODE TO ADD A SCALAR VARIABLE + // + // string mesh_for_this_var = meshname; // ??? -- could be multiple meshes + // string varname = ... + // + // AVT_NODECENT, AVT_ZONECENT, AVT_UNKNOWN_CENT + // avtCentering cent = AVT_NODECENT; + // + // + // Here's the call that tells the meta-data object that we have a var: + // + // AddScalarVarToMetaData(md, varname, mesh_for_this_var, cent); + // + + // + // CODE TO ADD A VECTOR VARIABLE + // + // string mesh_for_this_var = meshname; // ??? -- could be multiple meshes + // string varname = ... + // int vector_dim = 2; + // + // AVT_NODECENT, AVT_ZONECENT, AVT_UNKNOWN_CENT + // avtCentering cent = AVT_NODECENT; + // + // + // Here's the call that tells the meta-data object that we have a var: + // + // AddVectorVarToMetaData(md, varname, mesh_for_this_var, cent,vector_dim); + // + + // + // CODE TO ADD A TENSOR VARIABLE + // + // string mesh_for_this_var = meshname; // ??? -- could be multiple meshes + // string varname = ... + // int tensor_dim = 9; + // + // AVT_NODECENT, AVT_ZONECENT, AVT_UNKNOWN_CENT + // avtCentering cent = AVT_NODECENT; + // + // + // Here's the call that tells the meta-data object that we have a var: + // + // AddTensorVarToMetaData(md, varname, mesh_for_this_var, cent,tensor_dim); + // + + // + // CODE TO ADD A MATERIAL + // + // string mesh_for_mat = meshname; // ??? -- could be multiple meshes + // string matname = ... + // int nmats = ...; + // vector mnames; + // for (int i = 0 ; i < nmats ; i++) + // { + // char str[32]; + // sprintf(str, "mat%d", i); + // -- or -- + // strcpy(str, "Aluminum"); + // mnames.push_back(str); + // } + // + // Here's the call that tells the meta-data object that we have a mat: + // + // AddMaterialToMetaData(md, matname, mesh_for_mat, nmats, mnames); + // + // + // Here's the way to add expressions: + //Expression momentum_expr; + //momentum_expr.SetName("momentum"); + //momentum_expr.SetDefinition("{u, v}"); + //momentum_expr.SetType(Expression::VectorMeshVar); + //md->AddExpression(&momentum_expr); + //Expression KineticEnergy_expr; + //KineticEnergy_expr.SetName("KineticEnergy"); + //KineticEnergy_expr.SetDefinition("0.5*(momentum*momentum)/(rho*rho)"); + //KineticEnergy_expr.SetType(Expression::ScalarMeshVar); + //md->AddExpression(&KineticEnergy_expr); + // + int size; + size = 1; +#ifdef PARALLEL_IO + size = PAR_Size(); +#endif + + + if (!points.size()) { + EXCEPTION1(InvalidFilesException, "Number of points is zero"); + } + + cout << "Populate: size, : " << size << "\n"; + + avtMeshMetaData *pmesh = new avtMeshMetaData; + + int dimension = 3; + pmesh->name = "particles"; + pmesh->originalName = "particles"; + pmesh->meshType = AVT_POINT_MESH; + pmesh->topologicalDimension = 0; + pmesh->spatialDimension = dimension; + pmesh->numBlocks = size; + pmesh->blockTitle = "subset"; + pmesh->blockPieceName = "subset"; + pmesh->hasSpatialExtents = false; + + md->Add(pmesh); + + int i; + for (i=0; i < pointvarnames.size(); i++){ + AddScalarVarToMetaData(md, pointvarnames[i], "particles", AVT_NODECENT); + } + +} + + +// **************************************************************************** +// Method: avth5partFileFormat::GetMesh +// +// Purpose: +// Gets the mesh associated with this file. The mesh is returned as a +// derived type of vtkDataSet (ie vtkRectilinearGrid, vtkStructuredGrid, +// vtkUnstructuredGrid, etc). +// +// Arguments: +// timestate The index of the timestate. If GetNTimesteps returned +// 'N' time steps, this is guaranteed to be between 0 and N-1. +// domain The index of the domain. If there are NDomains, this +// value is guaranteed to be between 0 and NDomains-1, +// regardless of block origin. +// meshname The name of the mesh of interest. This can be ignored if +// there is only one mesh. +// +// Programmer: cristina -- generated by xml2avt +// Creation: Mon Feb 27 13:47:07 PST 2006 +// +// **************************************************************************** + +vtkDataSet * +avth5partFileFormat::GetMesh(int timestate, int domain, const char *meshname) +{ + cout << "GetMesh domain: " << domain << "\n"; + + H5PartFile *file; + file = H5PartOpenFile(fname.c_str(),H5PART_READ); + + if (!file) + EXCEPTION1(InvalidFilesException, fname.c_str()); + + long int tnpoints, npoints; + int npointvars; + int nspace = 3; + int nprocs = 1; +#ifdef PARALLEL_IO + nprocs = PAR_Size(); +#endif + H5PartSetStep(file,timestate); + + //points + tnpoints= (int) H5PartGetNumParticles(file); + unsigned long long idStart = ((int)(tnpoints/nprocs))*domain; + unsigned long long idEnd; + if (domain < nprocs-1) + idEnd = ((unsigned long int)(tnpoints/nprocs))*(domain+1); + else if (domain == nprocs - 1) + idEnd = tnpoints; + + + H5PartSetView(file,idStart,idEnd); + + //points + npoints= (long int) H5PartGetNumParticles(file); + cout << "GetMesh: npoints for domain " << domain << ": " << npoints << "\n"; + + if (strcmp(meshname, "particles") != 0){ + EXCEPTION1(InvalidVariableException, meshname); + } + if (npoints == 0) + EXCEPTION1(VisItException, "npoints is zero"); + + points.resize(npoints*nspace); + double *x, *y, *z; + x = (double *) malloc(sizeof(double)*npoints); + y = (double *) malloc(sizeof(double)*npoints); + z = (double *) malloc(sizeof(double)*npoints); + + + int status = 0; + status = H5PartReadDataFloat64(file, "x", x); + if (status != 1) + EXCEPTION1(VisItException, "Could not read x coordinates"); + status = H5PartReadDataFloat64(file, "y", y); + if (status != 1) + EXCEPTION1(VisItException, "Could not read y coordinates"); + status = H5PartReadDataFloat64(file, "z", z); + if (status != 1) + EXCEPTION1(VisItException, "Could not read z coordinates"); + for (long int i = 0; i < npoints; i++){ + points[nspace*i] = (float) x[i]; + points[nspace*i+1] = (float) y[i]; + points[nspace*i+2] = (float) z[i]; + } + free(x); + free(y); + free(z); + + H5PartSetView(file,-1, -1); + + vtkPolyData *dataset = vtkPolyData::New(); + vtkPoints *vtkpoints = vtkPoints::New(); + vtkpoints->SetNumberOfPoints((vtkIdType) npoints); + + float *pts = (float *) vtkpoints->GetVoidPointer(0); + + for (long int i=0; i < npoints*nspace; i++){ + pts[i] = points[i]; + } + + dataset->Allocate(npoints*nspace); + for (long int i=0; i < npoints; i++){ + vtkIdType onevertex = (vtkIdType) i; + dataset->InsertNextCell(VTK_VERTEX, 1, &onevertex); + } + dataset->SetPoints(vtkpoints); + vtkpoints->Delete(); + + + H5PartCloseFile(file); + fprintf(stderr,"proc[%u]: done\n", domain); + + return dataset; +} + + +// **************************************************************************** +// Method: avth5partFileFormat::GetVar +// +// Purpose: +// Gets a scalar variable associated with this file. Although VTK has +// support for many different types, the best bet is vtkFloatArray, since +// that is supported everywhere through VisIt. +// +// Arguments: +// timestate The index of the timestate. If GetNTimesteps returned +// 'N' time steps, this is guaranteed to be between 0 and N-1. +// domain The index of the domain. If there are NDomains, this +// value is guaranteed to be between 0 and NDomains-1, +// regardless of block origin. +// varname The name of the variable requested. +// +// Programmer: cristina -- generated by xml2avt +// Creation: Mon Feb 27 13:47:07 PST 2006 +// +// **************************************************************************** + +vtkDataArray * +avth5partFileFormat::GetVar(int timestate, int domain, const char *varname) +{ + // + // If you have a file format where variables don't apply (for example a + // strictly polygonal format like the STL (Stereo Lithography) format, + // then uncomment the code below. + // + // EXCEPTION1(InvalidVariableException, varname); + // + + // + // If you do have a scalar variable, here is some code that may be helpful. + // + // int ntuples = XXX; // this is the number of entries in the variable. + // vtkFloatArray *rv = vtkFloatArray::New(); + // rv->SetNumberOfTuples(ntuples); + // for (int i = 0 ; i < ntuples ; i++) + // { + // rv->SetTuple1(i, VAL); // you must determine value for ith entry. + // } + // + // return rv; + // + + H5PartFile *file; + + file = H5PartOpenFile(fname.c_str(),H5PART_READ); + + if (!file) + EXCEPTION1(InvalidFilesException, fname.c_str()); + + int status; + long int tnpoints, npoints; + int npointvars; + int nspace = 3; + int nprocs = 1; +#ifdef PARALLEL_IO + nprocs = PAR_Size(); +#endif + + H5PartSetStep(file,timestate); + //points + tnpoints= (long int) H5PartGetNumParticles(file); + //point vars + + char name[64]; + long long *idvar; + double *data; + unsigned long long idStart = ((int)(tnpoints/nprocs))*domain; + unsigned long long idEnd; + if (domain < nprocs-1) + idEnd = ((unsigned long int)(tnpoints/nprocs))*(domain+1); + else if (domain == nprocs - 1) + idEnd = tnpoints; + + H5PartSetView(file,idStart,idEnd); + npoints= (int) H5PartGetNumParticles(file); + cout << "GetVar: npoints for domain " << domain << ": " << npoints << "\n"; + + for (int j=0; j < pointvarnames.size(); j++){ + status = H5PartGetDatasetName(file,j, name,64); + if (pointvarnames[j] == name) { + if (strstr(name, "id") != NULL){ + idvar = (long long *) malloc(sizeof(long long)*npoints); + status = H5PartReadDataInt64(file, name, idvar); + if (status != 1) + EXCEPTION1(VisItException, "Could not read dataset"); + pointvars[j].resize(npoints); + for (long int i=0; i < npoints; i++){ + pointvars[j][i] = (float) idvar[i]; + } + if (idvar != NULL) + free(idvar); + } else { + data = (double *) malloc(sizeof(double)*npoints); + status = H5PartReadDataFloat64(file, name, data); + if (status != 1) + EXCEPTION1(VisItException, "Could not read dataset"); + pointvars[j].resize(npoints); + for (long int i=0; i < npoints; i++){ + pointvars[j][i] = (float) data[i]; + } + if (data != NULL) + free(data); + } + } + } + H5PartSetView(file,-1, -1); + + for (int i=0; i < pointvarnames.size(); i++){ + if (pointvarnames[i] == string(varname)){ + vtkFloatArray *scalars = vtkFloatArray::New(); + scalars->SetNumberOfTuples(npoints); + float *ptr = (float*) scalars->GetVoidPointer(0); + memcpy(ptr, &pointvars[i][0], sizeof(float)*npoints); + return scalars; + } + } + H5PartCloseFile(file); + EXCEPTION1(InvalidVariableException, varname); + + +} + + +// **************************************************************************** +// Method: avth5partFileFormat::GetVectorVar +// +// Purpose: +// Gets a vector variable associated with this file. Although VTK has +// support for many different types, the best bet is vtkFloatArray, since +// that is supported everywhere through VisIt. +// +// Arguments: +// timestate The index of the timestate. If GetNTimesteps returned +// 'N' time steps, this is guaranteed to be between 0 and N-1. +// domain The index of the domain. If there are NDomains, this +// value is guaranteed to be between 0 and NDomains-1, +// regardless of block origin. +// varname The name of the variable requested. +// +// Programmer: cristina -- generated by xml2avt +// Creation: Mon Feb 27 13:47:07 PST 2006 +// +// **************************************************************************** + +vtkDataArray * +avth5partFileFormat::GetVectorVar(int timestate, int domain,const char *varname) +{ + // + // If you have a file format where variables don't apply (for example a + // strictly polygonal format like the STL (Stereo Lithography) format, + // then uncomment the code below. + // + // EXCEPTION1(InvalidVariableException, varname); + // + + // + // If you do have a vector variable, here is some code that may be helpful. + // + // int ncomps = YYY; // This is the rank of the vector - typically 2 or 3. + // int ntuples = XXX; // this is the number of entries in the variable. + // vtkFloatArray *rv = vtkFloatArray::New(); + // int ucomps = (ncomps == 2 ? 3 : ncomps); + // rv->SetNumberOfComponents(ucomps); + // rv->SetNumberOfTuples(ntuples); + // float *one_entry = new float[ucomps]; + // for (int i = 0 ; i < ntuples ; i++) + // { + // int j; + // for (j = 0 ; j < ncomps ; j++) + // one_entry[j] = ... + // for (j = ncomps ; j < ucomps ; j++) + // one_entry[j] = 0.; + // rv->SetTuple(i, one_entry); + // } + // + // delete [] one_entry; + // return rv; + // + return NULL; +} diff --git a/visit_plugins/databases/H5Part/avth5partFileFormat.h b/visit_plugins/databases/H5Part/avth5partFileFormat.h new file mode 100644 index 0000000..6b4ea48 --- /dev/null +++ b/visit_plugins/databases/H5Part/avth5partFileFormat.h @@ -0,0 +1,75 @@ +// ************************************************************************* // +// avth5partFileFormat.h // +// ************************************************************************* // + +#ifndef AVT_h5part_FILE_FORMAT_H +#define AVT_h5part_FILE_FORMAT_H + +#include +#include + +#include +#include + + + + +// **************************************************************************** +// Class: avth5partFileFormat +// +// Purpose: +// Reads in h5part files as a plugin to VisIt. +// +// Programmer: cristina -- generated by xml2avt +// Creation: Mon Feb 27 13:53:31 PST 2006 +// +// **************************************************************************** + +class avth5partFileFormat : public avtMTMDFileFormat +{ + public: + avth5partFileFormat(const char *); + virtual ~avth5partFileFormat() {;}; + + // + // This is used to return unconvention data -- ranging from material + // information to information about block connectivity. + // + // virtual void *GetAuxiliaryData(const char *var, const char *type, + // int timestep, int domain,void *args, + // DestructorFunction &); + // + + // + // If you know the times and cycle numbers, overload this function. + // Otherwise, VisIt will make up some reasonable ones for you. + // + // virtual void GetCycles(std::vector &); + // virtual void GetTimes(std::vector &); + // + + virtual int GetNTimesteps(void); + + virtual const char *GetType(void) { return "h5part"; }; + virtual void FreeUpResources(void); + + virtual vtkDataSet *GetMesh(int, int, const char *); + virtual vtkDataArray *GetVar(int, int, const char *); + virtual vtkDataArray *GetVectorVar(int, int, const char *); + + protected: + // DATA MEMBERS + + virtual void PopulateDatabaseMetaData(avtDatabaseMetaData *, int); + std::string fname; //filename + std::vector points; //point coordinates + std::vector > pointvars; //point variables + std::vector pointvarnames; //point variables' names + std::vector minExtents; //min extents + std::vector maxExtents; //max extents + + +}; + + +#endif diff --git a/visit_plugins/databases/H5Part/h5part.xml b/visit_plugins/databases/H5Part/h5part.xml new file mode 100644 index 0000000..93b3c67 --- /dev/null +++ b/visit_plugins/databases/H5Part/h5part.xml @@ -0,0 +1,14 @@ + + + + -I/usr/local/hdf5/include + + + -L/d/visusers/cristina/H5Part/H5ecloud/ -lH5Part + + + h5part + + + + diff --git a/visit_plugins/databases/H5Part/h5partCommonPluginInfo.C b/visit_plugins/databases/H5Part/h5partCommonPluginInfo.C new file mode 100644 index 0000000..0de21ac --- /dev/null +++ b/visit_plugins/databases/H5Part/h5partCommonPluginInfo.C @@ -0,0 +1,65 @@ +#include +#include +#include +#include + +// **************************************************************************** +// Method: h5partCommonPluginInfo::GetDatabaseType +// +// Purpose: +// Returns the type of a h5part database. +// +// Programmer: cristina -- generated by xml2info +// Creation: Mon Feb 27 13:53:31 PST 2006 +// +// **************************************************************************** +DatabaseType +h5partCommonPluginInfo::GetDatabaseType() +{ + return DB_TYPE_MTMD; +} + +// **************************************************************************** +// Method: h5partCommonPluginInfo::GetDefaultExtensions +// +// Purpose: +// Returns the default extensions for a h5part database. +// +// Programmer: cristina -- generated by xml2info +// Creation: Mon Feb 27 13:53:31 PST 2006 +// +// **************************************************************************** +std::vector +h5partCommonPluginInfo::GetDefaultExtensions() +{ + std::vector defaultExtensions; + defaultExtensions.push_back("h5part"); + + return defaultExtensions; +} + +// **************************************************************************** +// Method: h5partCommonPluginInfo::Setuh5partDatabase +// +// Purpose: +// Sets up a h5part database. +// +// Arguments: +// list A list of file names. +// nList The number of timesteps in list. +// nBlocks The number of blocks in the list. +// +// Returns: A h5part database from list. +// +// Programmer: cristina -- generated by xml2info +// Creation: Mon Feb 27 13:53:31 PST 2006 +// +// **************************************************************************** +avtDatabase * +h5partCommonPluginInfo::SetupDatabase(const char *const *list, + int nList, int nBlock) +{ + return new avtGenericDatabase( + new avtMTMDFileFormatInterface( + new avth5partFileFormat(list[0]))); +} diff --git a/visit_plugins/databases/H5Part/h5partEnginePluginInfo.C b/visit_plugins/databases/H5Part/h5partEnginePluginInfo.C new file mode 100644 index 0000000..b763b6a --- /dev/null +++ b/visit_plugins/databases/H5Part/h5partEnginePluginInfo.C @@ -0,0 +1,39 @@ +#include + +#if defined(__APPLE__) +#define GetEngineInfo h5part_GetEngineInfo +#endif + +// **************************************************************************** +// Function: GetEngineInfo +// +// Purpose: +// Return a new EnginePluginInfo for the h5part database. +// +// Programmer: cristina -- generated by xml2info +// Creation: Thu Mar 9 09:51:18 PDT 2006 +// +// **************************************************************************** +extern "C" EngineDatabasePluginInfo* GetEngineInfo() +{ + return new h5partEnginePluginInfo; +} + +// **************************************************************************** +// Method: h5partCommonPluginInfo::GetWriter +// +// Purpose: +// Sets up a h5part writer. +// +// Returns: A h5part writer. +// +// Programmer: cristina -- generated by xml2info +// Creation: Thu Mar 9 09:51:18 PDT 2006 +// +// **************************************************************************** +avtDatabaseWriter * +h5partEnginePluginInfo::GetWriter(void) +{ + return NULL; +} + diff --git a/visit_plugins/databases/H5Part/h5partMDServerPluginInfo.C b/visit_plugins/databases/H5Part/h5partMDServerPluginInfo.C new file mode 100644 index 0000000..0f886c3 --- /dev/null +++ b/visit_plugins/databases/H5Part/h5partMDServerPluginInfo.C @@ -0,0 +1,25 @@ +#include + +#if defined(__APPLE__) +#define GetMDServerInfo h5part_GetMDServerInfo +#endif + +// **************************************************************************** +// Function: GetMDServerInfo +// +// Purpose: +// Return a new MDServerPluginInfo for the h5part database. +// +// Programmer: cristina -- generated by xml2info +// Creation: Thu Mar 9 09:51:18 PDT 2006 +// +// **************************************************************************** +extern "C" MDServerDatabasePluginInfo* GetMDServerInfo() +{ + return new h5partMDServerPluginInfo; +} + +// this makes compilers happy... remove if we ever have functions here +void h5partMDServerPluginInfo::dummy() +{ +} diff --git a/visit_plugins/databases/H5Part/h5partPluginInfo.C b/visit_plugins/databases/H5Part/h5partPluginInfo.C new file mode 100644 index 0000000..0a09057 --- /dev/null +++ b/visit_plugins/databases/H5Part/h5partPluginInfo.C @@ -0,0 +1,124 @@ +// ************************************************************************* // +// File: h5partPluginInfo.C +// ************************************************************************* // + +#include + +#include +#if defined(__APPLE__) +extern "C" const char *h5partVisItPluginVersion = VERSION; +#else +extern "C" const char *VisItPluginVersion = VERSION; +#endif + +#if defined(__APPLE__) +#define GetGeneralInfo h5part_GetGeneralInfo +#endif + +// **************************************************************************** +// Function: GetGeneralInfo +// +// Purpose: +// Return a new GeneralPluginInfo for the h5part database. +// +// Programmer: cristina -- generated by xml2info +// Creation: Thu Mar 9 09:51:18 PDT 2006 +// +// **************************************************************************** +extern "C" GeneralDatabasePluginInfo* GetGeneralInfo() +{ + return new h5partGeneralPluginInfo; +} + +// **************************************************************************** +// Method: h5partGeneralPluginInfo::GetName +// +// Purpose: +// Return the name of the database plugin. +// +// Returns: A pointer to the name of the database plugin. +// +// Programmer: cristina -- generated by xml2info +// Creation: Thu Mar 9 09:51:18 PDT 2006 +// +// **************************************************************************** + +char * +h5partGeneralPluginInfo::GetName() const +{ + return "h5part"; +} + +// **************************************************************************** +// Method: h5partGeneralPluginInfo::GetVersion +// +// Purpose: +// Return the version of the database plugin. +// +// Returns: A pointer to the version of the database plugin. +// +// Programmer: cristina -- generated by xml2info +// Creation: Thu Mar 9 09:51:18 PDT 2006 +// +// **************************************************************************** + +char * +h5partGeneralPluginInfo::GetVersion() const +{ + return "1.0"; +} + +// **************************************************************************** +// Method: h5partGeneralPluginInfo::GetID +// +// Purpose: +// Return the id of the database plugin. +// +// Returns: A pointer to the id of the database plugin. +// +// Programmer: cristina -- generated by xml2info +// Creation: Thu Mar 9 09:51:18 PDT 2006 +// +// **************************************************************************** + +char * +h5partGeneralPluginInfo::GetID() const +{ + return "h5part_1.0"; +} +// **************************************************************************** +// Method: h5partGeneralPluginInfo::EnabledByDefault +// +// Purpose: +// Return true if this plugin should be enabled by default; false otherwise. +// +// Returns: true/false +// +// Programmer: cristina -- generated by xml2info +// Creation: Thu Mar 9 09:51:18 PDT 2006 +// +// **************************************************************************** + +bool +h5partGeneralPluginInfo::EnabledByDefault() const +{ + return true; +} +// **************************************************************************** +// Method: h5partGeneralPluginInfo::HasWriter +// +// Purpose: +// Return true if this plugin has a database writer. +// +// Returns: true/false +// +// Programmer: cristina -- generated by xml2info +// Creation: Thu Mar 9 09:51:18 PDT 2006 +// +// **************************************************************************** + +bool +h5partGeneralPluginInfo::HasWriter() const +{ + return false; +} diff --git a/visit_plugins/databases/H5Part/h5partPluginInfo.h b/visit_plugins/databases/H5Part/h5partPluginInfo.h new file mode 100644 index 0000000..b675f45 --- /dev/null +++ b/visit_plugins/databases/H5Part/h5partPluginInfo.h @@ -0,0 +1,60 @@ +// **************************************************************************** +// h5partPluginInfo.h +// **************************************************************************** + +#ifndef H5PART_PLUGIN_INFO_H +#define H5PART_PLUGIN_INFO_H +#include +#include + +class avtDatabase; +class avtDatabaseWriter; + +// **************************************************************************** +// Class: h5partDatabasePluginInfo +// +// Purpose: +// Classes that provide all the information about the h5part plugin. +// Portions are separated into pieces relevant to the appropriate +// components of VisIt. +// +// Programmer: cristina -- generated by xml2info +// Creation: Thu Mar 9 09:51:18 PDT 2006 +// +// Modifications: +// +// **************************************************************************** + +class h5partGeneralPluginInfo : public virtual GeneralDatabasePluginInfo +{ + public: + virtual char *GetName() const; + virtual char *GetVersion() const; + virtual char *GetID() const; + virtual bool EnabledByDefault() const; + virtual bool HasWriter() const; +}; + +class h5partCommonPluginInfo : public virtual CommonDatabasePluginInfo, public virtual h5partGeneralPluginInfo +{ + public: + virtual DatabaseType GetDatabaseType(); + virtual std::vector GetDefaultExtensions(); + virtual avtDatabase *SetupDatabase(const char * const *list, + int nList, int nBlock); +}; + +class h5partMDServerPluginInfo : public virtual MDServerDatabasePluginInfo, public virtual h5partCommonPluginInfo +{ + public: + // this makes compilers happy... remove if we ever have functions here + virtual void dummy(); +}; + +class h5partEnginePluginInfo : public virtual EngineDatabasePluginInfo, public virtual h5partCommonPluginInfo +{ + public: + virtual avtDatabaseWriter *GetWriter(void); +}; + +#endif diff --git a/visit_plugins/operators/BinnerFilter/.depend b/visit_plugins/operators/BinnerFilter/.depend new file mode 100644 index 0000000..2dfc939 --- /dev/null +++ b/visit_plugins/operators/BinnerFilter/.depend @@ -0,0 +1,1505 @@ +BinnerPluginInfo.o: BinnerPluginInfo.C BinnerPluginInfo.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/OperatorPluginInfo.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/plugin_exports.h \ + /usr/include/stdio.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/gnu/stubs.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/wordsize.h \ + /usr/include/bits/typesizes.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h /usr/include/bits/wchar.h \ + /usr/include/gconv.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/operator_plugin_exports.h \ + BinnerFilter.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/AttributeSubject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/state_exports.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/AttributeGroup.h \ + /usr/include/c++/4.0.2/vector /usr/include/c++/4.0.2/bits/functexcept.h \ + /usr/include/c++/4.0.2/exception_defines.h \ + /usr/include/c++/4.0.2/bits/stl_algobase.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++config.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/os_defines.h \ + /usr/include/c++/4.0.2/cstring /usr/include/c++/4.0.2/cstddef \ + /usr/include/string.h /usr/include/xlocale.h \ + /usr/include/c++/4.0.2/climits \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/limits.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ + /usr/include/c++/4.0.2/cstdlib /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/bits/sched.h \ + /usr/include/alloca.h /usr/include/c++/4.0.2/iosfwd \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++locale.h \ + /usr/include/c++/4.0.2/cstdio /usr/include/c++/4.0.2/clocale \ + /usr/include/locale.h /usr/include/bits/locale.h \ + /usr/include/langinfo.h /usr/include/nl_types.h /usr/include/iconv.h \ + /usr/include/libintl.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++io.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/gthr.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/gthr-default.h \ + /usr/include/pthread.h /usr/include/sched.h /usr/include/signal.h \ + /usr/include/bits/initspin.h /usr/include/bits/sigthread.h \ + /usr/include/unistd.h /usr/include/bits/posix_opt.h \ + /usr/include/bits/environments.h /usr/include/bits/confname.h \ + /usr/include/getopt.h /usr/include/c++/4.0.2/cctype \ + /usr/include/ctype.h /usr/include/c++/4.0.2/bits/stringfwd.h \ + /usr/include/c++/4.0.2/bits/postypes.h /usr/include/c++/4.0.2/cwchar \ + /usr/include/c++/4.0.2/ctime /usr/include/stdint.h \ + /usr/include/c++/4.0.2/bits/stl_pair.h \ + /usr/include/c++/4.0.2/bits/cpp_type_traits.h \ + /usr/include/c++/4.0.2/bits/stl_iterator_base_types.h \ + /usr/include/c++/4.0.2/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/4.0.2/bits/concept_check.h \ + /usr/include/c++/4.0.2/bits/stl_iterator.h \ + /usr/include/c++/4.0.2/debug/debug.h /usr/include/c++/4.0.2/cassert \ + /usr/include/assert.h /usr/include/c++/4.0.2/bits/allocator.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++allocator.h \ + /usr/include/c++/4.0.2/ext/new_allocator.h /usr/include/c++/4.0.2/new \ + /usr/include/c++/4.0.2/exception \ + /usr/include/c++/4.0.2/bits/stl_construct.h \ + /usr/include/c++/4.0.2/bits/stl_uninitialized.h \ + /usr/include/c++/4.0.2/bits/stl_vector.h \ + /usr/include/c++/4.0.2/bits/stl_bvector.h \ + /usr/include/c++/4.0.2/bits/vector.tcc /usr/include/c++/4.0.2/string \ + /usr/include/c++/4.0.2/bits/char_traits.h /usr/include/c++/4.0.2/memory \ + /usr/include/c++/4.0.2/bits/stl_raw_storage_iter.h \ + /usr/include/c++/4.0.2/limits \ + /usr/include/c++/4.0.2/bits/stl_function.h \ + /usr/include/c++/4.0.2/bits/basic_string.h \ + /usr/include/c++/4.0.2/bits/atomicity.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/atomic_word.h \ + /usr/include/c++/4.0.2/algorithm /usr/include/c++/4.0.2/bits/stl_algo.h \ + /usr/include/c++/4.0.2/bits/stl_heap.h \ + /usr/include/c++/4.0.2/bits/stl_tempbuf.h \ + /usr/include/c++/4.0.2/bits/basic_string.tcc \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/visitstream.h \ + /usr/include/c++/4.0.2/iostream /usr/include/c++/4.0.2/ostream \ + /usr/include/c++/4.0.2/ios /usr/include/c++/4.0.2/bits/localefwd.h \ + /usr/include/c++/4.0.2/bits/ios_base.h \ + /usr/include/c++/4.0.2/bits/locale_classes.h \ + /usr/include/c++/4.0.2/streambuf \ + /usr/include/c++/4.0.2/bits/streambuf.tcc \ + /usr/include/c++/4.0.2/bits/basic_ios.h \ + /usr/include/c++/4.0.2/bits/streambuf_iterator.h \ + /usr/include/c++/4.0.2/bits/locale_facets.h \ + /usr/include/c++/4.0.2/cwctype /usr/include/wctype.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/ctype_base.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/ctype_inline.h \ + /usr/include/c++/4.0.2/bits/codecvt.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/time_members.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/messages_members.h \ + /usr/include/c++/4.0.2/bits/basic_ios.tcc \ + /usr/include/c++/4.0.2/bits/ostream.tcc /usr/include/c++/4.0.2/locale \ + /usr/include/c++/4.0.2/bits/locale_facets.tcc \ + /usr/include/c++/4.0.2/typeinfo /usr/include/c++/4.0.2/istream \ + /usr/include/c++/4.0.2/bits/istream.tcc /usr/include/c++/4.0.2/fstream \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/basic_file.h \ + /usr/include/c++/4.0.2/bits/fstream.tcc \ + /usr/include/c++/4.0.2/backward/strstream \ + /usr/include/c++/4.0.2/backward/backward_warning.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/VisItException.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/misc_exports.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/vectortypes.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/Subject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit-config.h +BinnerCommonPluginInfo.o: BinnerCommonPluginInfo.C BinnerPluginInfo.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/OperatorPluginInfo.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/plugin_exports.h \ + /usr/include/stdio.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/gnu/stubs.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/wordsize.h \ + /usr/include/bits/typesizes.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h /usr/include/bits/wchar.h \ + /usr/include/gconv.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/operator_plugin_exports.h \ + BinnerFilter.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/AttributeSubject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/state_exports.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/AttributeGroup.h \ + /usr/include/c++/4.0.2/vector /usr/include/c++/4.0.2/bits/functexcept.h \ + /usr/include/c++/4.0.2/exception_defines.h \ + /usr/include/c++/4.0.2/bits/stl_algobase.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++config.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/os_defines.h \ + /usr/include/c++/4.0.2/cstring /usr/include/c++/4.0.2/cstddef \ + /usr/include/string.h /usr/include/xlocale.h \ + /usr/include/c++/4.0.2/climits \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/limits.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ + /usr/include/c++/4.0.2/cstdlib /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/bits/sched.h \ + /usr/include/alloca.h /usr/include/c++/4.0.2/iosfwd \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++locale.h \ + /usr/include/c++/4.0.2/cstdio /usr/include/c++/4.0.2/clocale \ + /usr/include/locale.h /usr/include/bits/locale.h \ + /usr/include/langinfo.h /usr/include/nl_types.h /usr/include/iconv.h \ + /usr/include/libintl.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++io.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/gthr.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/gthr-default.h \ + /usr/include/pthread.h /usr/include/sched.h /usr/include/signal.h \ + /usr/include/bits/initspin.h /usr/include/bits/sigthread.h \ + /usr/include/unistd.h /usr/include/bits/posix_opt.h \ + /usr/include/bits/environments.h /usr/include/bits/confname.h \ + /usr/include/getopt.h /usr/include/c++/4.0.2/cctype \ + /usr/include/ctype.h /usr/include/c++/4.0.2/bits/stringfwd.h \ + /usr/include/c++/4.0.2/bits/postypes.h /usr/include/c++/4.0.2/cwchar \ + /usr/include/c++/4.0.2/ctime /usr/include/stdint.h \ + /usr/include/c++/4.0.2/bits/stl_pair.h \ + /usr/include/c++/4.0.2/bits/cpp_type_traits.h \ + /usr/include/c++/4.0.2/bits/stl_iterator_base_types.h \ + /usr/include/c++/4.0.2/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/4.0.2/bits/concept_check.h \ + /usr/include/c++/4.0.2/bits/stl_iterator.h \ + /usr/include/c++/4.0.2/debug/debug.h /usr/include/c++/4.0.2/cassert \ + /usr/include/assert.h /usr/include/c++/4.0.2/bits/allocator.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++allocator.h \ + /usr/include/c++/4.0.2/ext/new_allocator.h /usr/include/c++/4.0.2/new \ + /usr/include/c++/4.0.2/exception \ + /usr/include/c++/4.0.2/bits/stl_construct.h \ + /usr/include/c++/4.0.2/bits/stl_uninitialized.h \ + /usr/include/c++/4.0.2/bits/stl_vector.h \ + /usr/include/c++/4.0.2/bits/stl_bvector.h \ + /usr/include/c++/4.0.2/bits/vector.tcc /usr/include/c++/4.0.2/string \ + /usr/include/c++/4.0.2/bits/char_traits.h /usr/include/c++/4.0.2/memory \ + /usr/include/c++/4.0.2/bits/stl_raw_storage_iter.h \ + /usr/include/c++/4.0.2/limits \ + /usr/include/c++/4.0.2/bits/stl_function.h \ + /usr/include/c++/4.0.2/bits/basic_string.h \ + /usr/include/c++/4.0.2/bits/atomicity.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/atomic_word.h \ + /usr/include/c++/4.0.2/algorithm /usr/include/c++/4.0.2/bits/stl_algo.h \ + /usr/include/c++/4.0.2/bits/stl_heap.h \ + /usr/include/c++/4.0.2/bits/stl_tempbuf.h \ + /usr/include/c++/4.0.2/bits/basic_string.tcc \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/visitstream.h \ + /usr/include/c++/4.0.2/iostream /usr/include/c++/4.0.2/ostream \ + /usr/include/c++/4.0.2/ios /usr/include/c++/4.0.2/bits/localefwd.h \ + /usr/include/c++/4.0.2/bits/ios_base.h \ + /usr/include/c++/4.0.2/bits/locale_classes.h \ + /usr/include/c++/4.0.2/streambuf \ + /usr/include/c++/4.0.2/bits/streambuf.tcc \ + /usr/include/c++/4.0.2/bits/basic_ios.h \ + /usr/include/c++/4.0.2/bits/streambuf_iterator.h \ + /usr/include/c++/4.0.2/bits/locale_facets.h \ + /usr/include/c++/4.0.2/cwctype /usr/include/wctype.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/ctype_base.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/ctype_inline.h \ + /usr/include/c++/4.0.2/bits/codecvt.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/time_members.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/messages_members.h \ + /usr/include/c++/4.0.2/bits/basic_ios.tcc \ + /usr/include/c++/4.0.2/bits/ostream.tcc /usr/include/c++/4.0.2/locale \ + /usr/include/c++/4.0.2/bits/locale_facets.tcc \ + /usr/include/c++/4.0.2/typeinfo /usr/include/c++/4.0.2/istream \ + /usr/include/c++/4.0.2/bits/istream.tcc /usr/include/c++/4.0.2/fstream \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/basic_file.h \ + /usr/include/c++/4.0.2/bits/fstream.tcc \ + /usr/include/c++/4.0.2/backward/strstream \ + /usr/include/c++/4.0.2/backward/backward_warning.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/VisItException.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/misc_exports.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/vectortypes.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/Subject.h +BinnerFilter.o: BinnerFilter.C BinnerFilter.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/AttributeSubject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/state_exports.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/AttributeGroup.h \ + /usr/include/c++/4.0.2/vector /usr/include/c++/4.0.2/bits/functexcept.h \ + /usr/include/c++/4.0.2/exception_defines.h \ + /usr/include/c++/4.0.2/bits/stl_algobase.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++config.h \ + /usr/include/bits/wordsize.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/os_defines.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/gnu/stubs.h /usr/include/c++/4.0.2/cstring \ + /usr/include/c++/4.0.2/cstddef \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/stddef.h \ + /usr/include/string.h /usr/include/xlocale.h \ + /usr/include/c++/4.0.2/climits \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/limits.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ + /usr/include/bits/stdio_lim.h /usr/include/c++/4.0.2/cstdlib \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/sys/types.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/bits/sched.h \ + /usr/include/alloca.h /usr/include/c++/4.0.2/iosfwd \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++locale.h \ + /usr/include/c++/4.0.2/cstdio /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h /usr/include/bits/wchar.h \ + /usr/include/gconv.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/stdarg.h \ + /usr/include/bits/sys_errlist.h /usr/include/bits/stdio.h \ + /usr/include/c++/4.0.2/clocale /usr/include/locale.h \ + /usr/include/bits/locale.h /usr/include/langinfo.h \ + /usr/include/nl_types.h /usr/include/iconv.h /usr/include/libintl.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++io.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/gthr.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/gthr-default.h \ + /usr/include/pthread.h /usr/include/sched.h /usr/include/signal.h \ + /usr/include/bits/initspin.h /usr/include/bits/sigthread.h \ + /usr/include/unistd.h /usr/include/bits/posix_opt.h \ + /usr/include/bits/environments.h /usr/include/bits/confname.h \ + /usr/include/getopt.h /usr/include/c++/4.0.2/cctype \ + /usr/include/ctype.h /usr/include/c++/4.0.2/bits/stringfwd.h \ + /usr/include/c++/4.0.2/bits/postypes.h /usr/include/c++/4.0.2/cwchar \ + /usr/include/c++/4.0.2/ctime /usr/include/stdint.h \ + /usr/include/c++/4.0.2/bits/stl_pair.h \ + /usr/include/c++/4.0.2/bits/cpp_type_traits.h \ + /usr/include/c++/4.0.2/bits/stl_iterator_base_types.h \ + /usr/include/c++/4.0.2/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/4.0.2/bits/concept_check.h \ + /usr/include/c++/4.0.2/bits/stl_iterator.h \ + /usr/include/c++/4.0.2/debug/debug.h /usr/include/c++/4.0.2/cassert \ + /usr/include/assert.h /usr/include/c++/4.0.2/bits/allocator.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++allocator.h \ + /usr/include/c++/4.0.2/ext/new_allocator.h /usr/include/c++/4.0.2/new \ + /usr/include/c++/4.0.2/exception \ + /usr/include/c++/4.0.2/bits/stl_construct.h \ + /usr/include/c++/4.0.2/bits/stl_uninitialized.h \ + /usr/include/c++/4.0.2/bits/stl_vector.h \ + /usr/include/c++/4.0.2/bits/stl_bvector.h \ + /usr/include/c++/4.0.2/bits/vector.tcc /usr/include/c++/4.0.2/string \ + /usr/include/c++/4.0.2/bits/char_traits.h /usr/include/c++/4.0.2/memory \ + /usr/include/c++/4.0.2/bits/stl_raw_storage_iter.h \ + /usr/include/c++/4.0.2/limits \ + /usr/include/c++/4.0.2/bits/stl_function.h \ + /usr/include/c++/4.0.2/bits/basic_string.h \ + /usr/include/c++/4.0.2/bits/atomicity.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/atomic_word.h \ + /usr/include/c++/4.0.2/algorithm /usr/include/c++/4.0.2/bits/stl_algo.h \ + /usr/include/c++/4.0.2/bits/stl_heap.h \ + /usr/include/c++/4.0.2/bits/stl_tempbuf.h \ + /usr/include/c++/4.0.2/bits/basic_string.tcc \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/visitstream.h \ + /usr/include/c++/4.0.2/iostream /usr/include/c++/4.0.2/ostream \ + /usr/include/c++/4.0.2/ios /usr/include/c++/4.0.2/bits/localefwd.h \ + /usr/include/c++/4.0.2/bits/ios_base.h \ + /usr/include/c++/4.0.2/bits/locale_classes.h \ + /usr/include/c++/4.0.2/streambuf \ + /usr/include/c++/4.0.2/bits/streambuf.tcc \ + /usr/include/c++/4.0.2/bits/basic_ios.h \ + /usr/include/c++/4.0.2/bits/streambuf_iterator.h \ + /usr/include/c++/4.0.2/bits/locale_facets.h \ + /usr/include/c++/4.0.2/cwctype /usr/include/wctype.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/ctype_base.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/ctype_inline.h \ + /usr/include/c++/4.0.2/bits/codecvt.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/time_members.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/messages_members.h \ + /usr/include/c++/4.0.2/bits/basic_ios.tcc \ + /usr/include/c++/4.0.2/bits/ostream.tcc /usr/include/c++/4.0.2/locale \ + /usr/include/c++/4.0.2/bits/locale_facets.tcc \ + /usr/include/c++/4.0.2/typeinfo /usr/include/c++/4.0.2/istream \ + /usr/include/c++/4.0.2/bits/istream.tcc /usr/include/c++/4.0.2/fstream \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/basic_file.h \ + /usr/include/c++/4.0.2/bits/fstream.tcc \ + /usr/include/c++/4.0.2/backward/strstream \ + /usr/include/c++/4.0.2/backward/backward_warning.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/VisItException.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/misc_exports.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/vectortypes.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/Subject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/DataNode.h +BinnerGUIPluginInfo.o: BinnerGUIPluginInfo.C BinnerPluginInfo.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/OperatorPluginInfo.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/plugin_exports.h \ + /usr/include/stdio.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/gnu/stubs.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/wordsize.h \ + /usr/include/bits/typesizes.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h /usr/include/bits/wchar.h \ + /usr/include/gconv.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/operator_plugin_exports.h \ + BinnerFilter.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/AttributeSubject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/state_exports.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/AttributeGroup.h \ + /usr/include/c++/4.0.2/vector /usr/include/c++/4.0.2/bits/functexcept.h \ + /usr/include/c++/4.0.2/exception_defines.h \ + /usr/include/c++/4.0.2/bits/stl_algobase.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++config.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/os_defines.h \ + /usr/include/c++/4.0.2/cstring /usr/include/c++/4.0.2/cstddef \ + /usr/include/string.h /usr/include/xlocale.h \ + /usr/include/c++/4.0.2/climits \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/limits.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ + /usr/include/c++/4.0.2/cstdlib /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/bits/sched.h \ + /usr/include/alloca.h /usr/include/c++/4.0.2/iosfwd \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++locale.h \ + /usr/include/c++/4.0.2/cstdio /usr/include/c++/4.0.2/clocale \ + /usr/include/locale.h /usr/include/bits/locale.h \ + /usr/include/langinfo.h /usr/include/nl_types.h /usr/include/iconv.h \ + /usr/include/libintl.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++io.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/gthr.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/gthr-default.h \ + /usr/include/pthread.h /usr/include/sched.h /usr/include/signal.h \ + /usr/include/bits/initspin.h /usr/include/bits/sigthread.h \ + /usr/include/unistd.h /usr/include/bits/posix_opt.h \ + /usr/include/bits/environments.h /usr/include/bits/confname.h \ + /usr/include/getopt.h /usr/include/c++/4.0.2/cctype \ + /usr/include/ctype.h /usr/include/c++/4.0.2/bits/stringfwd.h \ + /usr/include/c++/4.0.2/bits/postypes.h /usr/include/c++/4.0.2/cwchar \ + /usr/include/c++/4.0.2/ctime /usr/include/stdint.h \ + /usr/include/c++/4.0.2/bits/stl_pair.h \ + /usr/include/c++/4.0.2/bits/cpp_type_traits.h \ + /usr/include/c++/4.0.2/bits/stl_iterator_base_types.h \ + /usr/include/c++/4.0.2/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/4.0.2/bits/concept_check.h \ + /usr/include/c++/4.0.2/bits/stl_iterator.h \ + /usr/include/c++/4.0.2/debug/debug.h /usr/include/c++/4.0.2/cassert \ + /usr/include/assert.h /usr/include/c++/4.0.2/bits/allocator.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++allocator.h \ + /usr/include/c++/4.0.2/ext/new_allocator.h /usr/include/c++/4.0.2/new \ + /usr/include/c++/4.0.2/exception \ + /usr/include/c++/4.0.2/bits/stl_construct.h \ + /usr/include/c++/4.0.2/bits/stl_uninitialized.h \ + /usr/include/c++/4.0.2/bits/stl_vector.h \ + /usr/include/c++/4.0.2/bits/stl_bvector.h \ + /usr/include/c++/4.0.2/bits/vector.tcc /usr/include/c++/4.0.2/string \ + /usr/include/c++/4.0.2/bits/char_traits.h /usr/include/c++/4.0.2/memory \ + /usr/include/c++/4.0.2/bits/stl_raw_storage_iter.h \ + /usr/include/c++/4.0.2/limits \ + /usr/include/c++/4.0.2/bits/stl_function.h \ + /usr/include/c++/4.0.2/bits/basic_string.h \ + /usr/include/c++/4.0.2/bits/atomicity.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/atomic_word.h \ + /usr/include/c++/4.0.2/algorithm /usr/include/c++/4.0.2/bits/stl_algo.h \ + /usr/include/c++/4.0.2/bits/stl_heap.h \ + /usr/include/c++/4.0.2/bits/stl_tempbuf.h \ + /usr/include/c++/4.0.2/bits/basic_string.tcc \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/visitstream.h \ + /usr/include/c++/4.0.2/iostream /usr/include/c++/4.0.2/ostream \ + /usr/include/c++/4.0.2/ios /usr/include/c++/4.0.2/bits/localefwd.h \ + /usr/include/c++/4.0.2/bits/ios_base.h \ + /usr/include/c++/4.0.2/bits/locale_classes.h \ + /usr/include/c++/4.0.2/streambuf \ + /usr/include/c++/4.0.2/bits/streambuf.tcc \ + /usr/include/c++/4.0.2/bits/basic_ios.h \ + /usr/include/c++/4.0.2/bits/streambuf_iterator.h \ + /usr/include/c++/4.0.2/bits/locale_facets.h \ + /usr/include/c++/4.0.2/cwctype /usr/include/wctype.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/ctype_base.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/ctype_inline.h \ + /usr/include/c++/4.0.2/bits/codecvt.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/time_members.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/messages_members.h \ + /usr/include/c++/4.0.2/bits/basic_ios.tcc \ + /usr/include/c++/4.0.2/bits/ostream.tcc /usr/include/c++/4.0.2/locale \ + /usr/include/c++/4.0.2/bits/locale_facets.tcc \ + /usr/include/c++/4.0.2/typeinfo /usr/include/c++/4.0.2/istream \ + /usr/include/c++/4.0.2/bits/istream.tcc /usr/include/c++/4.0.2/fstream \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/basic_file.h \ + /usr/include/c++/4.0.2/bits/fstream.tcc \ + /usr/include/c++/4.0.2/backward/strstream \ + /usr/include/c++/4.0.2/backward/backward_warning.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/VisItException.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/misc_exports.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/vectortypes.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/Subject.h \ + QvisBinnerWindow.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/QvisOperatorWindow.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/gui_exports.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/QvisPostableWindowObserver.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/QvisPostableWindowSimpleObserver.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/QvisPostableWindow.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qstring.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qcstring.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qmemarray.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qgarray.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qshared.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qglobal.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qconfig.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qmodules.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qfeatures.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qwinexport.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/QvisWindowBase.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qmainwindow.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qwidget.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qwindowdefs.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qobjectdefs.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qstring.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qnamespace.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qobject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qevent.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qregion.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qrect.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qsize.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qpoint.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qmime.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qmap.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qdatastream.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qiodevice.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qpair.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qvaluelist.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qtl.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qtextstream.h \ + /usr/include/c++/4.0.2/iterator \ + /usr/include/c++/4.0.2/bits/stream_iterator.h \ + /usr/include/c++/4.0.2/list /usr/include/c++/4.0.2/bits/stl_list.h \ + /usr/include/c++/4.0.2/bits/list.tcc /usr/include/c++/4.0.2/map \ + /usr/include/c++/4.0.2/bits/stl_tree.h \ + /usr/include/c++/4.0.2/bits/stl_map.h \ + /usr/include/c++/4.0.2/bits/stl_multimap.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qpaintdevice.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qpalette.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qcolor.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qstringlist.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qstrlist.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qptrlist.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qglist.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qptrcollection.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qbrush.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qfont.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qfontmetrics.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qfontinfo.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qsizepolicy.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qtoolbar.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qdockwindow.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qframe.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/GUIBase.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/SimpleObserver.h \ + icon.xpm +QvisBinnerWindow.o: QvisBinnerWindow.C QvisBinnerWindow.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/QvisOperatorWindow.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/gui_exports.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/QvisPostableWindowObserver.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/QvisPostableWindowSimpleObserver.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/QvisPostableWindow.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qstring.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qcstring.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qmemarray.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qgarray.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qshared.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qglobal.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qconfig.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qmodules.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qfeatures.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qwinexport.h \ + /usr/include/string.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/gnu/stubs.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/stddef.h \ + /usr/include/xlocale.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/limits.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ + /usr/include/bits/stdio_lim.h /usr/include/c++/4.0.2/string \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++config.h \ + /usr/include/bits/wordsize.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/os_defines.h \ + /usr/include/c++/4.0.2/bits/stringfwd.h \ + /usr/include/c++/4.0.2/bits/char_traits.h \ + /usr/include/c++/4.0.2/cstring /usr/include/c++/4.0.2/cstddef \ + /usr/include/c++/4.0.2/bits/stl_algobase.h \ + /usr/include/c++/4.0.2/climits /usr/include/c++/4.0.2/cstdlib \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/sys/types.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/bits/sched.h \ + /usr/include/alloca.h /usr/include/c++/4.0.2/iosfwd \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++locale.h \ + /usr/include/c++/4.0.2/cstdio /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h /usr/include/bits/wchar.h \ + /usr/include/gconv.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/stdarg.h \ + /usr/include/bits/sys_errlist.h /usr/include/bits/stdio.h \ + /usr/include/c++/4.0.2/clocale /usr/include/locale.h \ + /usr/include/bits/locale.h /usr/include/langinfo.h \ + /usr/include/nl_types.h /usr/include/iconv.h /usr/include/libintl.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++io.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/gthr.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/gthr-default.h \ + /usr/include/pthread.h /usr/include/sched.h /usr/include/signal.h \ + /usr/include/bits/initspin.h /usr/include/bits/sigthread.h \ + /usr/include/unistd.h /usr/include/bits/posix_opt.h \ + /usr/include/bits/environments.h /usr/include/bits/confname.h \ + /usr/include/getopt.h /usr/include/c++/4.0.2/cctype \ + /usr/include/ctype.h /usr/include/c++/4.0.2/bits/postypes.h \ + /usr/include/c++/4.0.2/cwchar /usr/include/c++/4.0.2/ctime \ + /usr/include/stdint.h /usr/include/c++/4.0.2/bits/functexcept.h \ + /usr/include/c++/4.0.2/exception_defines.h \ + /usr/include/c++/4.0.2/bits/stl_pair.h \ + /usr/include/c++/4.0.2/bits/cpp_type_traits.h \ + /usr/include/c++/4.0.2/bits/stl_iterator_base_types.h \ + /usr/include/c++/4.0.2/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/4.0.2/bits/concept_check.h \ + /usr/include/c++/4.0.2/bits/stl_iterator.h \ + /usr/include/c++/4.0.2/debug/debug.h /usr/include/c++/4.0.2/cassert \ + /usr/include/assert.h /usr/include/c++/4.0.2/memory \ + /usr/include/c++/4.0.2/bits/allocator.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++allocator.h \ + /usr/include/c++/4.0.2/ext/new_allocator.h /usr/include/c++/4.0.2/new \ + /usr/include/c++/4.0.2/exception \ + /usr/include/c++/4.0.2/bits/stl_construct.h \ + /usr/include/c++/4.0.2/bits/stl_uninitialized.h \ + /usr/include/c++/4.0.2/bits/stl_raw_storage_iter.h \ + /usr/include/c++/4.0.2/limits \ + /usr/include/c++/4.0.2/bits/stl_function.h \ + /usr/include/c++/4.0.2/bits/basic_string.h \ + /usr/include/c++/4.0.2/bits/atomicity.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/atomic_word.h \ + /usr/include/c++/4.0.2/algorithm /usr/include/c++/4.0.2/bits/stl_algo.h \ + /usr/include/c++/4.0.2/bits/stl_heap.h \ + /usr/include/c++/4.0.2/bits/stl_tempbuf.h \ + /usr/include/c++/4.0.2/bits/basic_string.tcc \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/QvisWindowBase.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qmainwindow.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qwidget.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qwindowdefs.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qobjectdefs.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qstring.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qnamespace.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qobject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qevent.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qregion.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qrect.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qsize.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qpoint.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qmime.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qmap.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qdatastream.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qiodevice.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qpair.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qvaluelist.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qtl.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qtextstream.h \ + /usr/include/c++/4.0.2/iterator /usr/include/c++/4.0.2/ostream \ + /usr/include/c++/4.0.2/ios /usr/include/c++/4.0.2/bits/localefwd.h \ + /usr/include/c++/4.0.2/bits/ios_base.h \ + /usr/include/c++/4.0.2/bits/locale_classes.h \ + /usr/include/c++/4.0.2/streambuf \ + /usr/include/c++/4.0.2/bits/streambuf.tcc \ + /usr/include/c++/4.0.2/bits/basic_ios.h \ + /usr/include/c++/4.0.2/bits/streambuf_iterator.h \ + /usr/include/c++/4.0.2/bits/locale_facets.h \ + /usr/include/c++/4.0.2/cwctype /usr/include/wctype.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/ctype_base.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/ctype_inline.h \ + /usr/include/c++/4.0.2/bits/codecvt.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/time_members.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/messages_members.h \ + /usr/include/c++/4.0.2/bits/basic_ios.tcc \ + /usr/include/c++/4.0.2/bits/ostream.tcc /usr/include/c++/4.0.2/locale \ + /usr/include/c++/4.0.2/bits/locale_facets.tcc \ + /usr/include/c++/4.0.2/typeinfo /usr/include/c++/4.0.2/istream \ + /usr/include/c++/4.0.2/bits/istream.tcc \ + /usr/include/c++/4.0.2/bits/stream_iterator.h \ + /usr/include/c++/4.0.2/list /usr/include/c++/4.0.2/bits/stl_list.h \ + /usr/include/c++/4.0.2/bits/list.tcc /usr/include/c++/4.0.2/map \ + /usr/include/c++/4.0.2/bits/stl_tree.h \ + /usr/include/c++/4.0.2/bits/stl_map.h \ + /usr/include/c++/4.0.2/bits/stl_multimap.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qpaintdevice.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qpalette.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qcolor.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qstringlist.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qstrlist.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qptrlist.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qglist.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qptrcollection.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qbrush.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qfont.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qfontmetrics.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qfontinfo.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qsizepolicy.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qtoolbar.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qdockwindow.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qframe.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/GUIBase.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/vectortypes.h \ + /usr/include/c++/4.0.2/vector /usr/include/c++/4.0.2/bits/stl_vector.h \ + /usr/include/c++/4.0.2/bits/stl_bvector.h \ + /usr/include/c++/4.0.2/bits/vector.tcc \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/SimpleObserver.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/state_exports.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/AttributeSubject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/AttributeGroup.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/visitstream.h \ + /usr/include/c++/4.0.2/iostream /usr/include/c++/4.0.2/fstream \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/basic_file.h \ + /usr/include/c++/4.0.2/bits/fstream.tcc \ + /usr/include/c++/4.0.2/backward/strstream \ + /usr/include/c++/4.0.2/backward/backward_warning.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/VisItException.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/misc_exports.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/Subject.h \ + BinnerFilter.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/ViewerProxy.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/viewerproxy_exports.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtSILRestriction.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/dbatts_exports.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/ref_ptr.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtSIL.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtSILCollection.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtSILMatrix.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtTypes.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtSILSet.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qcheckbox.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qbutton.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qkeysequence.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qlabel.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qlayout.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qlineedit.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qspinbox.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qrangecontrol.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qvbox.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qhbox.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qbuttongroup.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qgroupbox.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qradiobutton.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/QvisColorTableButton.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qpushbutton.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qiconset.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qpixmap.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/QvisOpacitySlider.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qwidget.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qrangecontrol.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/QvisColorButton.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qcolor.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qbutton.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/QvisLineStyleWidget.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qwidget.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/QvisLineWidthWidget.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/QvisVariableButton.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/qt/qobjectlist.h +BinnerViewerPluginInfo.o: BinnerViewerPluginInfo.C BinnerPluginInfo.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/OperatorPluginInfo.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/plugin_exports.h \ + /usr/include/stdio.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/gnu/stubs.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/wordsize.h \ + /usr/include/bits/typesizes.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h /usr/include/bits/wchar.h \ + /usr/include/gconv.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/operator_plugin_exports.h \ + BinnerFilter.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/AttributeSubject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/state_exports.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/AttributeGroup.h \ + /usr/include/c++/4.0.2/vector /usr/include/c++/4.0.2/bits/functexcept.h \ + /usr/include/c++/4.0.2/exception_defines.h \ + /usr/include/c++/4.0.2/bits/stl_algobase.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++config.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/os_defines.h \ + /usr/include/c++/4.0.2/cstring /usr/include/c++/4.0.2/cstddef \ + /usr/include/string.h /usr/include/xlocale.h \ + /usr/include/c++/4.0.2/climits \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/limits.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ + /usr/include/c++/4.0.2/cstdlib /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/bits/sched.h \ + /usr/include/alloca.h /usr/include/c++/4.0.2/iosfwd \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++locale.h \ + /usr/include/c++/4.0.2/cstdio /usr/include/c++/4.0.2/clocale \ + /usr/include/locale.h /usr/include/bits/locale.h \ + /usr/include/langinfo.h /usr/include/nl_types.h /usr/include/iconv.h \ + /usr/include/libintl.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++io.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/gthr.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/gthr-default.h \ + /usr/include/pthread.h /usr/include/sched.h /usr/include/signal.h \ + /usr/include/bits/initspin.h /usr/include/bits/sigthread.h \ + /usr/include/unistd.h /usr/include/bits/posix_opt.h \ + /usr/include/bits/environments.h /usr/include/bits/confname.h \ + /usr/include/getopt.h /usr/include/c++/4.0.2/cctype \ + /usr/include/ctype.h /usr/include/c++/4.0.2/bits/stringfwd.h \ + /usr/include/c++/4.0.2/bits/postypes.h /usr/include/c++/4.0.2/cwchar \ + /usr/include/c++/4.0.2/ctime /usr/include/stdint.h \ + /usr/include/c++/4.0.2/bits/stl_pair.h \ + /usr/include/c++/4.0.2/bits/cpp_type_traits.h \ + /usr/include/c++/4.0.2/bits/stl_iterator_base_types.h \ + /usr/include/c++/4.0.2/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/4.0.2/bits/concept_check.h \ + /usr/include/c++/4.0.2/bits/stl_iterator.h \ + /usr/include/c++/4.0.2/debug/debug.h /usr/include/c++/4.0.2/cassert \ + /usr/include/assert.h /usr/include/c++/4.0.2/bits/allocator.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++allocator.h \ + /usr/include/c++/4.0.2/ext/new_allocator.h /usr/include/c++/4.0.2/new \ + /usr/include/c++/4.0.2/exception \ + /usr/include/c++/4.0.2/bits/stl_construct.h \ + /usr/include/c++/4.0.2/bits/stl_uninitialized.h \ + /usr/include/c++/4.0.2/bits/stl_vector.h \ + /usr/include/c++/4.0.2/bits/stl_bvector.h \ + /usr/include/c++/4.0.2/bits/vector.tcc /usr/include/c++/4.0.2/string \ + /usr/include/c++/4.0.2/bits/char_traits.h /usr/include/c++/4.0.2/memory \ + /usr/include/c++/4.0.2/bits/stl_raw_storage_iter.h \ + /usr/include/c++/4.0.2/limits \ + /usr/include/c++/4.0.2/bits/stl_function.h \ + /usr/include/c++/4.0.2/bits/basic_string.h \ + /usr/include/c++/4.0.2/bits/atomicity.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/atomic_word.h \ + /usr/include/c++/4.0.2/algorithm /usr/include/c++/4.0.2/bits/stl_algo.h \ + /usr/include/c++/4.0.2/bits/stl_heap.h \ + /usr/include/c++/4.0.2/bits/stl_tempbuf.h \ + /usr/include/c++/4.0.2/bits/basic_string.tcc \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/visitstream.h \ + /usr/include/c++/4.0.2/iostream /usr/include/c++/4.0.2/ostream \ + /usr/include/c++/4.0.2/ios /usr/include/c++/4.0.2/bits/localefwd.h \ + /usr/include/c++/4.0.2/bits/ios_base.h \ + /usr/include/c++/4.0.2/bits/locale_classes.h \ + /usr/include/c++/4.0.2/streambuf \ + /usr/include/c++/4.0.2/bits/streambuf.tcc \ + /usr/include/c++/4.0.2/bits/basic_ios.h \ + /usr/include/c++/4.0.2/bits/streambuf_iterator.h \ + /usr/include/c++/4.0.2/bits/locale_facets.h \ + /usr/include/c++/4.0.2/cwctype /usr/include/wctype.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/ctype_base.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/ctype_inline.h \ + /usr/include/c++/4.0.2/bits/codecvt.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/time_members.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/messages_members.h \ + /usr/include/c++/4.0.2/bits/basic_ios.tcc \ + /usr/include/c++/4.0.2/bits/ostream.tcc /usr/include/c++/4.0.2/locale \ + /usr/include/c++/4.0.2/bits/locale_facets.tcc \ + /usr/include/c++/4.0.2/typeinfo /usr/include/c++/4.0.2/istream \ + /usr/include/c++/4.0.2/bits/istream.tcc /usr/include/c++/4.0.2/fstream \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/basic_file.h \ + /usr/include/c++/4.0.2/bits/fstream.tcc \ + /usr/include/c++/4.0.2/backward/strstream \ + /usr/include/c++/4.0.2/backward/backward_warning.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/VisItException.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/misc_exports.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/vectortypes.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/Subject.h \ + icon.xpm +BinnerEnginePluginInfo.o: BinnerEnginePluginInfo.C BinnerPluginInfo.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/OperatorPluginInfo.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/plugin_exports.h \ + /usr/include/stdio.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/gnu/stubs.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/wordsize.h \ + /usr/include/bits/typesizes.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h /usr/include/bits/wchar.h \ + /usr/include/gconv.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/operator_plugin_exports.h \ + avtBinnerFilter.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtPluginStreamer.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/pipeline_exports.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtStreamer.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtDataTreeStreamer.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtDatasetToDatasetFilter.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtDatasetToDataObjectFilter.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtFilter.h \ + /usr/include/c++/4.0.2/vector /usr/include/c++/4.0.2/bits/functexcept.h \ + /usr/include/c++/4.0.2/exception_defines.h \ + /usr/include/c++/4.0.2/bits/stl_algobase.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++config.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/os_defines.h \ + /usr/include/c++/4.0.2/cstring /usr/include/c++/4.0.2/cstddef \ + /usr/include/string.h /usr/include/xlocale.h \ + /usr/include/c++/4.0.2/climits \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/limits.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ + /usr/include/c++/4.0.2/cstdlib /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/bits/sched.h \ + /usr/include/alloca.h /usr/include/c++/4.0.2/iosfwd \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++locale.h \ + /usr/include/c++/4.0.2/cstdio /usr/include/c++/4.0.2/clocale \ + /usr/include/locale.h /usr/include/bits/locale.h \ + /usr/include/langinfo.h /usr/include/nl_types.h /usr/include/iconv.h \ + /usr/include/libintl.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++io.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/gthr.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/gthr-default.h \ + /usr/include/pthread.h /usr/include/sched.h /usr/include/signal.h \ + /usr/include/bits/initspin.h /usr/include/bits/sigthread.h \ + /usr/include/unistd.h /usr/include/bits/posix_opt.h \ + /usr/include/bits/environments.h /usr/include/bits/confname.h \ + /usr/include/getopt.h /usr/include/c++/4.0.2/cctype \ + /usr/include/ctype.h /usr/include/c++/4.0.2/bits/stringfwd.h \ + /usr/include/c++/4.0.2/bits/postypes.h /usr/include/c++/4.0.2/cwchar \ + /usr/include/c++/4.0.2/ctime /usr/include/stdint.h \ + /usr/include/c++/4.0.2/bits/stl_pair.h \ + /usr/include/c++/4.0.2/bits/cpp_type_traits.h \ + /usr/include/c++/4.0.2/bits/stl_iterator_base_types.h \ + /usr/include/c++/4.0.2/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/4.0.2/bits/concept_check.h \ + /usr/include/c++/4.0.2/bits/stl_iterator.h \ + /usr/include/c++/4.0.2/debug/debug.h /usr/include/c++/4.0.2/cassert \ + /usr/include/assert.h /usr/include/c++/4.0.2/bits/allocator.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++allocator.h \ + /usr/include/c++/4.0.2/ext/new_allocator.h /usr/include/c++/4.0.2/new \ + /usr/include/c++/4.0.2/exception \ + /usr/include/c++/4.0.2/bits/stl_construct.h \ + /usr/include/c++/4.0.2/bits/stl_uninitialized.h \ + /usr/include/c++/4.0.2/bits/stl_vector.h \ + /usr/include/c++/4.0.2/bits/stl_bvector.h \ + /usr/include/c++/4.0.2/bits/vector.tcc \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtDataObjectSource.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtDataObject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/ref_ptr.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/visitstream.h \ + /usr/include/c++/4.0.2/iostream /usr/include/c++/4.0.2/ostream \ + /usr/include/c++/4.0.2/ios /usr/include/c++/4.0.2/bits/char_traits.h \ + /usr/include/c++/4.0.2/bits/localefwd.h \ + /usr/include/c++/4.0.2/bits/ios_base.h \ + /usr/include/c++/4.0.2/bits/atomicity.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/atomic_word.h \ + /usr/include/c++/4.0.2/bits/locale_classes.h \ + /usr/include/c++/4.0.2/string /usr/include/c++/4.0.2/memory \ + /usr/include/c++/4.0.2/bits/stl_raw_storage_iter.h \ + /usr/include/c++/4.0.2/limits \ + /usr/include/c++/4.0.2/bits/stl_function.h \ + /usr/include/c++/4.0.2/bits/basic_string.h \ + /usr/include/c++/4.0.2/algorithm /usr/include/c++/4.0.2/bits/stl_algo.h \ + /usr/include/c++/4.0.2/bits/stl_heap.h \ + /usr/include/c++/4.0.2/bits/stl_tempbuf.h \ + /usr/include/c++/4.0.2/bits/basic_string.tcc \ + /usr/include/c++/4.0.2/streambuf \ + /usr/include/c++/4.0.2/bits/streambuf.tcc \ + /usr/include/c++/4.0.2/bits/basic_ios.h \ + /usr/include/c++/4.0.2/bits/streambuf_iterator.h \ + /usr/include/c++/4.0.2/bits/locale_facets.h \ + /usr/include/c++/4.0.2/cwctype /usr/include/wctype.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/ctype_base.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/ctype_inline.h \ + /usr/include/c++/4.0.2/bits/codecvt.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/time_members.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/messages_members.h \ + /usr/include/c++/4.0.2/bits/basic_ios.tcc \ + /usr/include/c++/4.0.2/bits/ostream.tcc /usr/include/c++/4.0.2/locale \ + /usr/include/c++/4.0.2/bits/locale_facets.tcc \ + /usr/include/c++/4.0.2/typeinfo /usr/include/c++/4.0.2/istream \ + /usr/include/c++/4.0.2/bits/istream.tcc /usr/include/c++/4.0.2/fstream \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/basic_file.h \ + /usr/include/c++/4.0.2/bits/fstream.tcc \ + /usr/include/c++/4.0.2/backward/strstream \ + /usr/include/c++/4.0.2/backward/backward_warning.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtDataObjectInformation.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtDataAttributes.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/VisWindowTypes.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtVector.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/math_exports.h \ + /usr/include/math.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/viswindow_exports.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtTypes.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/dbatts_exports.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtMatrix.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtDataValidity.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtPipelineSpecification.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtDataSpecification.h \ + /usr/include/c++/4.0.2/map /usr/include/c++/4.0.2/bits/stl_tree.h \ + /usr/include/c++/4.0.2/bits/stl_map.h \ + /usr/include/c++/4.0.2/bits/stl_multimap.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/array_ref_ptr.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtSILRestriction.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtSIL.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtSILCollection.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtSILMatrix.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtSILSet.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtGhostData.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtDataSelection.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/ImproperUseException.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtexception_exports.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/PipelineException.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/VisItException.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/misc_exports.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtDataObjectSink.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtDatasetSink.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtDataset.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtCommonDataFunctions.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtDataRepresentation.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtDataTree.h \ + /usr/include/c++/4.0.2/set /usr/include/c++/4.0.2/bits/stl_set.h \ + /usr/include/c++/4.0.2/bits/stl_multiset.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtDataObjectToDatasetFilter.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtDatasetSource.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtPluginFilter.h \ + BinnerFilter.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/AttributeSubject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/state_exports.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/AttributeGroup.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/vectortypes.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/Subject.h +BinnerScriptingPluginInfo.o: BinnerScriptingPluginInfo.C \ + BinnerPluginInfo.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/OperatorPluginInfo.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/plugin_exports.h \ + /usr/include/stdio.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/gnu/stubs.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/wordsize.h \ + /usr/include/bits/typesizes.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h /usr/include/bits/wchar.h \ + /usr/include/gconv.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/operator_plugin_exports.h \ + PyBinner.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/python/Python.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/python/patchlevel.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/python/config.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/limits.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ + /usr/include/string.h /usr/include/xlocale.h /usr/include/errno.h \ + /usr/include/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/asm/errno.h /usr/include/asm-x86_64/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/sys/types.h /usr/include/time.h \ + /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/sched.h /usr/include/alloca.h /usr/include/assert.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/python/pyport.h \ + /usr/include/math.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h /usr/include/sys/time.h \ + /usr/include/sys/stat.h /usr/include/bits/stat.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/python/pymem.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/python/object.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/python/objimpl.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/python/pydebug.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/python/unicodeobject.h \ + /usr/include/ctype.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/python/intobject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/python/longobject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/python/floatobject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/python/complexobject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/python/rangeobject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/python/stringobject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/python/bufferobject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/python/tupleobject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/python/listobject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/python/dictobject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/python/methodobject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/python/moduleobject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/python/funcobject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/python/classobject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/python/fileobject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/python/cobject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/python/traceback.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/python/sliceobject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/python/cellobject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/python/codecs.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/python/pyerrors.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/python/pystate.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/python/modsupport.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/python/ceval.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/python/pythonrun.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/python/sysmodule.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/python/intrcheck.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/python/import.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/python/abstract.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/python/pyfpe.h \ + BinnerFilter.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/AttributeSubject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/state_exports.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/AttributeGroup.h \ + /usr/include/c++/4.0.2/vector /usr/include/c++/4.0.2/bits/functexcept.h \ + /usr/include/c++/4.0.2/exception_defines.h \ + /usr/include/c++/4.0.2/bits/stl_algobase.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++config.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/os_defines.h \ + /usr/include/c++/4.0.2/cstring /usr/include/c++/4.0.2/cstddef \ + /usr/include/c++/4.0.2/climits /usr/include/c++/4.0.2/cstdlib \ + /usr/include/c++/4.0.2/iosfwd \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++locale.h \ + /usr/include/c++/4.0.2/cstdio /usr/include/c++/4.0.2/clocale \ + /usr/include/locale.h /usr/include/bits/locale.h \ + /usr/include/langinfo.h /usr/include/nl_types.h /usr/include/iconv.h \ + /usr/include/libintl.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++io.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/gthr.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/gthr-default.h \ + /usr/include/pthread.h /usr/include/sched.h /usr/include/signal.h \ + /usr/include/bits/initspin.h /usr/include/bits/sigthread.h \ + /usr/include/unistd.h /usr/include/bits/posix_opt.h \ + /usr/include/bits/environments.h /usr/include/bits/confname.h \ + /usr/include/getopt.h /usr/include/c++/4.0.2/cctype \ + /usr/include/ctype.h /usr/include/c++/4.0.2/bits/stringfwd.h \ + /usr/include/c++/4.0.2/bits/postypes.h /usr/include/c++/4.0.2/cwchar \ + /usr/include/c++/4.0.2/ctime /usr/include/stdint.h \ + /usr/include/c++/4.0.2/bits/stl_pair.h \ + /usr/include/c++/4.0.2/bits/cpp_type_traits.h \ + /usr/include/c++/4.0.2/bits/stl_iterator_base_types.h \ + /usr/include/c++/4.0.2/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/4.0.2/bits/concept_check.h \ + /usr/include/c++/4.0.2/bits/stl_iterator.h \ + /usr/include/c++/4.0.2/debug/debug.h /usr/include/c++/4.0.2/cassert \ + /usr/include/c++/4.0.2/bits/allocator.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++allocator.h \ + /usr/include/c++/4.0.2/ext/new_allocator.h /usr/include/c++/4.0.2/new \ + /usr/include/c++/4.0.2/exception \ + /usr/include/c++/4.0.2/bits/stl_construct.h \ + /usr/include/c++/4.0.2/bits/stl_uninitialized.h \ + /usr/include/c++/4.0.2/bits/stl_vector.h \ + /usr/include/c++/4.0.2/bits/stl_bvector.h \ + /usr/include/c++/4.0.2/bits/vector.tcc /usr/include/c++/4.0.2/string \ + /usr/include/c++/4.0.2/bits/char_traits.h /usr/include/c++/4.0.2/memory \ + /usr/include/c++/4.0.2/bits/stl_raw_storage_iter.h \ + /usr/include/c++/4.0.2/limits \ + /usr/include/c++/4.0.2/bits/stl_function.h \ + /usr/include/c++/4.0.2/bits/basic_string.h \ + /usr/include/c++/4.0.2/bits/atomicity.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/atomic_word.h \ + /usr/include/c++/4.0.2/algorithm /usr/include/c++/4.0.2/bits/stl_algo.h \ + /usr/include/c++/4.0.2/bits/stl_heap.h \ + /usr/include/c++/4.0.2/bits/stl_tempbuf.h \ + /usr/include/c++/4.0.2/bits/basic_string.tcc \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/visitstream.h \ + /usr/include/c++/4.0.2/iostream /usr/include/c++/4.0.2/ostream \ + /usr/include/c++/4.0.2/ios /usr/include/c++/4.0.2/bits/localefwd.h \ + /usr/include/c++/4.0.2/bits/ios_base.h \ + /usr/include/c++/4.0.2/bits/locale_classes.h \ + /usr/include/c++/4.0.2/streambuf \ + /usr/include/c++/4.0.2/bits/streambuf.tcc \ + /usr/include/c++/4.0.2/bits/basic_ios.h \ + /usr/include/c++/4.0.2/bits/streambuf_iterator.h \ + /usr/include/c++/4.0.2/bits/locale_facets.h \ + /usr/include/c++/4.0.2/cwctype /usr/include/wctype.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/ctype_base.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/ctype_inline.h \ + /usr/include/c++/4.0.2/bits/codecvt.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/time_members.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/messages_members.h \ + /usr/include/c++/4.0.2/bits/basic_ios.tcc \ + /usr/include/c++/4.0.2/bits/ostream.tcc /usr/include/c++/4.0.2/locale \ + /usr/include/c++/4.0.2/bits/locale_facets.tcc \ + /usr/include/c++/4.0.2/typeinfo /usr/include/c++/4.0.2/istream \ + /usr/include/c++/4.0.2/bits/istream.tcc /usr/include/c++/4.0.2/fstream \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/basic_file.h \ + /usr/include/c++/4.0.2/bits/fstream.tcc \ + /usr/include/c++/4.0.2/backward/strstream \ + /usr/include/c++/4.0.2/backward/backward_warning.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/VisItException.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/misc_exports.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/vectortypes.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/Subject.h +PyBinner.o: PyBinner.C PyBinner.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/python/Python.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/python/patchlevel.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/python/config.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/limits.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/syslimits.h \ + /usr/include/limits.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/gnu/stubs.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ + /usr/include/bits/stdio_lim.h /usr/include/stdio.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/wordsize.h \ + /usr/include/bits/typesizes.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h /usr/include/bits/wchar.h \ + /usr/include/gconv.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/stdarg.h \ + /usr/include/bits/sys_errlist.h /usr/include/bits/stdio.h \ + /usr/include/string.h /usr/include/xlocale.h /usr/include/errno.h \ + /usr/include/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/asm/errno.h /usr/include/asm-x86_64/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/sys/types.h /usr/include/time.h \ + /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/sched.h /usr/include/alloca.h /usr/include/assert.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/python/pyport.h \ + /usr/include/math.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h /usr/include/sys/time.h \ + /usr/include/sys/stat.h /usr/include/bits/stat.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/python/pymem.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/python/object.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/python/objimpl.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/python/pydebug.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/python/unicodeobject.h \ + /usr/include/ctype.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/python/intobject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/python/longobject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/python/floatobject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/python/complexobject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/python/rangeobject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/python/stringobject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/python/bufferobject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/python/tupleobject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/python/listobject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/python/dictobject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/python/methodobject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/python/moduleobject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/python/funcobject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/python/classobject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/python/fileobject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/python/cobject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/python/traceback.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/python/sliceobject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/python/cellobject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/python/codecs.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/python/pyerrors.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/python/pystate.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/python/modsupport.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/python/ceval.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/python/pythonrun.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/python/sysmodule.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/python/intrcheck.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/python/import.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/python/abstract.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/python/pyfpe.h \ + BinnerFilter.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/AttributeSubject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/state_exports.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/AttributeGroup.h \ + /usr/include/c++/4.0.2/vector /usr/include/c++/4.0.2/bits/functexcept.h \ + /usr/include/c++/4.0.2/exception_defines.h \ + /usr/include/c++/4.0.2/bits/stl_algobase.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++config.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/os_defines.h \ + /usr/include/c++/4.0.2/cstring /usr/include/c++/4.0.2/cstddef \ + /usr/include/c++/4.0.2/climits /usr/include/c++/4.0.2/cstdlib \ + /usr/include/c++/4.0.2/iosfwd \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++locale.h \ + /usr/include/c++/4.0.2/cstdio /usr/include/c++/4.0.2/clocale \ + /usr/include/locale.h /usr/include/bits/locale.h \ + /usr/include/langinfo.h /usr/include/nl_types.h /usr/include/iconv.h \ + /usr/include/libintl.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++io.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/gthr.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/gthr-default.h \ + /usr/include/pthread.h /usr/include/sched.h /usr/include/signal.h \ + /usr/include/bits/initspin.h /usr/include/bits/sigthread.h \ + /usr/include/unistd.h /usr/include/bits/posix_opt.h \ + /usr/include/bits/environments.h /usr/include/bits/confname.h \ + /usr/include/getopt.h /usr/include/c++/4.0.2/cctype \ + /usr/include/ctype.h /usr/include/c++/4.0.2/bits/stringfwd.h \ + /usr/include/c++/4.0.2/bits/postypes.h /usr/include/c++/4.0.2/cwchar \ + /usr/include/c++/4.0.2/ctime /usr/include/stdint.h \ + /usr/include/c++/4.0.2/bits/stl_pair.h \ + /usr/include/c++/4.0.2/bits/cpp_type_traits.h \ + /usr/include/c++/4.0.2/bits/stl_iterator_base_types.h \ + /usr/include/c++/4.0.2/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/4.0.2/bits/concept_check.h \ + /usr/include/c++/4.0.2/bits/stl_iterator.h \ + /usr/include/c++/4.0.2/debug/debug.h /usr/include/c++/4.0.2/cassert \ + /usr/include/c++/4.0.2/bits/allocator.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++allocator.h \ + /usr/include/c++/4.0.2/ext/new_allocator.h /usr/include/c++/4.0.2/new \ + /usr/include/c++/4.0.2/exception \ + /usr/include/c++/4.0.2/bits/stl_construct.h \ + /usr/include/c++/4.0.2/bits/stl_uninitialized.h \ + /usr/include/c++/4.0.2/bits/stl_vector.h \ + /usr/include/c++/4.0.2/bits/stl_bvector.h \ + /usr/include/c++/4.0.2/bits/vector.tcc /usr/include/c++/4.0.2/string \ + /usr/include/c++/4.0.2/bits/char_traits.h /usr/include/c++/4.0.2/memory \ + /usr/include/c++/4.0.2/bits/stl_raw_storage_iter.h \ + /usr/include/c++/4.0.2/limits \ + /usr/include/c++/4.0.2/bits/stl_function.h \ + /usr/include/c++/4.0.2/bits/basic_string.h \ + /usr/include/c++/4.0.2/bits/atomicity.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/atomic_word.h \ + /usr/include/c++/4.0.2/algorithm /usr/include/c++/4.0.2/bits/stl_algo.h \ + /usr/include/c++/4.0.2/bits/stl_heap.h \ + /usr/include/c++/4.0.2/bits/stl_tempbuf.h \ + /usr/include/c++/4.0.2/bits/basic_string.tcc \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/visitstream.h \ + /usr/include/c++/4.0.2/iostream /usr/include/c++/4.0.2/ostream \ + /usr/include/c++/4.0.2/ios /usr/include/c++/4.0.2/bits/localefwd.h \ + /usr/include/c++/4.0.2/bits/ios_base.h \ + /usr/include/c++/4.0.2/bits/locale_classes.h \ + /usr/include/c++/4.0.2/streambuf \ + /usr/include/c++/4.0.2/bits/streambuf.tcc \ + /usr/include/c++/4.0.2/bits/basic_ios.h \ + /usr/include/c++/4.0.2/bits/streambuf_iterator.h \ + /usr/include/c++/4.0.2/bits/locale_facets.h \ + /usr/include/c++/4.0.2/cwctype /usr/include/wctype.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/ctype_base.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/ctype_inline.h \ + /usr/include/c++/4.0.2/bits/codecvt.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/time_members.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/messages_members.h \ + /usr/include/c++/4.0.2/bits/basic_ios.tcc \ + /usr/include/c++/4.0.2/bits/ostream.tcc /usr/include/c++/4.0.2/locale \ + /usr/include/c++/4.0.2/bits/locale_facets.tcc \ + /usr/include/c++/4.0.2/typeinfo /usr/include/c++/4.0.2/istream \ + /usr/include/c++/4.0.2/bits/istream.tcc /usr/include/c++/4.0.2/fstream \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/basic_file.h \ + /usr/include/c++/4.0.2/bits/fstream.tcc \ + /usr/include/c++/4.0.2/backward/strstream \ + /usr/include/c++/4.0.2/backward/backward_warning.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/VisItException.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/misc_exports.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/vectortypes.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/Subject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/ObserverToCallback.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/Observer.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/SimpleObserver.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/ColorAttribute.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/snprintf.h +avtBinnerFilter.o: avtBinnerFilter.C avtBinnerFilter.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtPluginStreamer.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/pipeline_exports.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtStreamer.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtDataTreeStreamer.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtDatasetToDatasetFilter.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtDatasetToDataObjectFilter.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtFilter.h \ + /usr/include/c++/4.0.2/vector /usr/include/c++/4.0.2/bits/functexcept.h \ + /usr/include/c++/4.0.2/exception_defines.h \ + /usr/include/c++/4.0.2/bits/stl_algobase.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++config.h \ + /usr/include/bits/wordsize.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/os_defines.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/gnu/stubs.h /usr/include/c++/4.0.2/cstring \ + /usr/include/c++/4.0.2/cstddef \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/stddef.h \ + /usr/include/string.h /usr/include/xlocale.h \ + /usr/include/c++/4.0.2/climits \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/limits.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ + /usr/include/bits/stdio_lim.h /usr/include/c++/4.0.2/cstdlib \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/sys/types.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/bits/sched.h \ + /usr/include/alloca.h /usr/include/c++/4.0.2/iosfwd \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++locale.h \ + /usr/include/c++/4.0.2/cstdio /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h /usr/include/bits/wchar.h \ + /usr/include/gconv.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/stdarg.h \ + /usr/include/bits/sys_errlist.h /usr/include/bits/stdio.h \ + /usr/include/c++/4.0.2/clocale /usr/include/locale.h \ + /usr/include/bits/locale.h /usr/include/langinfo.h \ + /usr/include/nl_types.h /usr/include/iconv.h /usr/include/libintl.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++io.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/gthr.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/gthr-default.h \ + /usr/include/pthread.h /usr/include/sched.h /usr/include/signal.h \ + /usr/include/bits/initspin.h /usr/include/bits/sigthread.h \ + /usr/include/unistd.h /usr/include/bits/posix_opt.h \ + /usr/include/bits/environments.h /usr/include/bits/confname.h \ + /usr/include/getopt.h /usr/include/c++/4.0.2/cctype \ + /usr/include/ctype.h /usr/include/c++/4.0.2/bits/stringfwd.h \ + /usr/include/c++/4.0.2/bits/postypes.h /usr/include/c++/4.0.2/cwchar \ + /usr/include/c++/4.0.2/ctime /usr/include/stdint.h \ + /usr/include/c++/4.0.2/bits/stl_pair.h \ + /usr/include/c++/4.0.2/bits/cpp_type_traits.h \ + /usr/include/c++/4.0.2/bits/stl_iterator_base_types.h \ + /usr/include/c++/4.0.2/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/4.0.2/bits/concept_check.h \ + /usr/include/c++/4.0.2/bits/stl_iterator.h \ + /usr/include/c++/4.0.2/debug/debug.h /usr/include/c++/4.0.2/cassert \ + /usr/include/assert.h /usr/include/c++/4.0.2/bits/allocator.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++allocator.h \ + /usr/include/c++/4.0.2/ext/new_allocator.h /usr/include/c++/4.0.2/new \ + /usr/include/c++/4.0.2/exception \ + /usr/include/c++/4.0.2/bits/stl_construct.h \ + /usr/include/c++/4.0.2/bits/stl_uninitialized.h \ + /usr/include/c++/4.0.2/bits/stl_vector.h \ + /usr/include/c++/4.0.2/bits/stl_bvector.h \ + /usr/include/c++/4.0.2/bits/vector.tcc \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtDataObjectSource.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtDataObject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/ref_ptr.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/visitstream.h \ + /usr/include/c++/4.0.2/iostream /usr/include/c++/4.0.2/ostream \ + /usr/include/c++/4.0.2/ios /usr/include/c++/4.0.2/bits/char_traits.h \ + /usr/include/c++/4.0.2/bits/localefwd.h \ + /usr/include/c++/4.0.2/bits/ios_base.h \ + /usr/include/c++/4.0.2/bits/atomicity.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/atomic_word.h \ + /usr/include/c++/4.0.2/bits/locale_classes.h \ + /usr/include/c++/4.0.2/string /usr/include/c++/4.0.2/memory \ + /usr/include/c++/4.0.2/bits/stl_raw_storage_iter.h \ + /usr/include/c++/4.0.2/limits \ + /usr/include/c++/4.0.2/bits/stl_function.h \ + /usr/include/c++/4.0.2/bits/basic_string.h \ + /usr/include/c++/4.0.2/algorithm /usr/include/c++/4.0.2/bits/stl_algo.h \ + /usr/include/c++/4.0.2/bits/stl_heap.h \ + /usr/include/c++/4.0.2/bits/stl_tempbuf.h \ + /usr/include/c++/4.0.2/bits/basic_string.tcc \ + /usr/include/c++/4.0.2/streambuf \ + /usr/include/c++/4.0.2/bits/streambuf.tcc \ + /usr/include/c++/4.0.2/bits/basic_ios.h \ + /usr/include/c++/4.0.2/bits/streambuf_iterator.h \ + /usr/include/c++/4.0.2/bits/locale_facets.h \ + /usr/include/c++/4.0.2/cwctype /usr/include/wctype.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/ctype_base.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/ctype_inline.h \ + /usr/include/c++/4.0.2/bits/codecvt.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/time_members.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/messages_members.h \ + /usr/include/c++/4.0.2/bits/basic_ios.tcc \ + /usr/include/c++/4.0.2/bits/ostream.tcc /usr/include/c++/4.0.2/locale \ + /usr/include/c++/4.0.2/bits/locale_facets.tcc \ + /usr/include/c++/4.0.2/typeinfo /usr/include/c++/4.0.2/istream \ + /usr/include/c++/4.0.2/bits/istream.tcc /usr/include/c++/4.0.2/fstream \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/basic_file.h \ + /usr/include/c++/4.0.2/bits/fstream.tcc \ + /usr/include/c++/4.0.2/backward/strstream \ + /usr/include/c++/4.0.2/backward/backward_warning.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtDataObjectInformation.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtDataAttributes.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/VisWindowTypes.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtVector.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/math_exports.h \ + /usr/include/math.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/viswindow_exports.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtTypes.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/dbatts_exports.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtMatrix.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtDataValidity.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtPipelineSpecification.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtDataSpecification.h \ + /usr/include/c++/4.0.2/map /usr/include/c++/4.0.2/bits/stl_tree.h \ + /usr/include/c++/4.0.2/bits/stl_map.h \ + /usr/include/c++/4.0.2/bits/stl_multimap.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/array_ref_ptr.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtSILRestriction.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtSIL.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtSILCollection.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtSILMatrix.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtSILSet.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtGhostData.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtDataSelection.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/ImproperUseException.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtexception_exports.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/PipelineException.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/VisItException.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/misc_exports.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtDataObjectSink.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtDatasetSink.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtDataset.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtCommonDataFunctions.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtDataRepresentation.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtDataTree.h \ + /usr/include/c++/4.0.2/set /usr/include/c++/4.0.2/bits/stl_set.h \ + /usr/include/c++/4.0.2/bits/stl_multiset.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtDataObjectToDatasetFilter.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtDatasetSource.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtPluginFilter.h \ + BinnerFilter.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/AttributeSubject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/state_exports.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/AttributeGroup.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/vectortypes.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/Subject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtDatasetExaminer.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/avtExtents.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common/vtkStructuredGrid.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common/vtkPointSet.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common/vtkDataSet.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common/vtkDataObject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common/vtkObject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common/vtkObjectBase.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common/vtkIndent.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common/vtkSystemIncludes.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common/vtkWin32Header.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/vtkConfigure.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common/vtkIOStream.h \ + /usr/include/c++/4.0.2/iomanip /usr/include/c++/4.0.2/functional \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common/vtkIdType.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common/vtkOStreamWrapper.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common/vtkOStrStreamWrapper.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common/vtkSetGet.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common/vtkTimeStamp.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common/vtkPoints.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common/vtkDataArray.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common/vtkStructuredData.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common/vtkUnsignedCharArray.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common/vtkDataArray.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common/vtkFloatArray.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common/vtkPointData.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common/vtkDataSetAttributes.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common/vtkFieldData.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common/vtkPoints.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common/vtkMath.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit/InvalidDimensionsException.h diff --git a/visit_plugins/operators/BinnerFilter/Binner.xml b/visit_plugins/operators/BinnerFilter/Binner.xml new file mode 100644 index 0000000..424121a --- /dev/null +++ b/visit_plugins/operators/BinnerFilter/Binner.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/visit_plugins/operators/BinnerFilter/BinnerCommonPluginInfo.C b/visit_plugins/operators/BinnerFilter/BinnerCommonPluginInfo.C new file mode 100644 index 0000000..7fa46eb --- /dev/null +++ b/visit_plugins/operators/BinnerFilter/BinnerCommonPluginInfo.C @@ -0,0 +1,47 @@ +// ************************************************************************* // +// File: BinnerCommonPluginInfo.C +// ************************************************************************* // + +#include +#include + +// **************************************************************************** +// Method: BinnerCommonPluginInfo::AllocAttributes +// +// Purpose: +// Return a pointer to a newly allocated attribute subject. +// +// Returns: A pointer to the newly allocated attribute subject. +// +// Programmer: cristina -- generated by xml2info +// Creation: Thu Mar 30 12:05:26 PDT 2006 +// +// **************************************************************************** + +AttributeSubject * +BinnerCommonPluginInfo::AllocAttributes() +{ + return new Binner; +} + +// **************************************************************************** +// Method: BinnerCommonPluginInfo::CopyAttributes +// +// Purpose: +// Copy a Binner attribute subject. +// +// Arguments: +// to The destination attribute subject. +// from The source attribute subject. +// +// Programmer: cristina -- generated by xml2info +// Creation: Thu Mar 30 12:05:26 PDT 2006 +// +// **************************************************************************** + +void +BinnerCommonPluginInfo::CopyAttributes(AttributeSubject *to, + AttributeSubject *from) +{ + *((Binner *) to) = *((Binner *) from); +} diff --git a/visit_plugins/operators/BinnerFilter/BinnerEnginePluginInfo.C b/visit_plugins/operators/BinnerFilter/BinnerEnginePluginInfo.C new file mode 100644 index 0000000..2772d0f --- /dev/null +++ b/visit_plugins/operators/BinnerFilter/BinnerEnginePluginInfo.C @@ -0,0 +1,44 @@ +// ************************************************************************* // +// File: BinnerEnginePluginInfo.C +// ************************************************************************* // + +#include +#include + +#if defined(__APPLE__) +#define GetEngineInfo Binner_GetEngineInfo +#endif + +// **************************************************************************** +// Function: GetEngineInfo +// +// Purpose: +// Return a new EnginePluginInfo for the Binner operator. +// +// Programmer: cristina -- generated by xml2info +// Creation: Thu Mar 30 12:05:26 PDT 2006 +// +// **************************************************************************** +extern "C" EngineOperatorPluginInfo* GetEngineInfo() +{ + return new BinnerEnginePluginInfo; +} + +// **************************************************************************** +// Method: BinnerEnginePluginInfo::AllocAvtPluginFilter +// +// Purpose: +// Return a pointer to a newly allocated avtPluginFilter. +// +// Returns: A pointer to the newly allocated avtPluginFilter. +// +// Programmer: cristina -- generated by xml2info +// Creation: Thu Mar 30 12:05:26 PDT 2006 +// +// **************************************************************************** + +avtPluginFilter * +BinnerEnginePluginInfo::AllocAvtPluginFilter() +{ + return new avtBinnerFilter; +} diff --git a/visit_plugins/operators/BinnerFilter/BinnerFilter.C b/visit_plugins/operators/BinnerFilter/BinnerFilter.C new file mode 100644 index 0000000..7f5048a --- /dev/null +++ b/visit_plugins/operators/BinnerFilter/BinnerFilter.C @@ -0,0 +1,535 @@ +#include +#include + +// **************************************************************************** +// Method: Binner::Binner +// +// Purpose: +// Constructor for the Binner class. +// +// Note: Autogenerated by xml2atts. +// +// Programmer: xml2atts +// Creation: Thu Mar 30 12:05:25 PDT 2006 +// +// Modifications: +// +// **************************************************************************** + +Binner::Binner() : AttributeSubject("iii") +{ +} + +// **************************************************************************** +// Method: Binner::Binner +// +// Purpose: +// Copy constructor for the Binner class. +// +// Note: Autogenerated by xml2atts. +// +// Programmer: xml2atts +// Creation: Thu Mar 30 12:05:25 PDT 2006 +// +// Modifications: +// +// **************************************************************************** + +Binner::Binner(const Binner &obj) : AttributeSubject("iii") +{ + dim1 = obj.dim1; + dim2 = obj.dim2; + dim3 = obj.dim3; + + SelectAll(); +} + +// **************************************************************************** +// Method: Binner::~Binner +// +// Purpose: +// Destructor for the Binner class. +// +// Note: Autogenerated by xml2atts. +// +// Programmer: xml2atts +// Creation: Thu Mar 30 12:05:25 PDT 2006 +// +// Modifications: +// +// **************************************************************************** + +Binner::~Binner() +{ + // nothing here +} + +// **************************************************************************** +// Method: Binner::operator = +// +// Purpose: +// Assignment operator for the Binner class. +// +// Note: Autogenerated by xml2atts. +// +// Programmer: xml2atts +// Creation: Thu Mar 30 12:05:25 PDT 2006 +// +// Modifications: +// +// **************************************************************************** + +Binner& +Binner::operator = (const Binner &obj) +{ + if (this == &obj) return *this; + dim1 = obj.dim1; + dim2 = obj.dim2; + dim3 = obj.dim3; + + SelectAll(); + return *this; +} + +// **************************************************************************** +// Method: Binner::operator == +// +// Purpose: +// Comparison operator == for the Binner class. +// +// Note: Autogenerated by xml2atts. +// +// Programmer: xml2atts +// Creation: Thu Mar 30 12:05:25 PDT 2006 +// +// Modifications: +// +// **************************************************************************** + +bool +Binner::operator == (const Binner &obj) const +{ + // Create the return value + return ((dim1 == obj.dim1) && + (dim2 == obj.dim2) && + (dim3 == obj.dim3)); +} + +// **************************************************************************** +// Method: Binner::operator != +// +// Purpose: +// Comparison operator != for the Binner class. +// +// Note: Autogenerated by xml2atts. +// +// Programmer: xml2atts +// Creation: Thu Mar 30 12:05:25 PDT 2006 +// +// Modifications: +// +// **************************************************************************** + +bool +Binner::operator != (const Binner &obj) const +{ + return !(this->operator == (obj)); +} + +// **************************************************************************** +// Method: Binner::TypeName +// +// Purpose: +// Type name method for the Binner class. +// +// Note: Autogenerated by xml2atts. +// +// Programmer: xml2atts +// Creation: Thu Mar 30 12:05:25 PDT 2006 +// +// Modifications: +// +// **************************************************************************** + +const std::string +Binner::TypeName() const +{ + return "Binner"; +} + +// **************************************************************************** +// Method: Binner::CopyAttributes +// +// Purpose: +// CopyAttributes method for the Binner class. +// +// Note: Autogenerated by xml2atts. +// +// Programmer: xml2atts +// Creation: Thu Mar 30 12:05:25 PDT 2006 +// +// Modifications: +// +// **************************************************************************** + +bool +Binner::CopyAttributes(const AttributeGroup *atts) +{ + if(TypeName() != atts->TypeName()) + return false; + + // Call assignment operator. + const Binner *tmp = (const Binner *)atts; + *this = *tmp; + + return true; +} + +// **************************************************************************** +// Method: Binner::CreateCompatible +// +// Purpose: +// CreateCompatible method for the Binner class. +// +// Note: Autogenerated by xml2atts. +// +// Programmer: xml2atts +// Creation: Thu Mar 30 12:05:25 PDT 2006 +// +// Modifications: +// +// **************************************************************************** + +AttributeSubject * +Binner::CreateCompatible(const std::string &tname) const +{ + AttributeSubject *retval = 0; + if(TypeName() == tname) + retval = new Binner(*this); + // Other cases could go here too. + + return retval; +} + +// **************************************************************************** +// Method: Binner::NewInstance +// +// Purpose: +// NewInstance method for the Binner class. +// +// Note: Autogenerated by xml2atts. +// +// Programmer: xml2atts +// Creation: Thu Mar 30 12:05:25 PDT 2006 +// +// Modifications: +// +// **************************************************************************** + +AttributeSubject * +Binner::NewInstance(bool copy) const +{ + AttributeSubject *retval = 0; + if(copy) + retval = new Binner(*this); + else + retval = new Binner; + + return retval; +} + +// **************************************************************************** +// Method: Binner::SelectAll +// +// Purpose: +// Selects all attributes. +// +// Note: Autogenerated by xml2atts. +// +// Programmer: xml2atts +// Creation: Thu Mar 30 12:05:25 PDT 2006 +// +// Modifications: +// +// **************************************************************************** + +void +Binner::SelectAll() +{ + Select(0, (void *)&dim1); + Select(1, (void *)&dim2); + Select(2, (void *)&dim3); +} + +/////////////////////////////////////////////////////////////////////////////// +// Persistence methods +/////////////////////////////////////////////////////////////////////////////// + +// **************************************************************************** +// Method: Binner::CreateNode +// +// Purpose: +// This method creates a DataNode representation of the object so it can be saved to a config file. +// +// Note: Autogenerated by xml2atts. +// +// Programmer: xml2atts +// Creation: Thu Mar 30 12:05:25 PDT 2006 +// +// Modifications: +// +// **************************************************************************** + +bool +Binner::CreateNode(DataNode *parentNode, bool completeSave, bool forceAdd) +{ + if(parentNode == 0) + return false; + + Binner defaultObject; + bool addToParent = false; + // Create a node for Binner. + DataNode *node = new DataNode("Binner"); + + if(completeSave || !FieldsEqual(0, &defaultObject)) + { + addToParent = true; + node->AddNode(new DataNode("dim1", dim1)); + } + + if(completeSave || !FieldsEqual(1, &defaultObject)) + { + addToParent = true; + node->AddNode(new DataNode("dim2", dim2)); + } + + if(completeSave || !FieldsEqual(2, &defaultObject)) + { + addToParent = true; + node->AddNode(new DataNode("dim3", dim3)); + } + + + // Add the node to the parent node. + if(addToParent || forceAdd) + parentNode->AddNode(node); + else + delete node; + + return (addToParent || forceAdd); +} + +// **************************************************************************** +// Method: Binner::SetFromNode +// +// Purpose: +// This method sets attributes in this object from values in a DataNode representation of the object. +// +// Note: Autogenerated by xml2atts. +// +// Programmer: xml2atts +// Creation: Thu Mar 30 12:05:25 PDT 2006 +// +// Modifications: +// +// **************************************************************************** + +void +Binner::SetFromNode(DataNode *parentNode) +{ + int i; + if(parentNode == 0) + return; + + DataNode *searchNode = parentNode->GetNode("Binner"); + if(searchNode == 0) + return; + + DataNode *node; + if((node = searchNode->GetNode("dim1")) != 0) + SetDim1(node->AsInt()); + if((node = searchNode->GetNode("dim2")) != 0) + SetDim2(node->AsInt()); + if((node = searchNode->GetNode("dim3")) != 0) + SetDim3(node->AsInt()); +} + +/////////////////////////////////////////////////////////////////////////////// +// Set property methods +/////////////////////////////////////////////////////////////////////////////// + +void +Binner::SetDim1(int dim1_) +{ + dim1 = dim1_; + Select(0, (void *)&dim1); +} + +void +Binner::SetDim2(int dim2_) +{ + dim2 = dim2_; + Select(1, (void *)&dim2); +} + +void +Binner::SetDim3(int dim3_) +{ + dim3 = dim3_; + Select(2, (void *)&dim3); +} + +/////////////////////////////////////////////////////////////////////////////// +// Get property methods +/////////////////////////////////////////////////////////////////////////////// + +int +Binner::GetDim1() const +{ + return dim1; +} + +int +Binner::GetDim2() const +{ + return dim2; +} + +int +Binner::GetDim3() const +{ + return dim3; +} + +/////////////////////////////////////////////////////////////////////////////// +// Keyframing methods +/////////////////////////////////////////////////////////////////////////////// + +// **************************************************************************** +// Method: Binner::GetFieldName +// +// Purpose: +// This method returns the name of a field given its index. +// +// Note: Autogenerated by xml2atts. +// +// Programmer: xml2atts +// Creation: Thu Mar 30 12:05:25 PDT 2006 +// +// Modifications: +// +// **************************************************************************** + +std::string +Binner::GetFieldName(int index) const +{ + switch (index) + { + case 0: return "dim1"; + case 1: return "dim2"; + case 2: return "dim3"; + default: return "invalid index"; + } +} + +// **************************************************************************** +// Method: Binner::GetFieldType +// +// Purpose: +// This method returns the type of a field given its index. +// +// Note: Autogenerated by xml2atts. +// +// Programmer: xml2atts +// Creation: Thu Mar 30 12:05:25 PDT 2006 +// +// Modifications: +// +// **************************************************************************** + +AttributeGroup::FieldType +Binner::GetFieldType(int index) const +{ + switch (index) + { + case 0: return FieldType_int; + case 1: return FieldType_int; + case 2: return FieldType_int; + default: return FieldType_unknown; + } +} + +// **************************************************************************** +// Method: Binner::GetFieldTypeName +// +// Purpose: +// This method returns the name of a field type given its index. +// +// Note: Autogenerated by xml2atts. +// +// Programmer: xml2atts +// Creation: Thu Mar 30 12:05:25 PDT 2006 +// +// Modifications: +// +// **************************************************************************** + +std::string +Binner::GetFieldTypeName(int index) const +{ + switch (index) + { + case 0: return "int"; + case 1: return "int"; + case 2: return "int"; + default: return "invalid index"; + } +} + +// **************************************************************************** +// Method: Binner::FieldsEqual +// +// Purpose: +// This method compares two fields and return true if they are equal. +// +// Note: Autogenerated by xml2atts. +// +// Programmer: xml2atts +// Creation: Thu Mar 30 12:05:25 PDT 2006 +// +// Modifications: +// +// **************************************************************************** + +bool +Binner::FieldsEqual(int index_, const AttributeGroup *rhs) const +{ + const Binner &obj = *((const Binner*)rhs); + bool retval = false; + switch (index_) + { + case 0: + { // new scope + retval = (dim1 == obj.dim1); + } + break; + case 1: + { // new scope + retval = (dim2 == obj.dim2); + } + break; + case 2: + { // new scope + retval = (dim3 == obj.dim3); + } + break; + default: retval = false; + } + + return retval; +} + +/////////////////////////////////////////////////////////////////////////////// +// User-defined methods. +/////////////////////////////////////////////////////////////////////////////// + diff --git a/visit_plugins/operators/BinnerFilter/BinnerFilter.h b/visit_plugins/operators/BinnerFilter/BinnerFilter.h new file mode 100644 index 0000000..bac8ba6 --- /dev/null +++ b/visit_plugins/operators/BinnerFilter/BinnerFilter.h @@ -0,0 +1,66 @@ +#ifndef BINNER_H +#define BINNER_H +#include + +// **************************************************************************** +// Class: Binner +// +// Purpose: +// Bin particles +// +// Notes: Autogenerated by xml2atts. +// +// Programmer: xml2atts +// Creation: Thu Mar 30 12:05:25 PDT 2006 +// +// Modifications: +// +// **************************************************************************** + +class Binner : public AttributeSubject +{ +public: + Binner(); + Binner(const Binner &obj); + virtual ~Binner(); + + virtual Binner& operator = (const Binner &obj); + virtual bool operator == (const Binner &obj) const; + virtual bool operator != (const Binner &obj) const; + + virtual const std::string TypeName() const; + virtual bool CopyAttributes(const AttributeGroup *); + virtual AttributeSubject *CreateCompatible(const std::string &) const; + virtual AttributeSubject *NewInstance(bool) const; + + // Property selection methods + virtual void SelectAll(); + + // Property setting methods + void SetDim1(int dim1_); + void SetDim2(int dim2_); + void SetDim3(int dim3_); + + // Property getting methods + int GetDim1() const; + int GetDim2() const; + int GetDim3() const; + + // Persistence methods + virtual bool CreateNode(DataNode *node, bool completeSave, bool forceAdd); + virtual void SetFromNode(DataNode *node); + + + // Keyframing methods + virtual std::string GetFieldName(int index) const; + virtual AttributeGroup::FieldType GetFieldType(int index) const; + virtual std::string GetFieldTypeName(int index) const; + virtual bool FieldsEqual(int index, const AttributeGroup *rhs) const; + +private: + int dim1; + int dim2; + int dim3; +}; + +#endif diff --git a/visit_plugins/operators/BinnerFilter/BinnerFilter.java b/visit_plugins/operators/BinnerFilter/BinnerFilter.java new file mode 100644 index 0000000..4236fd9 --- /dev/null +++ b/visit_plugins/operators/BinnerFilter/BinnerFilter.java @@ -0,0 +1,116 @@ +package llnl.visit.operators; + +import llnl.visit.AttributeSubject; +import llnl.visit.CommunicationBuffer; +import llnl.visit.Plugin; + +// **************************************************************************** +// Class: Binner +// +// Purpose: +// Bin particles +// +// Notes: Autogenerated by xml2java. +// +// Programmer: xml2java +// Creation: Thu Mar 30 12:05:26 PDT 2006 +// +// Modifications: +// +// **************************************************************************** + +public class Binner extends AttributeSubject implements Plugin +{ + public Binner() + { + super(3); + + dim1 = 0; + dim2 = 0; + dim3 = 0; + } + + public Binner(Binner obj) + { + super(3); + + dim1 = obj.dim1; + dim2 = obj.dim2; + dim3 = obj.dim3; + + SelectAll(); + } + + public boolean equals(Binner obj) + { + // Create the return value + return ((dim1 == obj.dim1) && + (dim2 == obj.dim2) && + (dim3 == obj.dim3)); + } + + public String GetName() { return "Binner"; } + public String GetVersion() { return "1.0"; } + + // Property setting methods + public void SetDim1(int dim1_) + { + dim1 = dim1_; + Select(0); + } + + public void SetDim2(int dim2_) + { + dim2 = dim2_; + Select(1); + } + + public void SetDim3(int dim3_) + { + dim3 = dim3_; + Select(2); + } + + // Property getting methods + public int GetDim1() { return dim1; } + public int GetDim2() { return dim2; } + public int GetDim3() { return dim3; } + + // Write and read methods. + public void WriteAtts(CommunicationBuffer buf) + { + if(WriteSelect(0, buf)) + buf.WriteInt(dim1); + if(WriteSelect(1, buf)) + buf.WriteInt(dim2); + if(WriteSelect(2, buf)) + buf.WriteInt(dim3); + } + + public void ReadAtts(int n, CommunicationBuffer buf) + { + for(int i = 0; i < n; ++i) + { + int index = (int)buf.ReadByte(); + switch(index) + { + case 0: + SetDim1(buf.ReadInt()); + break; + case 1: + SetDim2(buf.ReadInt()); + break; + case 2: + SetDim3(buf.ReadInt()); + break; + } + } + } + + + // Attributes + private int dim1; + private int dim2; + private int dim3; +} + diff --git a/visit_plugins/operators/BinnerFilter/BinnerGUIPluginInfo.C b/visit_plugins/operators/BinnerFilter/BinnerGUIPluginInfo.C new file mode 100644 index 0000000..cb0bec2 --- /dev/null +++ b/visit_plugins/operators/BinnerFilter/BinnerGUIPluginInfo.C @@ -0,0 +1,92 @@ +// ************************************************************************* // +// File: BinnerGUIPluginInfo.C +// ************************************************************************* // + +#include +#include +#include + +#if defined(__APPLE__) +#define GetGUIInfo Binner_GetGUIInfo +#endif + +// **************************************************************************** +// Function: GetGUIInfo +// +// Purpose: +// Return a new GUIPluginInfo for the Binner operator. +// +// Programmer: cristina -- generated by xml2info +// Creation: Thu Mar 30 12:05:26 PDT 2006 +// +// **************************************************************************** +extern "C" GUIOperatorPluginInfo* GetGUIInfo() +{ + return new BinnerGUIPluginInfo; +} + +// **************************************************************************** +// Method: BinnerGUIPluginInfo::GetMenuName +// +// Purpose: +// Return a pointer to the name to use in the GUI menu. +// +// Returns: A pointer to the name to use in the GUI menu. +// +// Programmer: cristina -- generated by xml2info +// Creation: Thu Mar 30 12:05:26 PDT 2006 +// +// **************************************************************************** + +const char * +BinnerGUIPluginInfo::GetMenuName() const +{ + return "Binner"; +} + + +// **************************************************************************** +// Method: BinnerGUIPluginInfo::CreatePluginWindow +// +// Purpose: +// Return a pointer to an operator's attribute window. +// +// Arguments: +// type The type of the operator. +// attr The attribute subject for the operator. +// notepad The notepad to use for posting the window. +// +// Returns: A pointer to the operator's attribute window. +// +// Programmer: cristina -- generated by xml2info +// Creation: Thu Mar 30 12:05:26 PDT 2006 +// +// **************************************************************************** + +QvisPostableWindowObserver * +BinnerGUIPluginInfo::CreatePluginWindow(int type, AttributeSubject *attr, + QvisNotepadArea *notepad) +{ + return new QvisBinnerWindow(type, (Binner *)attr, + "Binner operator attributes", "Binner operator", notepad); +} + +// **************************************************************************** +// Method: BinnerGUIPluginInfo::XPMIconData +// +// Purpose: +// Return a pointer to the icon data. +// +// Returns: A pointer to the icon data. +// +// Programmer: cristina -- generated by xml2info +// Creation: Thu Mar 30 12:05:26 PDT 2006 +// +// **************************************************************************** + +#include +const char ** +BinnerGUIPluginInfo::XPMIconData() const +{ + return icon_xpm; +} diff --git a/visit_plugins/operators/BinnerFilter/BinnerMakefile b/visit_plugins/operators/BinnerFilter/BinnerMakefile new file mode 100644 index 0000000..b574b2d --- /dev/null +++ b/visit_plugins/operators/BinnerFilter/BinnerMakefile @@ -0,0 +1,113 @@ +## +## Programs and options... +## +include /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/make-variables +TOPDIR=/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64 + + +## +## Libraries and includes... +## +VTK_INCLUDE= \ + -I/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk \ + -I/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common \ + -I/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Filtering \ + -I/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Graphics \ + -I/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Hybrid \ + -I/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/IO \ + -I/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Imaging \ + -I/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Rendering +MOC=/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/bin/moc +CXXFLAGS=$(CXXFLAGSORIG) $(QT_CXXFLAGS) $(PY_CXXFLAGS) +CPPFLAGS=$(CPPFLAGSORIG) $(VTK_INCLUDE) -I. -I/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include -I/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit +LDFLAGS=$(LDFLAGSORIG) $(PY_LDFLAGS) -L/d/visusers/cristina/.visit/linux-x86_64/plugins/operators + +## +## Files... +## +PLUGINDIR=operators +PLUGINNAME=BinnerOperator + +WIDGETS=QvisBinnerWindow.h +ISRC=BinnerPluginInfo.C +COMMONSRC=BinnerPluginInfo.C BinnerCommonPluginInfo.C Binner.C +GSRC=BinnerGUIPluginInfo.C QvisBinnerWindow.C +VSRC=BinnerViewerPluginInfo.C +ESRC=BinnerEnginePluginInfo.C avtBinnerFilter.C +SSRC=BinnerScriptingPluginInfo.C PyBinner.C + +SRC=$(ISRC) $(COMMONSRC) $(GSRC) $(VSRC) $(ESRC) $(SSRC) + + +JAVASRC=Binner.java +JAVAOBJ=/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/java/llnl/visit/operators/Binner.class +JAVAPLUGINFLAGS=-d /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/java -classpath /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/java + +SHLIB_FORCED= + +ELIBS_FOR_MACOSX_PREBINDING=$(BZIP2_LIBS) +VLIBS_FOR_MACOSX_PREBINDING=$(BZIP2_LIBS) +ILIBS= +GLIBS=-lgui -lmdserverproxy -lviewerproxy -lproxybase -lmdserverrpc -lviewerrpc -lwinutil -ldbatts -lavtexceptions -lstate -lcomm -lmisc -lplugin -lexpr -lparser -lutility -lI$(PLUGINNAME) $(QT_LDFLAGS) $(QT_LIBS) $(QUI_LIBS) $(X_LIBS) +SLIBS=-lstate -lmisc -lcomm -lutility $(PY_LIB) -lI$(PLUGINNAME) +VLIBS=-lpipeline_ser -lplotter_ser -lavtfilters_ser -lavtmath_ser -lavtview -ldbatts -lavtexceptions -lstate -lmisc -lcomm -lexpr -lparser -lutility -lvisit_vtk -llightweight_visit_vtk -lparallel_visit_vtk_ser $(VLIBS_FOR_MACOSX_PREBINDING) -lI$(PLUGINNAME) $(VTK_LIBS) +ESERLIBS=-lpipeline_ser -lplotter_ser -lavtfilters_ser -lavtmath_ser -lavtview -ldbatts -lavtexceptions -lstate -lmisc -lcomm -lexpr -lparser -lutility -lvisit_vtk -llightweight_visit_vtk -lparallel_visit_vtk_ser -lI$(PLUGINNAME) $(ELIBS_FOR_MACOSX_PREBINDING) $(VTK_LIBS) +EPARLIBS=-lpipeline_par -lplotter_par -lavtfilters_par -lavtmath_par -lavtview -ldbatts -lavtexceptions -lstate -lmisc -lcomm -lexpr -lparser -lutility -lvisit_vtk -llightweight_visit_vtk -lparallel_visit_vtk_par -lI$(PLUGINNAME) $(ELIBS_FOR_MACOSX_PREBINDING) $(VTK_LIBS) $(SHLIB_MPI_LIBS) + +IDSO=/d/visusers/cristina/.visit/linux-x86_64/plugins/operators/libIBinnerOperator.so +GDSO=/d/visusers/cristina/.visit/linux-x86_64/plugins/operators/libGBinnerOperator.so +SDSO=/d/visusers/cristina/.visit/linux-x86_64/plugins/operators/libSBinnerOperator.so +VDSO=/d/visusers/cristina/.visit/linux-x86_64/plugins/operators/libVBinnerOperator.so +ESERDSO=/d/visusers/cristina/.visit/linux-x86_64/plugins/operators/libEBinnerOperator_ser.so +EPARDSO=/d/visusers/cristina/.visit/linux-x86_64/plugins/operators/libEBinnerOperator_par.so + + +DISTRIB= + +## +## Derived objects +## +IOBJ=$(ISRC:.C=.o) +GOBJ=$(COMMONSRC:.C=.o) $(GSRC:.C=.o) +SOBJ=$(COMMONSRC:.C=.o) $(SSRC:.C=.o) +VOBJ=$(COMMONSRC:.C=.o) $(VSRC:.C=.o) +MOBJ=$(COMMONSRC:.C=.o) $(MSRC:.C=.o) $(MSPECIFICSRC:.C=_mds.o) +ESEROBJ=$(COMMONSRC:.C=.o) $(ESRC:.C=.o) +EPAROBJ=$(COMMONSRC:.C=.o) $(ESRC:.C=_par.o) + +MOCSRC = $(WIDGETS:.h=_moc.C) +MOCOBJ = $(MOCSRC:.C=.o) + +## +## Standard targets... +## +all: message $(IDSO) $(GUILIB) $(VIEWERLIB) $(ENGINELIBSER) $(ENGINELIBPAR) $(SCRIPTINGLIB) $(JAVACLASS) + +clean: + $(RM) $(IOBJ) $(COMMONOBJ) + $(RM) $(GOBJ) $(SOBJ) $(VOBJ) $(MOBJ) $(ESEROBJ) $(EPAROBJ) + $(RM) $(MOCSRC) $(MOCOBJ) + $(RM) $(IDSO) $(GDSO) $(SDSO) $(VDSO) $(MDSO) $(ESERDSO) $(EPARDSO) + $(RM) $(JAVAOBJ) + +## +## Other targets... +## +message: + @echo + @echo "****************************************************************************" + @echo "*** Building Binner Operator Plugin" + @echo "****************************************************************************" + +## +## moc +## +$(MOCSRC) or_no_widgets: $(WIDGETS) + @rm -f $@ + $(MOC) $(@:_moc.C=.h) > $@ + + +## +## Automatic dependency stuff +## +include /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/make-targets diff --git a/visit_plugins/operators/BinnerFilter/BinnerPluginInfo.C b/visit_plugins/operators/BinnerFilter/BinnerPluginInfo.C new file mode 100644 index 0000000..80ec38c --- /dev/null +++ b/visit_plugins/operators/BinnerFilter/BinnerPluginInfo.C @@ -0,0 +1,107 @@ +// ************************************************************************* // +// File: BinnerPluginInfo.C +// ************************************************************************* // + +#include +#include + +#include +#if defined(__APPLE__) +extern "C" const char *BinnerVisItPluginVersion = VERSION; +#else +extern "C" const char *VisItPluginVersion = VERSION; +#endif + +#if defined(__APPLE__) +#define GetGeneralInfo Binner_GetGeneralInfo +#endif + +// **************************************************************************** +// Function: GetGeneralInfo +// +// Purpose: +// Return a new GeneralPluginInfo for the Binner operator. +// +// Programmer: cristina -- generated by xml2info +// Creation: Thu Mar 30 12:05:26 PDT 2006 +// +// **************************************************************************** +extern "C" GeneralOperatorPluginInfo* GetGeneralInfo() +{ + return new BinnerGeneralPluginInfo; +} + +// **************************************************************************** +// Method: BinnerGeneralPluginInfo::GetName +// +// Purpose: +// Return the name of the operator plugin. +// +// Returns: A pointer to the name of the operator plugin. +// +// Programmer: cristina -- generated by xml2info +// Creation: Thu Mar 30 12:05:26 PDT 2006 +// +// **************************************************************************** + +char * +BinnerGeneralPluginInfo::GetName() const +{ + return "Binner"; +} + +// **************************************************************************** +// Method: BinnerGeneralPluginInfo::GetVersion +// +// Purpose: +// Return the version of the operator plugin. +// +// Returns: A pointer to the version of the operator plugin. +// +// Programmer: cristina -- generated by xml2info +// Creation: Thu Mar 30 12:05:26 PDT 2006 +// +// **************************************************************************** + +char * +BinnerGeneralPluginInfo::GetVersion() const +{ + return "1.0"; +} + +// **************************************************************************** +// Method: BinnerGeneralPluginInfo::GetID +// +// Purpose: +// Return the id of the operator plugin. +// +// Returns: A pointer to the id of the operator plugin. +// +// Programmer: cristina -- generated by xml2info +// Creation: Thu Mar 30 12:05:26 PDT 2006 +// +// **************************************************************************** + +char * +BinnerGeneralPluginInfo::GetID() const +{ + return "Binner_1.0"; +} +// **************************************************************************** +// Method: BinnerGeneralPluginInfo::EnabledByDefault +// +// Purpose: +// Return true if this plugin should be enabled by default; false otherwise. +// +// Returns: true/false +// +// Programmer: cristina -- generated by xml2info +// Creation: Thu Mar 30 12:05:26 PDT 2006 +// +// **************************************************************************** + +bool +BinnerGeneralPluginInfo::EnabledByDefault() const +{ + return true; +} diff --git a/visit_plugins/operators/BinnerFilter/BinnerPluginInfo.h b/visit_plugins/operators/BinnerFilter/BinnerPluginInfo.h new file mode 100644 index 0000000..076dd59 --- /dev/null +++ b/visit_plugins/operators/BinnerFilter/BinnerPluginInfo.h @@ -0,0 +1,85 @@ +// ************************************************************************* // +// File: BinnerPluginInfo.h +// ************************************************************************* // + +#ifndef BINNER_PLUGIN_INFO_H +#define BINNER_PLUGIN_INFO_H +#include +#include + +class Binner; + +// **************************************************************************** +// Class: BinnerPluginInfo +// +// Purpose: +// Five classes that provide all the information about an Binner operator +// +// Programmer: cristina -- generated by xml2info +// Creation: Thu Mar 30 12:05:26 PDT 2006 +// +// Modifications: +// +// **************************************************************************** + +class BinnerGeneralPluginInfo : public virtual GeneralOperatorPluginInfo +{ + public: + virtual char *GetName() const; + virtual char *GetVersion() const; + virtual char *GetID() const; + virtual bool EnabledByDefault() const; +}; + +class BinnerCommonPluginInfo : public virtual CommonOperatorPluginInfo, public virtual BinnerGeneralPluginInfo +{ + public: + virtual AttributeSubject *AllocAttributes(); + virtual void CopyAttributes(AttributeSubject *to, AttributeSubject *from); +}; + +class BinnerGUIPluginInfo : public virtual GUIOperatorPluginInfo, public virtual BinnerCommonPluginInfo +{ + public: + virtual const char *GetMenuName() const; + virtual QvisPostableWindowObserver *CreatePluginWindow(int type, + AttributeSubject *attr, QvisNotepadArea *notepad); + virtual const char **XPMIconData() const; +}; + +class BinnerViewerPluginInfo : public virtual ViewerOperatorPluginInfo, public virtual BinnerCommonPluginInfo +{ + public: + virtual AttributeSubject *GetClientAtts(); + virtual AttributeSubject *GetDefaultAtts(); + virtual void SetClientAtts(AttributeSubject *atts); + virtual void GetClientAtts(AttributeSubject *atts); + + virtual void InitializeOperatorAtts(AttributeSubject *atts, + const ViewerPlot *plot, + const bool fromDefault); + virtual const char **XPMIconData() const; + + static void InitializeGlobalObjects(); + private: + static Binner *defaultAtts; + static Binner *clientAtts; +}; + +class BinnerEnginePluginInfo : public virtual EngineOperatorPluginInfo, public virtual BinnerCommonPluginInfo +{ + public: + virtual avtPluginFilter *AllocAvtPluginFilter(); +}; + +class BinnerScriptingPluginInfo : public virtual ScriptingOperatorPluginInfo, public virtual BinnerCommonPluginInfo +{ + public: + virtual void InitializePlugin(AttributeSubject *subj, void *data); + virtual void *GetMethodTable(int *nMethods); + virtual bool TypesMatch(void *pyobject); + virtual char *GetLogString(); + virtual void SetDefaults(const AttributeSubject *atts); +}; + +#endif diff --git a/visit_plugins/operators/BinnerFilter/BinnerScriptingPluginInfo.C b/visit_plugins/operators/BinnerFilter/BinnerScriptingPluginInfo.C new file mode 100644 index 0000000..f0c7802 --- /dev/null +++ b/visit_plugins/operators/BinnerFilter/BinnerScriptingPluginInfo.C @@ -0,0 +1,142 @@ +// ************************************************************************* // +// BinnerScriptingPluginInfo.C +// ************************************************************************* // +#include +#include + +#if defined(__APPLE__) +#define GetScriptingInfo Binner_GetScriptingInfo +#endif + +// **************************************************************************** +// Function: GetScriptingInfo +// +// Purpose: +// Return a new ScriptingPluginInfo for the Binner plot. +// +// Programmer: cristina -- generated by xml2info +// Creation: Thu Mar 30 12:05:26 PDT 2006 +// +// **************************************************************************** +extern "C" ScriptingOperatorPluginInfo* GetScriptingInfo() +{ + return new BinnerScriptingPluginInfo; +} + +// **************************************************************************** +// Method: BinnerScriptingPluginInfo::InitializePlugin +// +// Purpose: +// Calls the initialization function for the plugin. +// +// Arguments: +// subj : A pointer to the plugin's state object. +// data : A pointer to data to be used by the observer function. +// +// Programmer: cristina -- generated by xml2info +// Creation: Thu Mar 30 12:05:26 PDT 2006 +// +// Modifications: +// +// **************************************************************************** + +void +BinnerScriptingPluginInfo::InitializePlugin(AttributeSubject *subj, + void *data) +{ + PyBinner_StartUp((Binner *)subj, data); +} + +// **************************************************************************** +// Method: BinnerScriptingPluginInfo::GetMethodTable +// +// Purpose: +// Returns a pointer to the plugin's Python method table. These methods are +// added to the top-level visit module's methods. +// +// Arguments: +// nMethods : Returns the number of methods in the method table. +// +// Returns: A pointer to the method table. +// +// Programmer: cristina -- generated by xml2info +// Creation: Thu Mar 30 12:05:26 PDT 2006 +// +// Modifications: +// +// **************************************************************************** + +void * +BinnerScriptingPluginInfo::GetMethodTable(int *nMethods) +{ + return PyBinner_GetMethodTable(nMethods); +} + +// **************************************************************************** +// Method: BinnerScriptingPluginInfo::TypesMatch +// +// Purpose: +// Returns whether or not the input PyObject is Binner plot attributes. +// +// Arguments: +// pyobject : A PyObject cast to void*. +// +// Programmer: cristina -- generated by xml2info +// Creation: Thu Mar 30 12:05:26 PDT 2006 +// +// Modifications: +// +// **************************************************************************** + +bool +BinnerScriptingPluginInfo::TypesMatch(void *pyobject) +{ + return PyBinner_Check((PyObject *)pyobject); +} + +// **************************************************************************** +// Method: BinnerScriptingPluginInfo::GetLogString +// +// Purpose: +// Gets a string representation of the current attributes. +// +// Arguments: +// val : Whether or not to log state information. +// +// Programmer: cristina -- generated by xml2info +// Creation: Thu Mar 30 12:05:26 PDT 2006 +// +// Modifications: +// +// **************************************************************************** + +char * +BinnerScriptingPluginInfo::GetLogString() +{ + std::string s(PyBinner_GetLogString()); + char *v = new char[s.size() + 1]; + strcpy(v, s.c_str()); + return v; +} + +// **************************************************************************** +// Method: BinnerScriptingPluginInfo::SetDefaults +// +// Purpose: +// Used to set the default values for a plugin's state object. +// +// Arguments: +// atts : The new state. +// +// Programmer: cristina -- generated by xml2info +// Creation: Thu Mar 30 12:05:26 PDT 2006 +// +// Modifications: +// +// **************************************************************************** + +void +BinnerScriptingPluginInfo::SetDefaults(const AttributeSubject *atts) +{ + PyBinner_SetDefaults((const Binner *)atts); +} diff --git a/visit_plugins/operators/BinnerFilter/BinnerViewerPluginInfo.C b/visit_plugins/operators/BinnerFilter/BinnerViewerPluginInfo.C new file mode 100644 index 0000000..dff9ff5 --- /dev/null +++ b/visit_plugins/operators/BinnerFilter/BinnerViewerPluginInfo.C @@ -0,0 +1,175 @@ +// ************************************************************************* // +// File: BinnerViewerPluginInfo.C +// ************************************************************************* // + +#include +#include + +#if defined(__APPLE__) +#define GetViewerInfo Binner_GetViewerInfo +#endif + +// **************************************************************************** +// Function: GetViewerInfo +// +// Purpose: +// Return a new ViewerPluginInfo for the Binner operator. +// +// Programmer: cristina -- generated by xml2info +// Creation: Thu Mar 30 12:05:26 PDT 2006 +// +// **************************************************************************** +extern "C" ViewerOperatorPluginInfo* GetViewerInfo() +{ + BinnerViewerPluginInfo::InitializeGlobalObjects(); + return new BinnerViewerPluginInfo; +} + +// +// Storage for static data elements. +// +Binner *BinnerViewerPluginInfo::clientAtts = NULL; +Binner *BinnerViewerPluginInfo::defaultAtts = NULL; + +// **************************************************************************** +// Method: BinnerViewerPluginInfo::InitializeGlobalObjects +// +// Purpose: +// Initialize the operator atts. +// +// Programmer: cristina -- generated by xml2info +// Creation: Thu Mar 30 12:05:26 PDT 2006 +// +// **************************************************************************** +void +BinnerViewerPluginInfo::InitializeGlobalObjects() +{ + BinnerViewerPluginInfo::clientAtts = new Binner; + BinnerViewerPluginInfo::defaultAtts = new Binner; +} + +// **************************************************************************** +// Method: BinnerViewerPluginInfo::GetClientAtts +// +// Purpose: +// Return a pointer to the viewer client attributes. +// +// Returns: A pointer to the viewer client attributes. +// +// Programmer: cristina -- generated by xml2info +// Creation: Thu Mar 30 12:05:26 PDT 2006 +// +// **************************************************************************** + +AttributeSubject * +BinnerViewerPluginInfo::GetClientAtts() +{ + return clientAtts; +} + +// **************************************************************************** +// Method: BinnerViewerPluginInfo::GetDefaultAtts +// +// Purpose: +// Return a pointer to the viewer default attributes. +// +// Returns: A pointer to the viewer default attributes. +// +// Programmer: cristina -- generated by xml2info +// Creation: Thu Mar 30 12:05:26 PDT 2006 +// +// **************************************************************************** + +AttributeSubject * +BinnerViewerPluginInfo::GetDefaultAtts() +{ + return defaultAtts; +} + +// **************************************************************************** +// Method: BinnerViewerPluginInfo::SetClientAtts +// +// Purpose: +// Set the viewer client attributes. +// +// Arguments: +// atts A pointer to the new client attributes. +// +// Programmer: cristina -- generated by xml2info +// Creation: Thu Mar 30 12:05:26 PDT 2006 +// +// **************************************************************************** + +void +BinnerViewerPluginInfo::SetClientAtts(AttributeSubject *atts) +{ + *clientAtts = *(Binner *)atts; + clientAtts->Notify(); +} + +// **************************************************************************** +// Method: BinnerViewerPluginInfo::GetClientAtts +// +// Purpose: +// Get the viewer client attributes. +// +// Arguments: +// atts A pointer to return the client default attributes in. +// +// Programmer: cristina -- generated by xml2info +// Creation: Thu Mar 30 12:05:26 PDT 2006 +// +// **************************************************************************** + +void +BinnerViewerPluginInfo::GetClientAtts(AttributeSubject *atts) +{ + *(Binner *)atts = *clientAtts; +} + +// **************************************************************************** +// Method: BinnerViewerPluginInfo::InitializeOperatorAtts +// +// Purpose: +// Initialize the operator attributes to the default attributes. +// +// Arguments: +// atts The attribute subject to initialize. +// md The metadata used to initialize. +// atts The variable name used to initialize. +// +// Programmer: cristina -- generated by xml2info +// Creation: Thu Mar 30 12:05:26 PDT 2006 +// +// **************************************************************************** + +void +BinnerViewerPluginInfo::InitializeOperatorAtts(AttributeSubject *atts, + const ViewerPlot *plot, + const bool fromDefault) +{ + if (fromDefault) + *(Binner*)atts = *defaultAtts; + else + *(Binner*)atts = *clientAtts; +} + +// **************************************************************************** +// Method: BinnerViewerPluginInfo::XPMIconData +// +// Purpose: +// Return a pointer to the icon data. +// +// Returns: A pointer to the icon data. +// +// Programmer: cristina -- generated by xml2info +// Creation: Thu Mar 30 12:05:26 PDT 2006 +// +// **************************************************************************** + +#include +const char ** +BinnerViewerPluginInfo::XPMIconData() const +{ + return icon_xpm; +} diff --git a/visit_plugins/operators/BinnerFilter/Binnerreplace.txt b/visit_plugins/operators/BinnerFilter/Binnerreplace.txt new file mode 100644 index 0000000..5b25591 --- /dev/null +++ b/visit_plugins/operators/BinnerFilter/Binnerreplace.txt @@ -0,0 +1 @@ +s/Binner/Binner/g diff --git a/visit_plugins/operators/BinnerFilter/Makefile b/visit_plugins/operators/BinnerFilter/Makefile new file mode 100644 index 0000000..9e06a08 --- /dev/null +++ b/visit_plugins/operators/BinnerFilter/Makefile @@ -0,0 +1,114 @@ +## +## Programs and options... +## +TOPDIR=/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64 +include $(TOPDIR)/include/make-variables +TOPDIR=/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64 +PLUGINSHOME=$(HOME)/.visit/linux-x86_64/plugins + +## +## Libraries and includes... +## +VTK_INCLUDE= \ + -I$(TOPDIR)/include/vtk \ + -I$(TOPDIR)/include/vtk/Common \ + -I$(TOPDIR)/include/vtk/Filtering \ + -I$(TOPDIR)/include/vtk/Graphics \ + -I$(TOPDIR)/include/vtk/Hybrid \ + -I$(TOPDIR)/include/vtk/IO \ + -I$(TOPDIR)/include/vtk/Imaging \ + -I$(TOPDIR)/include/vtk/Rendering +MOC=$(TOPDIR)/bin/moc +CXXFLAGS=$(CXXFLAGSORIG) $(QT_CXXFLAGS) $(PY_CXXFLAGS) +CPPFLAGS=$(CPPFLAGSORIG) $(VTK_INCLUDE) -I. -I$(TOPDIR)/include -I$(TOPDIR)/include/visit +LDFLAGS=$(LDFLAGSORIG) $(PY_LDFLAGS) -L$(PLUGINSHOME)/operators + +## +## Files... +## +PLUGINDIR=operators +PLUGINNAME=BinnerOperator + +WIDGETS=QvisBinnerWindow.h +ISRC=BinnerPluginInfo.C +COMMONSRC=BinnerPluginInfo.C BinnerCommonPluginInfo.C BinnerFilter.C +GSRC=BinnerGUIPluginInfo.C QvisBinnerWindow.C +VSRC=BinnerViewerPluginInfo.C +ESRC=BinnerEnginePluginInfo.C avtBinnerFilter.C +SSRC=BinnerScriptingPluginInfo.C PyBinner.C + +SRC=$(ISRC) $(COMMONSRC) $(GSRC) $(VSRC) $(ESRC) $(SSRC) + + +JAVASRC=Binner.java +JAVAOBJ=$(TOPDIR)/java/llnl/visit/operators/BinnerFilter.class +JAVAPLUGINFLAGS=-d $(TOPDIR)/java -classpath $(TOPDIR)/java + +SHLIB_FORCED= + +ELIBS_FOR_MACOSX_PREBINDING=$(BZIP2_LIBS) +VLIBS_FOR_MACOSX_PREBINDING=$(BZIP2_LIBS) +ILIBS= +GLIBS=-lgui -lmdserverproxy -lviewerproxy -lproxybase -lmdserverrpc -lviewerrpc -lwinutil -ldbatts -lavtexceptions -lstate -lcomm -lmisc -lplugin -lexpr -lparser -lutility -lI$(PLUGINNAME) $(QT_LDFLAGS) $(QT_LIBS) $(QUI_LIBS) $(X_LIBS) +SLIBS=-lstate -lmisc -lcomm -lutility $(PY_LIB) -lI$(PLUGINNAME) +VLIBS=-lpipeline_ser -lplotter_ser -lavtfilters_ser -lavtmath_ser -lavtview -ldbatts -lavtexceptions -lstate -lmisc -lcomm -lexpr -lparser -lutility -lvisit_vtk -llightweight_visit_vtk -lparallel_visit_vtk_ser $(VLIBS_FOR_MACOSX_PREBINDING) -lI$(PLUGINNAME) $(VTK_LIBS) +ESERLIBS=-lpipeline_ser -lplotter_ser -lavtfilters_ser -lavtmath_ser -lavtview -ldbatts -lavtexceptions -lstate -lmisc -lcomm -lexpr -lparser -lutility -lvisit_vtk -llightweight_visit_vtk -lparallel_visit_vtk_ser -lI$(PLUGINNAME) $(ELIBS_FOR_MACOSX_PREBINDING) $(VTK_LIBS) +EPARLIBS=-lpipeline_par -lplotter_par -lavtfilters_par -lavtmath_par -lavtview -ldbatts -lavtexceptions -lstate -lmisc -lcomm -lexpr -lparser -lutility -lvisit_vtk -llightweight_visit_vtk -lparallel_visit_vtk_par -lI$(PLUGINNAME) $(ELIBS_FOR_MACOSX_PREBINDING) $(VTK_LIBS) $(SHLIB_MPI_LIBS) + +IDSO=$(PLUGINSHOME)/operators/libIBinnerOperator.so +GDSO=$(PLUGINSHOME)/operators/libGBinnerOperator.so +SDSO=$(PLUGINSHOME)/operators/libSBinnerOperator.so +VDSO=$(PLUGINSHOME)/operators/libVBinnerOperator.so +ESERDSO=$(PLUGINSHOME)/operators/libEBinnerOperator_ser.so +EPARDSO=$(PLUGINSHOME)/operators/libEBinnerOperator_par.so + + +DISTRIB= + +## +## Derived objects +## +IOBJ=$(ISRC:.C=.o) +GOBJ=$(COMMONSRC:.C=.o) $(GSRC:.C=.o) +SOBJ=$(COMMONSRC:.C=.o) $(SSRC:.C=.o) +VOBJ=$(COMMONSRC:.C=.o) $(VSRC:.C=.o) +MOBJ=$(COMMONSRC:.C=.o) $(MSRC:.C=.o) $(MSPECIFICSRC:.C=_mds.o) +ESEROBJ=$(COMMONSRC:.C=.o) $(ESRC:.C=.o) +EPAROBJ=$(COMMONSRC:.C=.o) $(ESRC:.C=_par.o) + +MOCSRC = $(WIDGETS:.h=_moc.C) +MOCOBJ = $(MOCSRC:.C=.o) + +## +## Standard targets... +## +all: message $(IDSO) $(GUILIB) $(VIEWERLIB) $(ENGINELIBSER) $(ENGINELIBPAR) $(SCRIPTINGLIB) $(JAVACLASS) + +clean: + $(RM) $(IOBJ) $(COMMONOBJ) + $(RM) $(GOBJ) $(SOBJ) $(VOBJ) $(MOBJ) $(ESEROBJ) $(EPAROBJ) + $(RM) $(MOCSRC) $(MOCOBJ) + $(RM) $(IDSO) $(GDSO) $(SDSO) $(VDSO) $(MDSO) $(ESERDSO) $(EPARDSO) + $(RM) $(JAVAOBJ) + +## +## Other targets... +## +message: + @echo + @echo "****************************************************************************" + @echo "*** Building Binner Operator Plugin" + @echo "****************************************************************************" + +## +## moc +## +$(MOCSRC) or_no_widgets: $(WIDGETS) + @rm -f $@ + $(MOC) $(@:_moc.C=.h) > $@ + + +## +## Automatic dependency stuff +## +include $(TOPDIR)/include/make-targets diff --git a/visit_plugins/operators/BinnerFilter/PyBinner.C b/visit_plugins/operators/BinnerFilter/PyBinner.C new file mode 100644 index 0000000..5ca1e5c --- /dev/null +++ b/visit_plugins/operators/BinnerFilter/PyBinner.C @@ -0,0 +1,422 @@ +#include +#include +#include +#include + +// **************************************************************************** +// Module: PyBinner +// +// Purpose: +// Bin particles +// +// Note: Autogenerated by xml2python. Do not modify by hand! +// +// Programmer: xml2python +// Creation: Thu Mar 30 12:05:26 PDT 2006 +// +// **************************************************************************** + +// +// This struct contains the Python type information and a Binner. +// +struct BinnerObject +{ + PyObject_HEAD + Binner *data; + bool owns; +}; + +// +// Internal prototypes +// +static PyObject *NewBinner(int); + +std::string +PyBinner_ToString(const Binner *atts, const char *prefix) +{ + std::string str; + char tmpStr[1000]; + + SNPRINTF(tmpStr, 1000, "%sdim1 = %d\n", prefix, atts->GetDim1()); + str += tmpStr; + SNPRINTF(tmpStr, 1000, "%sdim2 = %d\n", prefix, atts->GetDim2()); + str += tmpStr; + SNPRINTF(tmpStr, 1000, "%sdim3 = %d\n", prefix, atts->GetDim3()); + str += tmpStr; + return str; +} + +static PyObject * +Binner_Notify(PyObject *self, PyObject *args) +{ + BinnerObject *obj = (BinnerObject *)self; + obj->data->Notify(); + Py_INCREF(Py_None); + return Py_None; +} + +static PyObject * +Binner_SetDim1(PyObject *self, PyObject *args) +{ + BinnerObject *obj = (BinnerObject *)self; + + int ival; + if(!PyArg_ParseTuple(args, "i", &ival)) + return NULL; + + // Set the dim1 in the object. + obj->data->SetDim1(ival); + + Py_INCREF(Py_None); + return Py_None; +} + +static PyObject * +Binner_GetDim1(PyObject *self, PyObject *args) +{ + BinnerObject *obj = (BinnerObject *)self; + PyObject *retval = PyInt_FromLong(long(obj->data->GetDim1())); + return retval; +} + +static PyObject * +Binner_SetDim2(PyObject *self, PyObject *args) +{ + BinnerObject *obj = (BinnerObject *)self; + + int ival; + if(!PyArg_ParseTuple(args, "i", &ival)) + return NULL; + + // Set the dim2 in the object. + obj->data->SetDim2(ival); + + Py_INCREF(Py_None); + return Py_None; +} + +static PyObject * +Binner_GetDim2(PyObject *self, PyObject *args) +{ + BinnerObject *obj = (BinnerObject *)self; + PyObject *retval = PyInt_FromLong(long(obj->data->GetDim2())); + return retval; +} + +static PyObject * +Binner_SetDim3(PyObject *self, PyObject *args) +{ + BinnerObject *obj = (BinnerObject *)self; + + int ival; + if(!PyArg_ParseTuple(args, "i", &ival)) + return NULL; + + // Set the dim3 in the object. + obj->data->SetDim3(ival); + + Py_INCREF(Py_None); + return Py_None; +} + +static PyObject * +Binner_GetDim3(PyObject *self, PyObject *args) +{ + BinnerObject *obj = (BinnerObject *)self; + PyObject *retval = PyInt_FromLong(long(obj->data->GetDim3())); + return retval; +} + + + +static struct PyMethodDef Binner_methods[] = { + {"Notify", Binner_Notify, METH_VARARGS}, + {"SetDim1", Binner_SetDim1, METH_VARARGS}, + {"GetDim1", Binner_GetDim1, METH_VARARGS}, + {"SetDim2", Binner_SetDim2, METH_VARARGS}, + {"GetDim2", Binner_GetDim2, METH_VARARGS}, + {"SetDim3", Binner_SetDim3, METH_VARARGS}, + {"GetDim3", Binner_GetDim3, METH_VARARGS}, + {NULL, NULL} +}; + +// +// Type functions +// + +static void +Binner_dealloc(PyObject *v) +{ + BinnerObject *obj = (BinnerObject *)v; + if(obj->owns) + delete obj->data; +} + +static int +Binner_compare(PyObject *v, PyObject *w) +{ + Binner *a = ((BinnerObject *)v)->data; + Binner *b = ((BinnerObject *)w)->data; + return (*a == *b) ? 0 : -1; +} + +static PyObject * +Binner_getattr(PyObject *self, char *name) +{ + if(strcmp(name, "dim1") == 0) + return Binner_GetDim1(self, NULL); + if(strcmp(name, "dim2") == 0) + return Binner_GetDim2(self, NULL); + if(strcmp(name, "dim3") == 0) + return Binner_GetDim3(self, NULL); + + return Py_FindMethod(Binner_methods, self, name); +} + +static int +Binner_setattr(PyObject *self, char *name, PyObject *args) +{ + // Create a tuple to contain the arguments since all of the Set + // functions expect a tuple. + PyObject *tuple = PyTuple_New(1); + PyTuple_SET_ITEM(tuple, 0, args); + Py_INCREF(args); + bool retval = false; + + if(strcmp(name, "dim1") == 0) + retval = (Binner_SetDim1(self, tuple) != NULL); + else if(strcmp(name, "dim2") == 0) + retval = (Binner_SetDim2(self, tuple) != NULL); + else if(strcmp(name, "dim3") == 0) + retval = (Binner_SetDim3(self, tuple) != NULL); + + Py_DECREF(tuple); + return retval ? 0 : -1; +} + +static int +Binner_print(PyObject *v, FILE *fp, int flags) +{ + BinnerObject *obj = (BinnerObject *)v; + fprintf(fp, "%s", PyBinner_ToString(obj->data, "").c_str()); + return 0; +} + +PyObject * +Binner_str(PyObject *v) +{ + BinnerObject *obj = (BinnerObject *)v; + return PyString_FromString(PyBinner_ToString(obj->data,"").c_str()); +} + +// +// The doc string for the class. +// +static char *Binner_Purpose = "Bin particles"; + +// +// The type description structure +// +static PyTypeObject BinnerType = +{ + // + // Type header + // + PyObject_HEAD_INIT(&PyType_Type) + 0, // ob_size + "Binner", // tp_name + sizeof(BinnerObject), // tp_basicsize + 0, // tp_itemsize + // + // Standard methods + // + (destructor)Binner_dealloc, // tp_dealloc + (printfunc)Binner_print, // tp_print + (getattrfunc)Binner_getattr, // tp_getattr + (setattrfunc)Binner_setattr, // tp_setattr + (cmpfunc)Binner_compare, // tp_compare + (reprfunc)0, // tp_repr + // + // Type categories + // + 0, // tp_as_number + 0, // tp_as_sequence + 0, // tp_as_mapping + // + // More methods + // + 0, // tp_hash + 0, // tp_call + (reprfunc)Binner_str, // tp_str + 0, // tp_getattro + 0, // tp_setattro + 0, // tp_as_buffer + Py_TPFLAGS_CHECKTYPES, // tp_flags + Binner_Purpose, // tp_doc + 0, // tp_traverse + 0, // tp_clear + 0, // tp_richcompare + 0 // tp_weaklistoffset +}; + +// +// Helper functions for object allocation. +// + +static Binner *defaultAtts = 0; +static Binner *currentAtts = 0; + +static PyObject * +NewBinner(int useCurrent) +{ + BinnerObject *newObject; + newObject = PyObject_NEW(BinnerObject, &BinnerType); + if(newObject == NULL) + return NULL; + if(useCurrent && currentAtts != 0) + newObject->data = new Binner(*currentAtts); + else if(defaultAtts != 0) + newObject->data = new Binner(*defaultAtts); + else + newObject->data = new Binner; + newObject->owns = true; + return (PyObject *)newObject; +} + +static PyObject * +WrapBinner(const Binner *attr) +{ + BinnerObject *newObject; + newObject = PyObject_NEW(BinnerObject, &BinnerType); + if(newObject == NULL) + return NULL; + newObject->data = (Binner *)attr; + newObject->owns = false; + return (PyObject *)newObject; +} + +/////////////////////////////////////////////////////////////////////////////// +// +// Interface that is exposed to the VisIt module. +// +/////////////////////////////////////////////////////////////////////////////// + +PyObject * +Binner_new(PyObject *self, PyObject *args) +{ + int useCurrent = 0; + if (!PyArg_ParseTuple(args, "i", &useCurrent)) + { + if (!PyArg_ParseTuple(args, "")) + return NULL; + else + PyErr_Clear(); + } + + return (PyObject *)NewBinner(useCurrent); +} + +// +// Plugin method table. These methods are added to the visitmodule's methods. +// +static PyMethodDef BinnerMethods[] = { + {"Binner", Binner_new, METH_VARARGS}, + {NULL, NULL} /* Sentinel */ +}; + +static Observer *BinnerObserver = 0; + +std::string +PyBinner_GetLogString() +{ + std::string s("Binner = Binner()\n"); + if(currentAtts != 0) + s += PyBinner_ToString(currentAtts, "Binner."); + return s; +} + +static void +PyBinner_CallLogRoutine(Subject *subj, void *data) +{ + Binner *atts = (Binner *)subj; + typedef void (*logCallback)(const std::string &); + logCallback cb = (logCallback)data; + + if(cb != 0) + { + std::string s("Binner = Binner()\n"); + s += PyBinner_ToString(currentAtts, "Binner."); + cb(s); + } +} + +void +PyBinner_StartUp(Binner *subj, void *data) +{ + if(subj == 0) + return; + + currentAtts = subj; + PyBinner_SetDefaults(subj); + + // + // Create the observer that will be notified when the attributes change. + // + if(BinnerObserver == 0) + { + BinnerObserver = new ObserverToCallback(subj, + PyBinner_CallLogRoutine, (void *)data); + } + +} + +void +PyBinner_CloseDown() +{ + delete defaultAtts; + defaultAtts = 0; + delete BinnerObserver; + BinnerObserver = 0; +} + +PyMethodDef * +PyBinner_GetMethodTable(int *nMethods) +{ + *nMethods = 1; + return BinnerMethods; +} + +bool +PyBinner_Check(PyObject *obj) +{ + return (obj->ob_type == &BinnerType); +} + +Binner * +PyBinner_FromPyObject(PyObject *obj) +{ + BinnerObject *obj2 = (BinnerObject *)obj; + return obj2->data; +} + +PyObject * +PyBinner_NewPyObject() +{ + return NewBinner(0); +} + +PyObject * +PyBinner_WrapPyObject(const Binner *attr) +{ + return WrapBinner(attr); +} + +void +PyBinner_SetDefaults(const Binner *atts) +{ + if(defaultAtts) + delete defaultAtts; + + defaultAtts = new Binner(*atts); +} + diff --git a/visit_plugins/operators/BinnerFilter/PyBinner.h b/visit_plugins/operators/BinnerFilter/PyBinner.h new file mode 100644 index 0000000..d6bccd7 --- /dev/null +++ b/visit_plugins/operators/BinnerFilter/PyBinner.h @@ -0,0 +1,21 @@ +#ifndef PY_BINNER_H +#define PY_BINNER_H +#include +#include + +// +// Functions exposed to the VisIt module. +// +void PyBinner_StartUp(Binner *subj, void *data); +void PyBinner_CloseDown(); +PyMethodDef *PyBinner_GetMethodTable(int *nMethods); +bool PyBinner_Check(PyObject *obj); +Binner *PyBinner_FromPyObject(PyObject *obj); +PyObject *PyBinner_NewPyObject(); +PyObject *PyBinner_WrapPyObject(const Binner *attr); +void PyBinner_SetDefaults(const Binner *atts); +std::string PyBinner_GetLogString(); +std::string PyBinner_ToString(const Binner *, const char *); + +#endif + diff --git a/visit_plugins/operators/BinnerFilter/QvisBinnerWindow.C b/visit_plugins/operators/BinnerFilter/QvisBinnerWindow.C new file mode 100644 index 0000000..56772ea --- /dev/null +++ b/visit_plugins/operators/BinnerFilter/QvisBinnerWindow.C @@ -0,0 +1,279 @@ +#include "QvisBinnerWindow.h" + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +using std::string; + +// **************************************************************************** +// Method: QvisBinnerWindow::QvisBinnerWindow +// +// Purpose: +// Constructor +// +// Programmer: xml2window +// Creation: Thu Mar 30 12:05:26 PDT 2006 +// +// Modifications: +// +// **************************************************************************** + +QvisBinnerWindow::QvisBinnerWindow(const int type, + Binner *subj, + const char *caption, + const char *shortName, + QvisNotepadArea *notepad) + : QvisOperatorWindow(type,subj, caption, shortName, notepad) +{ + atts = subj; +} + + +// **************************************************************************** +// Method: QvisBinnerWindow::~QvisBinnerWindow +// +// Purpose: +// Destructor +// +// Programmer: xml2window +// Creation: Thu Mar 30 12:05:26 PDT 2006 +// +// Modifications: +// +// **************************************************************************** + +QvisBinnerWindow::~QvisBinnerWindow() +{ +} + + +// **************************************************************************** +// Method: QvisBinnerWindow::CreateWindowContents +// +// Purpose: +// Creates the widgets for the window. +// +// Programmer: xml2window +// Creation: Thu Mar 30 12:05:26 PDT 2006 +// +// Modifications: +// +// **************************************************************************** + +void +QvisBinnerWindow::CreateWindowContents() +{ + QGridLayout *mainLayout = new QGridLayout(topLayout, 3,2, 10, "mainLayout"); + + + dim1Label = new QLabel("dim1", central, "dim1Label"); + mainLayout->addWidget(dim1Label,0,0); + dim1 = new QLineEdit(central, "dim1"); + connect(dim1, SIGNAL(returnPressed()), + this, SLOT(dim1ProcessText())); + mainLayout->addWidget(dim1, 0,1); + + dim2Label = new QLabel("dim2", central, "dim2Label"); + mainLayout->addWidget(dim2Label,1,0); + dim2 = new QLineEdit(central, "dim2"); + connect(dim2, SIGNAL(returnPressed()), + this, SLOT(dim2ProcessText())); + mainLayout->addWidget(dim2, 1,1); + + dim3Label = new QLabel("dim3", central, "dim3Label"); + mainLayout->addWidget(dim3Label,2,0); + dim3 = new QLineEdit(central, "dim3"); + connect(dim3, SIGNAL(returnPressed()), + this, SLOT(dim3ProcessText())); + mainLayout->addWidget(dim3, 2,1); + +} + + +// **************************************************************************** +// Method: QvisBinnerWindow::UpdateWindow +// +// Purpose: +// Updates the widgets in the window when the subject changes. +// +// Programmer: xml2window +// Creation: Thu Mar 30 12:05:26 PDT 2006 +// +// Modifications: +// +// **************************************************************************** + +void +QvisBinnerWindow::UpdateWindow(bool doAll) +{ + QString temp; + double r; + + for(int i = 0; i < atts->NumAttributes(); ++i) + { + if(!doAll) + { + if(!atts->IsSelected(i)) + { + continue; + } + } + + const double *dptr; + const float *fptr; + const int *iptr; + const char *cptr; + const unsigned char *uptr; + const string *sptr; + QColor tempcolor; + switch(i) + { + case 0: //dim1 + temp.sprintf("%d", atts->GetDim1()); + dim1->setText(temp); + break; + case 1: //dim2 + temp.sprintf("%d", atts->GetDim2()); + dim2->setText(temp); + break; + case 2: //dim3 + temp.sprintf("%d", atts->GetDim3()); + dim3->setText(temp); + break; + } + } +} + + +// **************************************************************************** +// Method: QvisBinnerWindow::GetCurrentValues +// +// Purpose: +// Gets values from certain widgets and stores them in the subject. +// +// Programmer: xml2window +// Creation: Thu Mar 30 12:05:26 PDT 2006 +// +// Modifications: +// +// **************************************************************************** + +void +QvisBinnerWindow::GetCurrentValues(int which_widget) +{ + bool okay, doAll = (which_widget == -1); + QString msg, temp; + + // Do dim1 + if(which_widget == 0 || doAll) + { + temp = dim1->displayText().simplifyWhiteSpace(); + okay = !temp.isEmpty(); + if(okay) + { + int val = temp.toInt(&okay); + atts->SetDim1(val); + } + + if(!okay) + { + msg.sprintf("The value of dim1 was invalid. " + "Resetting to the last good value of %d.", + atts->GetDim1()); + Message(msg); + atts->SetDim1(atts->GetDim1()); + } + } + + // Do dim2 + if(which_widget == 1 || doAll) + { + temp = dim2->displayText().simplifyWhiteSpace(); + okay = !temp.isEmpty(); + if(okay) + { + int val = temp.toInt(&okay); + atts->SetDim2(val); + } + + if(!okay) + { + msg.sprintf("The value of dim2 was invalid. " + "Resetting to the last good value of %d.", + atts->GetDim2()); + Message(msg); + atts->SetDim2(atts->GetDim2()); + } + } + + // Do dim3 + if(which_widget == 2 || doAll) + { + temp = dim3->displayText().simplifyWhiteSpace(); + okay = !temp.isEmpty(); + if(okay) + { + int val = temp.toInt(&okay); + atts->SetDim3(val); + } + + if(!okay) + { + msg.sprintf("The value of dim3 was invalid. " + "Resetting to the last good value of %d.", + atts->GetDim3()); + Message(msg); + atts->SetDim3(atts->GetDim3()); + } + } + +} + + +// +// Qt Slot functions +// + + +void +QvisBinnerWindow::dim1ProcessText() +{ + GetCurrentValues(0); + Apply(); +} + + +void +QvisBinnerWindow::dim2ProcessText() +{ + GetCurrentValues(1); + Apply(); +} + + +void +QvisBinnerWindow::dim3ProcessText() +{ + GetCurrentValues(2); + Apply(); +} + + diff --git a/visit_plugins/operators/BinnerFilter/QvisBinnerWindow.h b/visit_plugins/operators/BinnerFilter/QvisBinnerWindow.h new file mode 100644 index 0000000..baaaf84 --- /dev/null +++ b/visit_plugins/operators/BinnerFilter/QvisBinnerWindow.h @@ -0,0 +1,67 @@ +#ifndef QVISBINNERWINDOW_H +#define QVISBINNERWINDOW_H + +#include +#include + +class Binner; +class QLabel; +class QCheckBox; +class QLineEdit; +class QSpinBox; +class QVBox; +class QButtonGroup; +class QvisColorTableButton; +class QvisOpacitySlider; +class QvisColorButton; +class QvisLineStyleWidget; +class QvisLineWidthWidget; +class QvisVariableButton; + +// **************************************************************************** +// Class: QvisBinnerWindow +// +// Purpose: +// Defines QvisBinnerWindow class. +// +// Notes: This class was automatically generated! + +// Programmer: xml2window +// Creation: Thu Mar 30 12:05:26 PDT 2006 +// +// Modifications: +// +// **************************************************************************** + +class QvisBinnerWindow : public QvisOperatorWindow +{ + Q_OBJECT + public: + QvisBinnerWindow(const int type, + Binner *subj, + const char *caption = 0, + const char *shortName = 0, + QvisNotepadArea *notepad = 0); + virtual ~QvisBinnerWindow(); + virtual void CreateWindowContents(); + protected: + void UpdateWindow(bool doAll); + virtual void GetCurrentValues(int which_widget); + private slots: + void dim1ProcessText(); + void dim2ProcessText(); + void dim3ProcessText(); + private: + QLineEdit *dim1; + QLineEdit *dim2; + QLineEdit *dim3; + QLabel *dim1Label; + QLabel *dim2Label; + QLabel *dim3Label; + + Binner *atts; +}; + + + +#endif diff --git a/visit_plugins/operators/BinnerFilter/avtBinnerFilter.C b/visit_plugins/operators/BinnerFilter/avtBinnerFilter.C new file mode 100644 index 0000000..e5049c6 --- /dev/null +++ b/visit_plugins/operators/BinnerFilter/avtBinnerFilter.C @@ -0,0 +1,350 @@ +// ************************************************************************* // +// File: avtBinnerFilter.C +// ************************************************************************* // + +#include +#include +#include + +#include + +#include +#include +#include +#include +#include +#include +#include + +#ifdef PARALLEL_IO +#include +#include +#endif + + +// **************************************************************************** +// Method: avtBinnerFilter constructor +// +// Programmer: cristina -- generated by xml2avt +// Creation: Thu Mar 16 15:04:17 PST 2006 +// +// **************************************************************************** + +avtBinnerFilter::avtBinnerFilter() +{ + nprocs = 1; + #ifdef PARALLEL_IO + nprocs = PAR_Size(); + #endif + sgrid = NULL; + dims[0] = 10; + dims[1] = 10; + dims[2] = 10; + +} + + +// **************************************************************************** +// Method: avtBinnerFilter destructor +// +// Programmer: cristina -- generated by xml2avt +// Creation: Thu Mar 16 15:04:17 PST 2006 +// +// Modifications: +// +// **************************************************************************** + +avtBinnerFilter::~avtBinnerFilter() +{ +} + + +// **************************************************************************** +// Method: avtBinnerFilter::Create +// +// Programmer: cristina -- generated by xml2avt +// Creation: Thu Mar 16 15:04:17 PST 2006 +// +// **************************************************************************** + +avtFilter * +avtBinnerFilter::Create() +{ + return new avtBinnerFilter(); +} + + +// **************************************************************************** +// Method: avtBinnerFilter::SetAtts +// +// Purpose: +// Sets the state of the filter based on the attribute object. +// +// Arguments: +// a The attributes to use. +// +// Programmer: cristina -- generated by xml2avt +// Creation: Thu Mar 16 15:04:17 PST 2006 +// +// **************************************************************************** + +void +avtBinnerFilter::SetAtts(const AttributeGroup *a) +{ + atts = *(const Binner*)a; +} + + + +// **************************************************************************** +// Method: avtBinnerFilter::Equivalent +// +// Purpose: +// Returns true if creating a new avtBinnerFilter with the given +// parameters would result in an equivalent avtBinnerFilter. +// +// Programmer: cristina -- generated by xml2avt +// Creation: Thu Mar 16 15:04:17 PST 2006 +// +// **************************************************************************** + +bool +avtBinnerFilter::Equivalent(const AttributeGroup *a) +{ + return (atts == *(Binner*)a); +} + + +// **************************************************************************** +// Method: avtBinnerFilter::PreExecute +// +// Purpose: +// Called before "Execute". This will set up the range's we are operating +// on and the data structures we use to count the density. +// +// Programmer: +// Creation: +// +// **************************************************************************** + +void +avtBinnerFilter::PreExecute(void) + +{ + cout << "In PreExecute\n"; + avtStreamer::PreExecute(); + ndims = GetInput()->GetInfo().GetAttributes().GetSpatialDimension(); + if (ndims < 2) { + EXCEPTION2(InvalidDimensionsException, "Binner", " <2D"); + } + dims[0] = atts.GetDim1()+1; + dims[1] = atts.GetDim2()+1; + if (ndims == 2) + dims[2] == 1; + else + dims[2] = atts.GetDim3()+1; + grid_size = dims[0]*dims[1]*dims[2]; + data = (float *) calloc (grid_size, sizeof(float)); + avtDataset_p input = GetTypedInput(); + avtDatasetExaminer::GetSpatialExtents(input, extents); +#ifdef PARALLEL_IO + UnifyMinMax(extents, 2*ndims, 0); +#endif + for (int i=0; i < ndims; i++){ + cout << "spatial extents: " << extents[2*i+1] << " " << extents[2*i] << "\n"; + } +} + +// **************************************************************************** +// Method: avtBinnerFilter::ExecuteData +// +// Purpose: +// Sends the specified input and output through the Binner filter. +// +// Arguments: +// in_ds The input dataset. +// The domain number. +// The label. +// +// Returns: The output dataset. +// +// Programmer: cristina -- generated by xml2avt +// Creation: Thu Mar 16 15:04:17 PST 2006 +// +// **************************************************************************** + +vtkDataSet * +avtBinnerFilter::ExecuteData(vtkDataSet *in_ds, int domain, std::string) +{ + +cout << "domain: " << domain << "\n"; + float x[3]; + + int numvar = GetInput()->GetInfo().GetAttributes().GetNumberOfVariables(); + cout << "numvar: " << numvar << "\n"; + for (int i=0; i < numvar; i++){ + cout << GetInput()->GetInfo().GetAttributes().GetVariableName(i) << "\n"; + } + for (int i=0; i < ndims; i++){ + step[i] = (extents[2*i+1] - extents[2*i])/(dims[i]-1); + } + + for (int i=0; i < ndims; i++){ + extents[2*i] = extents[2*i] - 2*step[i]; + extents[2*i+1] = extents[2*i+1] + 2*step[i]; + } + + for (int i=0; i < ndims; i++){ + step[i] = (extents[2*i+1] - extents[2*i])/(dims[i]-1); + } + + vtkPointData *inPD = in_ds->GetPointData(); + vtkDataArray *in_data = inPD->GetScalars(); + vtkPointData *outPD = sgrid->GetPointData(); + + vtkIdType npoints = in_ds->GetNumberOfPoints(); + cout << "I have data: npoints: " << in_data->GetName() << " " << npoints << "\n"; + int bin[3]; + float delta[3]; + for (vtkIdType i = 0; i < npoints; i++) { + in_ds->GetPoint(i, x); + + /* find the corresponding bin */ + for (int j=0; j < ndims; j++){ + delta[j] = (x[j] - extents[2*j])/step[j]; + bin[j] = (int) delta[j]; + } + if (ndims == 2){ + bin[2] = 0; + } + + /* 5 contribution */ + data[bin[0]+ dims[0] * ( dims[1] * bin[2] + bin[1])] += 1; + } + float check_nptlc = 0.0; + for (vtkIdType i=0; i < grid_size; i++){ + check_nptlc += data[i]; + } + cout << "nptlc " << check_nptlc << "\n"; + cout << "npoints " << npoints << "\n"; + return NULL; +} + +// **************************************************************************** +// Method: avtBinnerFilter::RefashionDataObjectInfo +// +// Purpose: +// Tells the output that +// +// **************************************************************************** + +void +avtBinnerFilter::RefashionDataObjectInfo(void) +{ + cout << "Refashioning\n"; + avtDataAttributes &inAtts = GetInput()->GetInfo().GetAttributes(); + avtDataAttributes &outAtts = GetOutput()->GetInfo().GetAttributes(); + if (pipelineVariable != NULL){ + outAtts.AddVariable(pipelineVariable); + outAtts.SetVariableDimension(1, pipelineVariable); + outAtts.SetVariableType(AVT_SCALAR_VAR, pipelineVariable); + outAtts.SetCentering(AVT_ZONECENT, pipelineVariable); + outAtts.SetActiveVariable(pipelineVariable); + outAtts.GetTrueDataExtents(pipelineVariable)->Clear(); + outAtts.GetTrueDataExtents(pipelineVariable)->Set(drange); + outAtts.GetCurrentDataExtents()->Clear(); + outAtts.GetCurrentDataExtents()->Set(drange); + } + outAtts.GetEffectiveSpatialExtents()->Set(extents); + outAtts.GetCumulativeCurrentSpatialExtents()->Set(extents); + outAtts.GetCumulativeTrueSpatialExtents()->Set(extents); + outAtts.GetTrueSpatialExtents()->Set(extents); + outAtts.SetSpatialDimension(inAtts.GetSpatialDimension()); + outAtts.SetTopologicalDimension(inAtts.GetSpatialDimension()); +} + +// **************************************************************************** +// Method: avtBinnerFilter::VerifyInput +// +// Purpose: +// Verifies the input +// **************************************************************************** +void +avtBinnerFilter::VerifyInput(void) +{ + cout << "Checking Spatial Dimensions: " << GetInput()->GetInfo().GetAttributes().GetSpatialDimension() << "\n"; + cout << "Checking Topological Dimensions: " << GetInput()->GetInfo().GetAttributes().GetTopologicalDimension() << "\n"; + +} + + +void +avtBinnerFilter::PostExecute(void) +{ + avtPluginStreamer::PostExecute(); + /* need to put the data together */ +#ifdef PARALLEL_IO + cout << "In PostExecute : " << PAR_Rank() << "\n"; +#endif + vtkFloatArray *out_data = vtkFloatArray::New(); + out_data->Resize(grid_size); + out_data->FillComponent(0,0.0); +#ifdef PARALLEL_IO + SumFloatArrayAcrossAllProcessors(data, out_data->GetPointer(0), grid_size); +#else + memcpy(out_data->GetPointer(0), data, grid_size*sizeof(float)); +#endif + // Create the structured grid. + float x[3]; +#ifdef PARALLEL_IO + cout << "making the grid: " << PAR_Rank() << "\n"; +#endif + sgrid = vtkStructuredGrid::New(); + sgrid->SetDimensions(dims); + + vtkPoints *points = vtkPoints::New(); + points->Allocate(grid_size); + + + for ( int k=0; kInsertNextPoint(x); + } + } + } + sgrid->SetPoints(points); + points->Delete(); + + out_data->SetName(pipelineVariable); + sgrid->GetPointData()->SetScalars(out_data); + sgrid->GetScalarRange(dataRange); + drange[0] = (double) dataRange[0]; + drange[1] = (double) dataRange[1]; +#ifdef PARALLEL_IO + UnifyMinMax(drange, 2, 0); +#endif +cout << "drange: " << drange[0] << " " << drange[1] << "\n"; + out_data->Delete(); + out_data = NULL; + sgrid->Update(); +#ifdef PARALLEL_IO + if (PAR_Rank() == 0){ +#endif + avtDataTree_p tree = new avtDataTree(); + tree = new avtDataTree(sgrid, 0); + SetOutputDataTree(tree); + sgrid->Delete(); + sgrid = NULL; +#ifdef PARALLEL_IO + } +#endif + RefashionDataObjectInfo(); +} diff --git a/visit_plugins/operators/BinnerFilter/avtBinnerFilter.h b/visit_plugins/operators/BinnerFilter/avtBinnerFilter.h new file mode 100644 index 0000000..93d96a7 --- /dev/null +++ b/visit_plugins/operators/BinnerFilter/avtBinnerFilter.h @@ -0,0 +1,64 @@ +// ************************************************************************* // +// File: avtBinnerFilter.h +// ************************************************************************* // + +#ifndef AVT_Binner_FILTER_H +#define AVT_Binner_FILTER_H + + +#include +#include + + + +class vtkDataSet; +class vtkStructuredGrid; + +// **************************************************************************** +// Class: avtBinnerFilter +// +// Purpose: +// A plugin operator for Binner. +// +// Programmer: cristina -- generated by xml2avt +// Creation: Thu Mar 16 15:04:17 PST 2006 +// +// **************************************************************************** + +class avtBinnerFilter : public avtPluginStreamer +{ + public: + avtBinnerFilter(); + virtual ~avtBinnerFilter(); + + static avtFilter *Create(); + + virtual const char *GetType(void) { return "avtBinnerFilter"; }; + virtual const char *GetDescription(void) + { return "Binner"; }; + + virtual void SetAtts(const AttributeGroup*); + virtual bool Equivalent(const AttributeGroup*); + + protected: + Binner atts; + virtual void RefashionDataObjectInfo(void); + virtual void VerifyInput(void); + virtual vtkDataSet *ExecuteData(vtkDataSet *, int, std::string); + virtual void PostExecute(void); + virtual void PreExecute(void); + private: + vtkStructuredGrid *sgrid; + int nprocs; + int ndims; + int grid_size; + int dims[3]; + double extents[6]; + float step[3]; + float dataRange[2]; + double drange[2]; + float *data; +}; + + +#endif diff --git a/visit_plugins/operators/BinnerFilter/icon.xpm b/visit_plugins/operators/BinnerFilter/icon.xpm new file mode 100644 index 0000000..b8f3b5b --- /dev/null +++ b/visit_plugins/operators/BinnerFilter/icon.xpm @@ -0,0 +1,519 @@ +/* XPM */ +static const char *icon_xpm[] = { +/* width height num_colors chars_per_pixel */ +" 256 256 256 2", +/* colors */ +".. c #000000", +".# c #030b01", +".a c #061101", +".b c #081502", +".c c #0b1b02", +".d c #101f03", +".e c #0e2103", +".f c #132b04", +".g c #112503", +".h c #1a3505", +".i c #223b05", +".j c #303f04", +".k c #274606", +".l c #394c05", +".m c #375606", +".n c #2c5308", +".o c #3a680c", +".p c #27661a", +".q c #791428", +".r c #771b37", +".s c #6b1b37", +".t c #7a0f1f", +".u c #5b2c59", +".v c #5c264e", +".w c #5b356b", +".x c #583366", +".y c #5b3973", +".z c #573b78", +".A c #4e3972", +".B c #692348", +".C c #672b57", +".D c #772347", +".E c #762b58", +".F c #71305d", +".G c #63356b", +".H c #6b3163", +".I c #673468", +".J c #633973", +".K c #633d7b", +".L c #6b3973", +".M c #6a3c7a", +".N c #773367", +".O c #763b77", +".P c #6e2f60", +".Q c #721f40", +".R c #404d04", +".S c #475705", +".T c #515e05", +".U c #496507", +".V c #556906", +".W c #5a7508", +".X c #49780e", +".Y c #667706", +".Z c #6b7704", +".0 c #516b33", +".1 c #6f417b", +".2 c #6f716e", +".3 c #5c5d61", +".4 c #6e3f80", +".5 c #553f80", +".6 c #4b4386", +".7 c #584387", +".8 c #574b96", +".9 c #4f4b96", +"#. c #5a52a5", +"## c #5c58b1", +"#a c #6b4183", +"#b c #664488", +"#c c #684b96", +"#d c #764487", +"#e c #774b96", +"#f c #735398", +"#g c #6754a7", +"#h c #685bb6", +"#i c #7853a6", +"#j c #785bb6", +"#k c #724fa0", +"#l c #7464b5", +"#m c #7764c7", +"#n c #7269d0", +"#o c #7971e2", +"#p c #31902d", +"#q c #34a838", +"#r c #1d9036", +"#s c #2db347", +"#t c #13ab4c", +"#u c #27d35d", +"#v c #548915", +"#w c #4a9525", +"#x c #50ad2f", +"#y c #688609", +"#z c #768806", +"#A c #70950e", +"#B c #75a814", +"#C c #6cb22a", +"#D c #67952f", +"#E c #65a855", +"#F c #68cc33", +"#G c #59d854", +"#H c #3dc13e", +"#I c #3ff293", +"#J c #8a0206", +"#K c #870b18", +"#L c #970205", +"#M c #960b17", +"#N c #90101d", +"#O c #871428", +"#P c #871b36", +"#Q c #961427", +"#R c #971b36", +"#S c #900f20", +"#T c #a70205", +"#U c #a70b17", +"#V c #b70205", +"#W c #b50d16", +"#X c #a71427", +"#Y c #a71b37", +"#Z c #b71b38", +"#0 c #b61326", +"#1 c #a02339", +"#2 c #862447", +"#3 c #872b56", +"#4 c #972447", +"#5 c #972b57", +"#6 c #8f3259", +"#7 c #863468", +"#8 c #873b77", +"#9 c #973467", +"a. c #963b78", +"a# c #8e2f60", +"aa c #a72447", +"ab c #a72b57", +"ac c #b72447", +"ad c #b62b57", +"ae c #b03555", +"af c #a73467", +"ag c #a63b77", +"ah c #b73467", +"ai c #b73b76", +"aj c #ab2f60", +"ak c #9e1f40", +"al c #8e4478", +"am c #b14775", +"an c #b54459", +"ao c #c70204", +"ap c #d70204", +"aq c #ce0d17", +"ar c #ce172f", +"as c #d12734", +"at c #e70205", +"au c #fe0204", +"av c #f50508", +"aw c #fa0b16", +"ax c #f01117", +"ay c #f91626", +"az c #ec1930", +"aA c #f82832", +"aB c #c72346", +"aC c #d12b51", +"aD c #c73567", +"aE c #c73c77", +"aF c #d7386f", +"aG c #ed2b4e", +"aH c #e63668", +"aI c #d81f40", +"aJ c #cd4775", +"aK c #fb4951", +"aL c #f14c70", +"aM c #e85d68", +"aN c #943f80", +"aO c #864487", +"aP c #864b97", +"aQ c #974487", +"aR c #964b97", +"aS c #8f5595", +"aT c #8754a7", +"aU c #885ab6", +"aV c #9654a7", +"aW c #975bb6", +"aX c #8d4fa0", +"aY c #9864b9", +"aZ c #8f68ae", +"a0 c #a64487", +"a1 c #a74b96", +"a2 c #b64588", +"a3 c #b74b96", +"a4 c #af5496", +"a5 c #a655a7", +"a6 c #a75bb6", +"a7 c #b755a7", +"a8 c #b65bb7", +"a9 c #b04fa0", +"b. c #a764b9", +"b# c #b16bb1", +"ba c #a46797", +"bb c #8864c6", +"bc c #9764c6", +"bd c #986bd5", +"be c #8c70d5", +"bf c #9077ec", +"bg c #a765c7", +"bh c #a76bd6", +"bi c #b565c6", +"bj c #b074d3", +"bk c #a675e5", +"bl c #ab79e9", +"bm c #9e5fc0", +"bn c #c74587", +"bo c #c64b98", +"bp c #d24c8e", +"bq c #c555a6", +"br c #c759ad", +"bs c #ce6bb2", +"bt c #ea568b", +"bu c #f46b91", +"bv c #eb71ac", +"bw c #d16b93", +"bx c #cb77ca", +"by c #e17cc5", +"bz c #cf3f80", +"bA c #879706", +"bB c #8b9709", +"bC c #97a706", +"bD c #8eb00e", +"bE c #a7b705", +"bF c #aab409", +"bG c #94b22a", +"bH c #89a765", +"bI c #95c715", +"bJ c #b1c90b", +"bK c #a2db28", +"bL c #9ae455", +"bM c #c9d509", +"bN c #d3e70e", +"bO c #ebf10b", +"bP c #daea2c", +"bQ c #dff24c", +"bR c #8e928d", +"bS c #adafad", +"bT c #a692ac", +"bU c #9286f8", +"bV c #b48bd0", +"bW c #b18def", +"bX c #aea2e4", +"bY c #e58ab0", +"bZ c #cf8cd3", +"b0 c #cc93e7", +"b1 c #cfabd5", +"b2 c #d2adf0", +"b3 c #ea8fd1", +"b4 c #ebb0ed", +"b5 c #eba4da", +"b6 c #d0d0d1", +"b7 c #eeccf6", +"b8 c #e1d6f3", +"b9 c #b2d2a5", +/* pixels */ +"aWbjb4aW.7.5.A#ibVbf.y.ybbaU#i#c.5.A#cb8.z#fbVa6b0a8bhbgaW#i.4.xbkb0bmaVaX#k#k#e.1.K.w.1b4aW.waPaO.O.ubmaT.4.4.w.x.1b4bgaT#baUaTbhb4b0aW#k.4.xa6aV#d.y.xaPaQ#8a3a9aXaX.4.O.x.1b8.H.H.u.1baa4.v.HbZa7a4#8.F.Ca3a2a0#9.N.B.Ca.......................aBaBaa#P.rae#X..............................atao#Janazar#Xb6aGadab#2.r#2b4...q#O#YaB............#Kar#0#Q#O#KbY....................#U#M.t#MaA..........................................................#L#Jas..................................................................", +".6bjbjaW#d#c#g#maT#d.w.4bf.4bhbcaU#i.8bb......aVaVbhb4b0aV#e.5.xbcbcaTaT.4.J.J.4.y.x#daZaYaS.....I.ubhbhaWaX.4.z#daZbmaT.4.y.4.4bhb0bhaT#k.5.w#i#e.4.xbaaW#8.Pa9a1.O.4.4.u.1b#bg.....N#8.H.C.Fa7a1a1a.#7.C.Ha.a.a.#7.C.FbT#3..........aIac#O........#R#P#Pamar#S#Q..............................#L#0aAbvar#QaGb3aC#P.r#6bw....aGaB#R..................#S#O#OaC........................#M#Wax.....................#auavao#L................................................................avao..................................", +".8a6aV#e.y.xaWaT.4.A.yaSblbkbhbdaU#i#b.y........aObibjb.aT#d.y.waX#i.4.4.y.y.4.J.4.4aPaW#eb7a6aT.4bhb7bjaV#e.1.w....ad#b.y.ybV.ybmbcaT#e.4.A.yaT.4.x#bb.aP.Pbybxa1bia6aR.4aR..#Z..............#ZaN#8#7.C.FbV#U.N.E.C.Eala7#9........a3a3aQ#7..........#4aa#0#Xar#O.....#..aiag........aIar#Qazar#X..aAaz#Yah#5aH#Z#Raa#4....aGbuaB#Y.q....................ar..............ayawaq#L..............................auaAaw#V#L.............................................................#aKawao#L................................", +"#gbb#e.4.x#d.4#b.J.ybTbVbhb7b0bc#j#k#b.7.4........aWaWaT#e.z.x#aaT.7bg.w.1#daT.M.1.w.x.1bZbZbgaX.4bjb0bjaT#c.y.yaPaR.O#d#baTbgaUaUaT#e#b.y.JbTaWaWaT#daY#ea7bxbra8b4bxaR.O.I.OaB#O....bnag.E....#O.H.C.CaSa1bqb4.P.Eala0#6am......bqbybra0#7.C............aGaGar#Q....btbzaEaf#3.B..aGbtar#Q#Rar#Q#Qarbzbtai#5.D#Y#O#4aC....aHaG#Z#P.q..................................awaKaGao#M#U..............................auat#T#L............................................................auavap#V#J................................", +"bT.J.M.x#fbV.L.J.yaXbmbkblb2b2bcaT#e.4.K#b........aT#e#e.4.x.1b6.4bjbhbmaX.4.w#c.7.G#daXbhb0biaP.4bmbma6a5aXaO.4aTaP.O.u.J.MaT#e#b#e.4.w.1aZb0bibgaV#e.4.4a1a1aQa5a8aRal.H.uaOaraCaabvboaf.E.E........#8#La3bsbsbq#7.E.C#7........bobybsa.#7.B#7..........aGaL#Z#K...#bpbyaiaf#2.Bbpbpai#9.B#1#X.t#1..bpbuah#4.D#3#Pbu......aBac#1.q#1..................................axaxaq#T#K#W............................axaKat#V#J............................................................apap#V#L#W................................", +"beaSaWbxa6#d.x.Mbb#i.8bhblbkbdaY#e#c.5.z.7#i.........4.4.x.1aZbm.5bxb2aW#i.4.w.4#b#ebb.4bmbmbgaWaXbia8a6a5aRaO.4.xaO.L.xaRar.K#b.x.y.5.y#faYbhb7bjaTaP.4.yaQaN#8a5aRaO.1.u.Ia5bza3a0#7bna#.E#3............a0boa0a1aN.N.Ca0........a3a2a0#7.E.Cal#R........asar#X.qaraEbpaJaf#3.B.Dbpbyama#.DaC#N#Qb5..aEah#5#2.s#5aB........#Y#R#O.qaM..................................aqao#U#K#Uaz............................aAayap#T#Jauat#V........................................................#L#J#0..................................", +"....aVaVaO.L.waV#c.7.5bcbcbcaU#k#b.z.y.K#faU........#c.4.1#eaW.4bmbmaX#e.4.w.waP.....I.GaVbhb0a6aXbib4bja5aPaO.4.u.O.u.La5bdbc#i.z....#P#2adbxbxbj#i.4.y.yb1.H.NaOaO.L.I.Ib1azbybsaQ.N.F.E.Ba2............bya0bra9aR#7.Pboboa2a..Ea0a.#7.P.valba#R.q......#R#X#K#1....ahaf#6.D.B#2bnai#6#3.Bag#Qas..ayafab#2.s#6amb6..........#R#RaB................aGaGac#Q..............#L#M#0az.................#............avap#V#J#WaKat#V#L..............................................................................................", +"......#d.M.Mbaa6..#cbfaUaUaU#i#c#b.A.A#caZbb..bkbdaU#k.5aTaX.4.ybhbhaUaT.4.yaVaP.4bhbb#ebmaV#ebgbibyb0bxaVaO.4.I.u.O.1b7bhb4aWbWbc#i.5....aWbgaWaX#e.4.x.KaZ..bi#7.I.L.Oba.ubqbya7#8.P.C.Bbw......bpbnaf.Eadbrb4a7aQaNbqbvbsa0a..E.B#7.F.C.EbZac#P#R......boboa2a..E..#5#6.D.D#6bsag#9.E.Bal#0....azaK#2#2.Q#6bpaa#P........aGaHaI#0.q....aGaGaI#Z#QaGaL#Y#O#Y....ayayax#W#J......................auavao#J......ao#V#L#LaMawao#T#L..............................................................................................", +".........ybhbcaU#i.z#j#i#i#k#c.4.A.A.7bVb1..bWb2bcaU#f#b.7.4.Jbhb0bgaU#e#a.x.4aX.4.wbibib#aV#e.Ka6bxa8a5aRaO.L.x.x#db#bjbhbhbkb4aU#e.7#c....aVaT#e.K.x.1aS....aTa9a8a1#8a8a5aR.OaN.N.C.N#9........bybra.a3a7a7bsa7a..Obqb3bsam#8.F.B.E.E#7a0ag#3.B#Y.....#bvb5a0a..E.Bai.D.Da#bnaG#3#3.B#7am.#.#..bnaiaf#J#5aLaC#1.rbS......aGbuaB#Y#O....aGbYaB#Y#O#O#Z#R.qaB....ayaMar#W#K.#..........avap#VaqavaKawao#L.#auauap#T#Tapatap#V#J#V..auavao#J....................................................................................", +"........bhb2bcaU#e.4.y#j.4#c.5.y.x.z#ib1bhbkb2b2bc#j#c.z.5.4bhb2b2bjaT#e.K.y.4aP.4.w.Lb4bVaX#d.Ga5a6aVaPaO.O.I.u.IaSbbaTbc#ibdbc#e#b.5#f.L..#e#e#b.1.yaZbi.....4.4aQaNbrb4a5aO.O.xbiaWaX.M.D....a2a2#9brb3a1a5a1aN.N.va3bqa2#8.N.C.CaQbzb4a2ag#6.B......bobvbsa2#8.E.Caf#5#3aFah#9.DaEaga.aK..bzbvbqai#9#3.Dadak#P.rae......aIaI#Z#Q#O#ZaIaGaGaC#X.q#P#Q#Oaa......azar#0#M#Kaq........auawat#V#J#Tatao#T#JapaAaAao#Latat#V#T#J#0avauaAax#V#L....................................................................................", +"......bhb2b2bh#i#c.zbcbcaUaT.4.5.KaZbcbd..bdbkbdaU#c.8.z.5aUbhbjbgbcaP#e.y.w.4.4.L.w.MbiaW#d.M.xaRaRaPaO.O.G.u.Lbaa5#k#c#c#caU#i#c.y#baU.Ia8bi.J.M.yaTbg.waO.......Oa6a8bia5aO.Ibib2aWaP.1.x......a..NbobybvaQaN#8.H.Ca0a0a.#7.C.C.NaCbpboa2a#.E.B#9....a2a3a0#9.E.v.Eafbzbzbpaiaj#2.Baiaf.E.Bbzbybvafa#.D.Dak#P.samb8......#Z#Y#P.tae....aB#Z#Y#O.q#1#P#1...#azaraq#0#M#Kan..........ayaAapaxar#W#U#T#Jas..atao#T#L.e#T#Jaq#W....atatao#L#Maxap#T..............................................................................", +"#m#...bdbjbdaU#c#bbhbhbdbb#j#c.5.zbb#j#k.5bbbbaU#i#c.y.z#ibbaWbmaUaT.4.K.x.yaT.4.waWaT#eaP.4.w.x.4aOaO.4.G.I.x#fb4b..z.5#fbj#k#ba5.zbT.O.uaVa6aVaP#b.1.x.1..........a7a5aRaO.Ia8a5aR.OaO.L.wa5.4.x.B.Ea3a3a0.N.N.P.C.Oa.#7#7.F.C.Nb7..a2ag#9.E.s.EaiaL#0agaga..N.B.Fala#bzbybvah#5.D.Qa2#9.E.BaEbnai#5#3.B#3#P.ranaCaCaCaa....#O.q#1.#....#Y#Y#O#P#Pbt....aAaLaz#0#S#M#J#Z...........#avatayayar#0#M#Laq....#V#L#JaK.....#..........#V#L#LaMaAao#Lao................................................................at#V........", +"#m#g.6aWbcaT#k#bblb2bXbdaU#i#c.7.AbcaT#e.4#j#i#i#c.z.z#fb8#maTaTaP#d.1.x.1aZaYbgbgbmaU.4.4.J.w#fbZ.L.O.G.u.Ialb#a5....#d.y.1bda8a6aR.O.G.NbhaXaP.4.L.u.1bab.aV.4....b3aOaO.Oa8bra8aRaO.u.x.MaR.O.I..aAa0aN#7.N.H.H.OaR...N.E.valbs..aL#9#9#3.D.Eb5aGaI#Y.t#7.E.B.Eama2.DaEbpaE#5#5.Q.Dafa#.D.Eaiahaf#3.B.Banac#PaDaHbtaC#4.raHbuac#R.q......#P.qanaC......aAaGaG#X#K#Q................aoayaLaLaz#W#M#U........#Tat....................#T..atap#T#J...............................................................caxauap#J......", +"#h#..6.8#i#e#c.zb0b7b2bc#j#k.4.J.y#caT#ebmaWaTaP.z.z#cbXbc#g#j#e#e.4.1.K#db2bhblb0bmaT#d.4.xaSb......x.O.I.4aSaVbdbc#j.7#c..bib4biaO.N.xbhbj.4.4.L.I.1bTaYa6aX.4.y.4a6aVaO.Lbrb4a8aQ.O.I.1aZ.1.u#daGaH#8#7.F.v.Pbaa1#8..br#7.Na0.B#2btbt.E.E#6bn..ar#X#O#Z...E.E#9a2.B.BahahaEaEaf#5.Da#.B.B#7a##5#3.D.DbaaEaa#P#PaHaLad#R.raHaC#Y#P#P....................arar#0#N#Kas..................axaAaz#W#U#K#X....................................#T#L#Jas..............................................................auawax#V#J......", +"##.8.6#g#c#c.zbkblblbkbd#i#g.7.y.z#caTbhbhbmaV#e.K.KaZbc.8.8.A#c.4.5.yaSaYaWbhb2b2bgaT#e.4.w.4.........J#daWaqblb2bb#i.7#c..a8a6aR#8.x.LbmbmaU.I.G.LaZa5b2bhaX#a.w#abiaVaP.4.Ga6aR.4.H.u#daW.G.1a6ar#0b0.F.C.Fa4aQ#5.Qa2boa0a#bna2#9.Eae#3.sam......#O#Y......arar#X.t#5ajbzbvaEaj#5.D.D.B#6b6aj.D#3.Bambnaa#1.sabaDad#4.q#PaB#Z#R.q#R......................#X#N#Nanaz..................aqaraq#U#K#Xas..........................................................auauap#L........................................atatauavap......", +"#..6.7#l...z.4bdbdbcaU#j#c#c.z.A.7#jbhb2b2bcaT#d.K.w#e.7aP..#gbl#b#e#caT#c..bibjbgaY#e.4.y.w.4............aLaqbkbVaU#c.z#c..aVaP.K.I.Ga8aTaXaT#e.z.xa6bja6aV#d.1.x#dbxaV.4.I.IaRaO.N.u.Ia5.N.Ia5....aWbgaX.1.xaP#5#2.Dboa2a0a#b4a2#9.E.D#2am....................#X.tac..bzbvbvbnab#2.Q.DalbaaE#5.D.D#4aaaa#1.r#2aDaFaCac#Pb3#R#OazaIac#RaCaDaa................#S#Xaz......................#0#U#K#NaM..............................................atao.........#aKaxap#T..........................................auaKauap#T....", +".7.9#lbU..blbhaWbbaU#i#k.4.4.A.z#faZbhb0b0aWaP.4.y.y#e.7.z.y.Gbb#j#f.A.7bbbeaWaWaT#e#d.y.x.yaT.7..........aq#MbcaU#c.z.zbhbgaWaT#k.waVbxb4#d.4a8a9aRaO.IaX#d.4.x.JaWaVaO.M.x.GaV.L.N.Ib1a8.N.C..bqa3a0aN.N.I.1#5#2.Qbwb3bra.#7bqboa1aN.N#5.......................#bqa3a2aEaLaJah#6#2.Q#2aJai#5#3.Q#2..#Paiaf#5aDaHbvbzac#4.r#S#RaLaKar#Q.qaCaa#P......................azar#X................#M#M#W..............................................awaAap#T......avawat#V#L#V........................................auawav#V#Jao..", +".A.8bXbfbdb4b2#iaU#i#k#k.K.A.7#lb8bbbgbhaW#e.4.z.x.1aT.z.5.w#d#g#c.8.7bVbdbdaTaX#e#d.K.x.1b#aY.7.8.7......#M#M#i#c.5.zbib0b4aWaP.4.w.4bxbxa5bra8a8aR.4.O.u.1.y.1bSa8a5aR.4.x#d.I.I.Lbaa5a..H.Ca7b4bxa0a..N.Cb..D.Daibobsbq#9.Ebxb3a0#8.H.H........................b3b3a0ahahaf#5#3.B.Qafaf#9#2.Q#3b7bzbzaEaf#3.QaHbtaFak#P.rab.Daa#P#Y#Q.qaD#4.raa............ar#Z..aGaLar#X#M................................................................auaAaAao#T#T....apapao#L#Tax........................................atatao#T#J....", +"#.bUbfaUbdbkbc#f#f#f#c.4.5.7#bbVbj.zaWaWaT#e.4.w.w#faZ.y.4aTaS...z.7#ibdbWbd.4aP.4.4.1.yaZb6bgaU#e.7.............7.zaZbhblbZaW#ea8a8aVaR.O.Ibrb4bxaR.4.I.v.w.1aWbibia5aRaO.I.I.I.Ea1a1aN.N.ualbqbybsa0#8.F.E........a2a0a.#7a7brbsaQ.N.C.P....................a1bobvbqa.#5aj#5#2.Q.QbabY..#3.Q.Dbw..brbyai#5.D.DaCaCabak.r#2#5.raa.r#1.t#P#1.r#P..........aGaGaI#0#KaAaAaq#M#K.#........azar..................................................atavap#T#Jaq.bauap#V#L#Las..........................................#T#T#L#LaK....", +"aZb4bd#jaWaU#i#c.z#b#b.5.y#faZbc.y.yaTaP#d.4.w.y#db8aW.zaTbab.......bfbbbbbgaW.J.4.z.y#faYaWbdaU#e.5.K..............a5bmbmaVaTa8b3bxa5aR.O.GaOa8a7aN.4.P.uaOaPa8bxb4a8aR.O.N.G.u#8a.#8.N.C.FbZa3a3a0#8.N.B.FaQ....a2aga.#7.Ea1a1aQ.O.P.val..................bqbra0a2a0#7.C#2#3.B.Qanbw......#3....a2bnbnaj#3.B.Dacaa#2.s.rbw#4.Q#5.q#1#QaM.r.rbY..........aAaLar#X#K#Qar#X.t#X.......#aAazar#X.t..............................................aoao#T#L#0#LauaKat#V#Latao..............................................#Vap......", +"bdbWbbbfbe#k.4.4.z#fbV#c#b#iaU.z#lbhbh.4.4.x.x.1bTaY.y#fb2aW#O#0..blb2#gbxbgbmaT#d#b#baPb2b4bhaT#c.K.z..........aE#5aOaVaTaP#ea8b4b0aVaO.L.I.La1aP.O.H.u.Hbaala8a8a6aVaO.G.I.1.HaRa6.P.P.1a4..a0aQa..N.C.Fal........a#.E.E.B#8aN#8.P.C.1b7..................bsbsa.a.#7.P.v#6.D#5#6ah................ahafa#.D.Q#6..#P.r.ran#4.Q#2am#2anaB#X#4..............azas#0#S.t#Z#X.t#NaM......aAbuaLaq#X#K................auaAat#L........................#J#T#V#Vauawaxap#T#Lavap#T......................................................", +"..bbbWbU#o.5.5.A#lbh......bUb7.4bhb0b0aW.z.K#e#iaW.A#fbV#0#S#QbfbebmaU#ibhbcaU.4.K.w.4bhblbhbc#e.4.A.1........btbn#5bh.N.4.4.Ga8a8a5.4.O.I.u.OaOaO.N.u.1b1aVa5aVa5aRaO.O.u.IaSa1aQaWaT.J......a.#8.N.F.Palbs..........#7..a#ag.P.N.v.1bs........a5aN..bna2af#3a0#7#7.E.valb#bubtab#2#2..............a##5.D.Dalbs.....#ad#4.D#PbT#PaJ#M#Z..................ar#0#Q.t#1aI#K#X..........azaGar#0#Q.tar..............avaKap#Tauap......auavap#T........atao#L#Watap#T.t#WaAao#T#T....................................................", +"..bfb2bX#m#g.6.8..........bUbfbfbhb4b0aU#e#b.y#b.4#eaU#m.8#Xblb7bhbhbhbhbjaYaT#e.z.y#ebcbcaU#i#c.y.y#f..blbd#j.7abbmbgaVaX.4.Ja5aVaP.1.1.u.IaR.O.H.u.Ibaa4a8braOaPaO.O.G.xaSb4a5aQ.N.H.w.4aXa7a9.E.N.CaQa7aQ.N............#9#7.Ebq#8a0a..N....a8biaQbpbya2a..N.B.F.N#3.Na0adaFad#4.s#5............bnai.E.Q#9a2..........#2.r#5#Paa..........................#Q.tasaG................arar#0#M.t#N................avap#VavaKap#V..auaAaAap#T#T......#T#L#Lax#V#T#L#Uavap#V#Jaq....................................................", +"..bfbf#m#g.9.6#l......#obe#h#m#nbgbjbc#e#c.z.y#e#h.7.7#m#g.6bfbkb2bjbhb7b0aUaT#c.z.zaWaTaT#i#b.1.y#fb8#gb7bW#g.5bibibgaWaX.4.waRaOaO.L.u.Ibab4.x.L.Halba.Aa8b3bx.L.L.x.x.1bZb0a1aO.H.H.waVbrbxa9aR#8#8bqa7aQ#8.v.............E.Ebxb3a1a..P.Fa8bybia0bob3boa.#3.E.Fa4......#Xaa#4.r#2aD..........bobyaEahaf.E..............axao#Laq..............................as#Z..azazar#S......#0#0#N#N#Nbu........awaq....ao#T#Javav#V#L#Vavavat#V#J#W................#T#W#Wao#V#L#Tav....................................................", +"..be#m#h.8.6#lbe....bfbf#o#m#g.6aWaW#i.4.1.x.1aZ#g.6.9#j.7.zbhb0b2bcbhbjbhaW#e.4.ybhbmaWaT.4.y.y.1bXbh#g.7.G#gbgbxb7bZaV#e.4.y.J.O.H.u.H.1bZ.K#b#j#i#c.AaZa5a5aQ.O.G.OaOaRa5a5aO.O.u.N#dbja7b3a8aQ.N.u.NbYaQ#7.C.........#bnaga3bqa4aN.N.C.Fa5a9bza2a2a2aja#.D.E#9...........D#P#4aJ#O#Ra2af.E..bpbzbpaiaf#3.B............az#M#W..............................aKaG#ZazbuaG#0#S........#K#M#Rasan......awaAax#U#J..#Laqatao#T#Jaxapap#V#L#LbQ......................#L#T#Uay.............batao....................................", +".7bh#..8.6#cbdbdbc#j#cb2be#h#..5aT#k#k.4.w.AaZb7.6.6#g.8.A#gbgbhbhaUbcbcaT#e.4.zbjbhbhaUaP#c.w#baTbc#j#f.7.8.5bibjblbjaX#e.K.w.M.I.I.IaSaS#b.z#baW.z.yaTbdaQaO.O.I.Lb1....aRaN.O.C.1aSb.aPa3a9aN.O.P.uaOa0#7.F.CaQaD#2..bpb3ai#7a0aN#8.P.FalaObpb3a2a9a3a1aN.N#3..............aHaH#1.qbobra..E.Ea0bwbvai#5#2.B..........aGaG#X#XbS..ayar....................aGaHaG#XaGaGas#X#K#X........#L#Jas......awaAaAaq#M#J....atao#J#LaA....#T#L#JaA............................................aKav#V#L..................................", +"#b.Abc.8#.bkb0bVbb#k#b.A#n#..8.6#h#b.7.w.y#eb1.7.6#.b8.7.8bXaUbmaUaTaWaT#i#c.y.Ab0b4bVaU#e.4.y#bbfbb#g#b.5#g#iaWbgaWaP#e.1.x.w#daWbdaU#i#c.y.y#l#e.5.zbT.....Oa8a5aRaO.ubm.L.O.P.Cb#a9#e.4a1aQaN.N.v.Ha4#8.N.v.Fa2bn#5.Dboboa9a9a0a..C.Pbaa4..bpbnahbsbya0a..N.B..............ac#1.qaabwa2#7.Ba.a2bzaE#9#3.B.E......aFaFad#4#K#1b6ayaK#W#K.....#azar..........ar#Y#Oarar#X#K#Oas......axaqaxaq......aqaqaq#T#J#W....#T#J#W....................................auap........avao......avavap#T#L..................................", +".7.5blb2aUbhb2bWaU#c.7.z#j.8.6.7#n#c.y.5aTaW.8.5#lbW.8#fbe....aT#k#k#e#k#b.K.4bhbjbjbjaP#e.J.A#bbb#i#c.A.7be#iaWaVaT#e.4.w.x.yaVaO#j#i#e.7.zaZbc.BagaT..a5a5aO.Na8aRaO.IbcaT.4bmaXaP#e.J.J#8.O.P.H.Fb1#7.N.P.Fb5bzaj.D#9a2afbybZa0#7.C.Fa4....a2afbqb3bva2#8.P.C#P......aGaI#Y#R#O#PaDag#9.E.Na2..afaf#6.D.Ealad#4..bvbuab#4.sbRb6ax#W#K#MayayazaG#0#M........#Q#O#O#X#Q#N#Oanar#XawaGazaq#Maq#J..awaL#V#T#M#UaG............................................auaKap#T....auaxat#T....apao#T#JbY..................................", +".z.7#mbkblbdbdbb#e.4.z.KaU.6.8bTbe.7#daY.#....#g..............#c.4.K.x.K.7.y#caYbcaWaT.4#b.A.yaT#k.8.7.7bV.M#gaXaP#e.4.w.x.1bTbV.L#b#c.z.A#bbV.B#6....bib#a5aO.L.uaO.O.I.Obibia6aVaP.O.w#8.H.P.N.1baa3.E.P.Oa0..#5.D#2..#3a3aQ.NaN#7.C.N.B..bna#a#a3a9a0boa0aN.N#Q......aGaC#Q#P.......E.C.Bbs....#3#3.D.DalamaD#4aFaLaDaa#2.rabb6aHaHad#RaAaGaAaA#0#K#0................#XasaK#0#S#SaGaz#W#K#W#K..axaxap#U#Waxauauap#T..................................auavap#J#V#Lao..avaxao#Lao....#L#Laq....................................", +".z#fbb#ib2bbaU#i#c.5.A#faU.8#lbfbkbb#i.4#cbfbf#m#.bhbmaU#i#b..bf.z.K.z#iaU#b#iaUaU#i#e.4.z.A#faY.5#b.7#mblbf#mbf.4.M.y.x.w#dbg.7.z..bibgaVaP.1a..#..a8b4b0aRaO.H.u.O.I.uaObib7bjaVaO.J.L.N.Ca9aQ.N...#b3bsa..Ea1aQaQ..bqbqa9aQ#8.C.P.val.Cbza3a2aNa0a0brbsa1a..N.C......ac#Y.tac.........#......bzbv.D.D#9aiaLac#PaDadab#2.s.radbSbubtac#4.raqar#0#M#Naz................azaraq#X#Sayarazar#Xaq#1..ao#W#U#JaMayazaq#L#T#T..............................auaAaAao#L#L#U....apap#T#T................................................", +"#cb8bebdbl#i#k#e.7.z#fb8bh#lbe.zb7bc#i.KbUb8bfbhbhbgaYaUaP#b.A#kbe#h.9be.G#i#c.6#e#e#b.K.y#bb1aY#e#ba6a5aR.4#jbb#j.w.4.K#eaV#c.AbTbhb5bjaV#e.J.w....a8a8a5.4.1.x.IaR.xbabmbibxbjaP.4.G.L.Cbxa9aQ.N.Ha0a3a0aNa8a8a1aN.N.Lb4a7aQ#8.P.Nalb1.Pbqbrboa3agbqb3bya0#8.E.B......#R.qae......aGaI#X......aEaEaf#3adaCab#4.raaab#2#2.rbY..aDaHaD#4#P#2#U#M#M#KaM..................#Xar#X#KaybuaGaGar#0.tayawaq#L#LaqayaMazaq#L#Jaq................................atao#L#L#Uax....#L#T#JaA................................................", +"bVbe..bbbcaU.7.7.A#fbebc#k.7.A.7aZ#i#c.ybeaT.4blb4bVaYaT#e.4.y.4.4.4.7.1.xaT.7.5be.5.1.x#fb#aYaW#ea8a8a5aRaO.L.G#bbgbmaX#d.w.zaZ..bxb0b0aXaP.y.w....a5aRaPal.I.x.1.I.1bZaRa6aVaP.4.w.x#da7bxa8aN.P.I.Na.#7a8b3bxaRaO.N.Nbra9#8.N.C.Nb#.Fb7bsbpb4a3aga3a7a4a.#7.C.F..................aGaC#Q#Q....ajaf#5.D.Eab#4#P.Db3.r#2#2am....bRadaa#P.sae#X#0...........................t#Q#QazazaGaGar#M#OaGaLaq#Mawaq#TaAaz#W#M#Mav....................auauap#Lap..#V#L#LaK..........................................auavap................", +"be......#i#k#c.A#caTb2#i#c.z.7aZ#j#k.zbkbdaUbhb0b2bWaW#i#c.K.z#b.8.5.6#h#daWaVaP.4.w#b.4#eb2b0bhbib4bZa5aP.4.L.ubhb7aYaX#d.y.4..aWbgbgaT#d.4.x.1aT..aOaO.O.I.C.1b8.1aRb1.OaXaP#e.1.u.1baa1a1al.N.u#8a9a1aOa8bZbxa1aN.I.H.Oa..N.C.FaQ#8a4a0a3bpbsbqa.a0a0al#7.F.C#7.D................ar#X.taC.......D#2.Bam.r#P.raJ................#R#P.rabaC#NazaGar#XaBak.q..........azazar#X..aqaraIar#X#K#Kazaqawawazaq#W#K#W#L#K#0ao..........auavao....aAaAao#Lao#L..ao..............................................aAaxao#J..............", +".........5#c.A.zaTbd#k#c.z.KaZbd.4.zbkb7bd#jbhblblbcbb#i#b.y.A#b#i.5#cbeaZ.....4bc#i.4.8bgbxaWa8bxb4b0a5aP.4.I.u.Ob0bgaP.M.w.4#j.7aWaT#e.4.w.1#f....a6.I.L.v.1bjaV.I#ebc.I.O.4.G.w.1bVb.#8aO.1.C.Nb7b3a1a5a9a7a1.O.N.H.CaO.N.C.Fbaa1#8.P..a0a2a2a..N#8#8#7.F.C.1bY#5.D................#Q#Z..bpa2#9.B..bzaDab#2ab...................2b6aaaHaDad#PaLar#Q#O#RaGaCas#R...#aLaHar#U.t#U#X#0#X#N.taM#W#UawaMaAaq#W#L#L#J#Uaxapawawaq#T..aKaw#V#L..avaxauap#T#J................................................atavap#T#L..............", +"#i..bf#o#g..#k#caZbe#i.7.7#kaU.8.6#bbkblbd#ebcbdaYaT#k#c.7.A.z#faT.z#f....aWaU#ebjaT#b.yaUaT#ia6bib#a6a6.4.O.x.I.OaW#e.4.w.waP#j#caP#d.4.J.Abab8..biaRaP.1.O.Ibaa5#cbd.......x.L.MaOaV.4...I.H#8b#bxbiaQ.Oa1a1aO#8.I.v.FaQ.C.ualbsaN#7.P#8#7aga.#7.E.C.C.F.Calbaai#5.B....................bpbva2#7.CbzbvaDaj#2.D........ad#4.......#b9aHaDadab#2#1#X#O#RaGbYaC#Z#Q#PazaGas#Y#Q#O.##M#S#S#Oac....#Uawazaq#V#T#Jaq#0aKawawaMayaq#W#Javao#L#T..auaKaAap#T#T................................................#V#V#T#TaM..............", +".5.8bU#n#..6....b8bkbdaT#h#h.8.A#nbfbcaU#i.5aUaUaU#i#d#b.x.y.KaZaW#baT#ibhbVaW#i.z#e.z.y..#ebma5a8a5aRaO.O.x.x.GaS#e.4.J.x#daY#j#c.z.K.4.xaSbV....b0bi.O.G.u.1a6..............bhb4bc#i.4.K....biaVaP.I.O.CaOaO.O.H.u.CbYa9.N.Oa0a0#8.F.Cal...N#7.E.Bala3am..aEbtaJ#3.D#Z..................a2ag#7.BaFbtbuai#5.D.Q....aHbtaD#4.r......bTbzaJaDab#2#4#Q.taGaGaHaC#R.q#PaGaKaI#Z#Oac#Payazaz#0#K......ataq#V#U.t#0....apaoawaAaAao#T#J#W#L#T....atavap#T#Jaq....................................................#V..................", +".5.7.7#m.8.8.#bfbeb4b0#i.5.8bkbd#j#caT#i#c.z#iaT#k#c.5.y.y#bb1b1#b.GaUaTblb0aU#e.z#c.x#e.....4aRaVaPaO.4.N.u.1baaV#d.1.w.1b1bd#c.7.A#l..#d....bea6a6bkbd.M.OaR................bhbjbc#e.y.K..bxbZaVaO.G.4.CbZ.L.I.v.PaSb#....a1aQaN.N.vala1.......N#7a0a2....ahaf#5.D.D#X#Q......bnbnag#5....#7.E.EafaEah#5#2.s#3....aHbvad#4.D.#....aFbvb3aE#5.D.D.t#1aCaCac#Y#Q.q#1aGbuaC#1#Oaa#P#PaLar#X#K........#U#M#J#UaA....#L#Tataxap#V#J#Laq#Mao....aoao#V#L#Wav................................................................auap....", +".7#i.7#m.6#.#o#m#jbhaT#c.yblblbc#j#c.A.4.A.zaZ#e#c.5.y.y.1aZbVaP#d.w.yaUbhbc#e.4.z#f#bb0......aTaOaO.O.G.G.x#db4a6.J.1#daTaU#i.8.A.7#m......b7be#kaPblb4aU#c.A................aWaT#k.4.A#fa8bxbiaX.4.G.MaR.....I.NaQa1.......P#8.N.v.CbY......................#3.B.DaJ.tb5....bpbvbnaf#5.D#3a.#7ag..ajaj#3.s#3ah....aDad#4#2.rab....aDbpaJab#4.Q#2#ZbuaM#Y#Y#P#P#4aCaGaC#0#Q#O#Z.q#Raz#0#M#K..........#U#Vaq......awapaq#W#W#J#UbY#0#M#M......#L#T#Way................................auauap#T........................auaAap#L..", +"#f#j#i.9.6bX..aObfbe#h.6#bbWb2bb#i#b.z#i..#k.....7#b.A#baTbcaX#e#a.w.K#laU#i.4.A.KaUaY.........4.4.O.L.u.I#db#aVbxaY#b.w#j#i#c.z.KbXbdbf#j..be#j.7.Ibkbd#k.7.AaU..............#d#e.4.7aZaYaVa5aR.1.1.xaR.......................v.C.Pa4.......#aFboboa2a.#3......#3..#Oar......bvbvboaf#3.B.E#9.C#7..#2#3.s.Da4......abaaah#5am......ahahad#4#P.Qaj#4aHaCad#O#OaaaMaeaB#Z#R.q#1#P.rad#0#M.t#1....................awaKat#T#L#L#Uasaq#U#K#0.........aavavap#T...........................#avaAap#T#T..................auat#Vat#V#J.#", +"aZbbbcaU#k.7..bUb8#o#h.6aYbkbd#i#c.z.zaU..........bh#b#cbjbg#e#e.K.w.4#e#ebgbbaV#i.4.............w.5.O.LalaO..aWaT#e.y.waZ#c.A.KaZbebWbj#j.7#k.7.7bXaZ#i.4.A#c...................y.K#faY....aOaO.G.uaSa6....................................btbobybsa0a..E.v................aibnbnaf#5.D.s#9.E.C.......D#5ae........bzbzaEaf#3....aH#4#4#5#P.D#6aEab#2aa#4#4#P#P#2aF#Q#P.q#Obw#Pam#Q#Q.t#Qas..........awaw#V....awayao#T#L..aqaq#U#J#Maz.......#auaMawap#V#L..........................avap#V#J#L................avaKat#T#T#L#W..", +"b8bkbb#j#c.5.5bfbf##.8.z#nbb#j#k.7.w.8bb........bkbhbmbmaVaT#d.4.w.w#dblbkbjbcaTaP.5.xbhaU#d....a0be#maT.A#g...4#e.J.JaZaY#i#g#i.7b2bk#j#..A#m#k....#e#c.z.4bda6a5aP.O..........bcaU..a8a6aP.4.O.xaSb.......................................ahbobvbwal#7.E.B............aEaDajaiafa##6.B.Eam.Db#........a2a.........bzb5bnaf#2.BayaGbv.Q.r.s#9aJaDaa#2#2#P.r#2#4aD......#Q..#R#Y......#X..........auawaKax#W#M..ataq#U.taqat#T#L#M#XaK........auauayaxao#L#L..........................#V#T#L#W#J................avat#V#Laqaq....", +"bdb2bb#i#cbmaUaT#e.8.6#l..#k#c.5.5.7bWaU....bf#oaUaTaXaVaP.4#a.w.x.1aWbhb4b2bcaT.4.4.w.4aU.4.z....#h#c.7.8bf..b4bfbe#j.8#j.5.7#c#jaO#j#k.AbhbcaU#i.Kbf.7#cbca8a8a5aRaO.I....bkbWbc#ibib4aWaP.O.xaO..................boa3a0a..Nbqboag.N........a3a2ag#7.E.v.E...........#byaD#5#9#5.E.E.DbTaJ.Dag#3....b4a3#9.E....aEbpbnah#5.D.DayaFaFaaaFaDaLaEab#5.r#2#1................................axao..avaAaxax#W#M#L..#W#T#L#0avavao#Tauavao#L......apavatao#T#Jaq............................#Vao#LaK................aoao#L#L.#......", +"bWbd#jaPbhbhbmaW#i#b.z#o.....5.7bhbbaU#k.4bfbhbhbgaU#e#e.4.4.J.w.1bTbVbhblblbhaPa5aXaO.4bf#n#g......#.#i.#..aVblb7be#j.8.9.7b8a1aO.I.O.8bhb0bkaU#e.z.5bb#ga8b5b5a5aO.4.I.I..bjb0bcaVaVblaVaO.I.w..................bqbqbqa0a..N.Bb3aN.N.E....aEa0ag#9#6.C.Falbqa2#7....aFbpaJ#6.s.D.D.Ealbn.B#3af#3.Ba2bpam#7.Bam....aiah#5#3.s#6bzadaa#PaDaDahad#4.D.ram................................awawao#Uatap#W#W#U#JaM......aq..awap#TauaKaxao#L........aoao#T#J#WaM....auauap#L..........................................#L#V..........", +"bb#j#kbhbhbkbmaU#i#b.z.z....bkbkbhbcaU#e.4.AbWb7bdaU#e.M.4.w.x.1aSbgbmbgbcaWbibga6aVaP.4.G#m#cbcaU#ebkbdaU#i..blbUbe#g.5.8.......NaVaO.Ob0b0bjaT#k.z.zbia6bibxbxa5aO.O.u.L..bcbibgaWaX#d.w.O.x.1..a9a1aQ.H........brb4bsag#7.E.Ba.#7.Bal..bza7bx#7.F.C.Eala2bqa..Ca...ahab#5.Bbw..aj#6bqa3a0#7.F.D.Baga.#7.Bal......#5#6#3.D#2b5bz#P#4.qababab#4.r.DamaF..............................awaAaAao#L#U#T#U#J#Jas............ao#T#Javavap#T#Jap........#L#J#WaA......aAaKao#L........................................................", +"#j#ibjb0b7bVaYaT#e#b.J.K....bkb7b0bc#i#e.z.w#cb2bhaT#e.4.y.4.4#eaVbibgaWaTbibxb0a6aVaP.4.G.GbhbcaWaT.4.5aU#k.7.7#m#g.9.6#l..bWa8b.aVaRaO.xbdaU#c.4.y#bb7b.a5a5aRaO.O.I.u.1a7#ibhb4b.aP.4.w.4.1a7bxbxa1aN.I.I....bobqbqa3a..N.C.B#9.C.EbZ..aEa7bs.v.E.C#7a2..a..N.N......#2.s#6......bqb4a3a0.N.B.s.E...E.Bala3....bnaf.D.D#6bnaFaj#4.s#4ac#2.s#P.ranah.r..............................axaxap#T#Kaq........................#V..aoao#T#Jas........................axap#T#J.b......................................................", +".4.7bhb0b0blaU#i#e.1.y.yaTbdblblbjaU#e#b.z.y#ebhaU#d#b.z.z#e#ibfblb4bjaTaXbib4b5a8aXaO.L.G.Lb0bjaU#i.4.A#j#c.5.6#g.8.9#gbU..bib0b1a5aPaO.G.I#e#b.w#baTbiaWaRaRaO.4.H.u.1aR..bibxblaW#i.4.w.4aZa7b3bZa1.O.H.I....a0a3a0a.#7.E.v.Fa0.Na2....#9aRa1aRa0aO.u.1.....N.#.........#aFaj#2..bobqa4#7.F.Calb5......aHaDaa#Pbp#9.D....abab#2.Q.Eah..#P.rajaM#R.s#1aB#P..........................aqao#T#M#1ax..............................#L#T#0..........................#V#V#Las........................................................", +".z.7bgbjbhaW#e#e#b.y.x#baTbcbdbcaU#k#b.4.x.1aUaU#k#b.3.x.KaT.ybhb0b0bjaTa6bibjbia6aP.4.G.x.MaPbkaT#e.5.y#b.8.z#c.7.7#lbe....bib0bZa5aO.L.G.L#b#b.zaZbjaXaPaO.4.O.H.I.GbTa5..a6bgaW#e.4.5bga5aP.4braR#8.O.u.I..a0..a.a.#7.N.B.FbT............aObqa7a1aQ.Nb5................bzbvaj.r..a2a0a..F.v.Ea3......aGaLaL#Y.qaf#3.Q.......r#2#6bw..awaMaq#1#P#O#2aCad#R#P............aG#Z..........#M#L#0az..................................................................#Tao..........................................................", +"aU#jaWbcaUaT#e.4.y.A.y#fbbbfaWaUaT#c#b.A.K#faU#i#c.K.x.KbTaY#cbcbjbgaT#e.4a5a6aXaP.4.L.x.GaObhaY#e#b.y.w#f.z.z#ibe#g.7......a5a8aVaO.O.L.u.O.1.zaZbcaS#d.1.J.I.N.u.4bab#.Oa8aVaXaP.4.Jbibib.aX.4.G.4al.u.IaQb4ag.C#7#7.E.B.Fala4.............4bxb5a1#8.N.C................aDah#2.s..a.#8.E.C.Nb4..........ac#1#P#P#3.Bba..aiaf..........axaq#T#J#R#1aCaFak.r#4..........aGbu#X#O................................................................................................................................................", +"#i#gaUaUaT#e.4.1.x#aaTaYbf#o#i#k#c.7.z.z#fb8bh#b.z.x.z#fb2#i#baWaWaTaP#b.KaVaRaPaO.L.w.u.OaSaU#i#e.K.x.zaZ.6#fb7#m#g.7#g..bgaVaXaP.4.N.u.Oba#d#e.GaPbV.I.M#db#ba#8aPbiaPa8b4a6aP.4.4bib5b4aWaP#d.G.O.H.ubaa1a2#7.val.F.F.CaQa4..............bqa8bsa3#8.H.uaQ..........a7a1a.#2.Dba..a9.E.N.Na4al..........#R#P#Pbt.EalaHbzbzaf#5.D#2......#U#MaAbS..acak#PaHaFab.r......aI#Z#Q#Q........azaG#0#Q....................................at#T...........................#auat#V......................................................", +".9.7.7#k#e#b.5.K.y#bbXbcbX#o#n.5.z.A.y#fbVbcbU.z.A.z#ibVbb#k.4#eaX#e#b.K.xaP.4aO.O.I.x.1bSbZ#k#e.5.x.2bVaZ.8bX#m#g.8.6bbbhb0aO.4#d.L.I.Ibab#.L.L#db##c..........bgbZbiaOa6aWaPaO.J.JbmbibiaWaO.L.x#d#8aSb##7a..C#7..........................a1a9aQ#8.H.v.F..........bqb4a1aN.Cab......a0al.P.H..............#4........bzb5bqaf#3.B#4.r........bTb8....#PaFbubt#5.r......#S#O#P.#........aGaK#0#O#0...............................#aAauap#T........................avaKat#T#T....................................................", +"aU#j#g.4#b.K.A.x#caZaYb2bX#o#h.8.z.1#caT#l.9#l.8b2#ebkbc#e#c.z.z.4#b.J.A.zaS.L.O.I.x.1aSb##b#b.z.A.yaZbe.y#j#m#g.8.5bb#i.4bgbm.L.O.u.3aSb..4a6a5aP.Lbe............aVaXbibiaWaX.4.xaOaVaVaT#d.M.w.waZ#8.P.O....#7........a8a8a5aR#8.u........aQaN#8.N.C.1b1..........bqbqa0.N.Ca9a0#8..#8.C.Hb1........................aFbpbna#.D.B#9.D.........2b6.a....ahaDab#2.rah....................arar#Q#N................................avauaKao#Lavauap#V................avat#V#Laq....................................................", +"#g#c.5.A#c#b.K#f#eaUbUbU#o#h#..6.9#n#..9.9bS#obV#hbbaU#i#c.1.x.KaU.w.K.KaSaZbf.G.M.G#daRbVbd.A.7.zaZaY.z.y#ibmaTbkbdbd#jbhbZbmaV#e#daR.w.I.Obia6aP.O.x.............4bib4bZaVaP.4.w.4aPaPaP.M.x.1bab1.N.C.N.O............brb4a5aR.O.C....a1aRaO.N.N.v.Na4............a1aQ.Nbqbrbra1aN.C..................a2a...........aiaha##3.s.E.sae..........b6bS......#4#2#2bY......................#X#Q#Oan..................................avap#T#LauaKap#T#T............aK#V#V#L#T.#....................................................", +"#e.4.5#cbcbd#g##bf..#o#n#n#g.9.6#l#o#..9#lbfbd#j.8bhbcaUaT.4.7b1bdbcaU.4.z#n#h.9.8#..z#mbhaWbdbcaT#e.7.x#b#jbgaWbWb4bbbib5b0biaT.4.J.w.yaP.Mb0aWaO.M.IaW#e........bgbiblbjaV#d.J.w.4.Oa7a9a1aQ.Nbg.O.F.u.1.O.u........a7bsbxb#aO.I.u.Obra7a1aO.N.H.OaQ...............N.N.Pbqb3b3a0#8.C.N............bob3a3#9.E........#5a##3.D.Eb5#6aD..........bRb6........#2#5..................................................................ao#T#LaMavap#V#Jaq..........auaxap#L#V........................................................", +"#ebfbe#j.9.7##bU.1bvbU###..8.3##b2#l#obe#j.5bb#kbkbhbgaUaX.4.wbeb4bc#i#c.y.6.8.6#h#i.4bhb4bcaU#i#e#b.w.1#laUb0bkbWbWbdbmbxaU#i#b.4.w.ybgaWaT#eaR.4.x.LaP.8.y........a6a6aV#d#d.w.GaPbrbxbsa1aN.N.u.N.v.Fa1.I.CaN......a5a7a1aO#7.I.Ha8b0bZa1#8.N.v.....................F.Na3bqa1#8.F.v#8............bobrbo#9.E#7.........D#2#6a2#6..............bRb6............................aGaCac#R..................awawaq#U........................ao#V#L#L.#..........apapauauat#T......................................................", +"aTb2bb#g.6.8.I.1a5bo#o#o.9.9#lbe#hbUb7bd#g.7.7bhb0b4bdaU#e.5.y.4b0bc#e.4.z#f.z.9#n#b.ybUbf#m#k#e.5.1.KaZb1b0bjbdbdaU#ibhbdbmaT#e.J.wbhbhbmaT#d.y.L.x#dbe#h.A........aVaTaP#d.y.x.JaWbrb5bxaQ#8.H.C#7.Ib#b#.H.HaQ........aRaQ.N.P.ualbrbZbxaR.O.I.CaQ......................a0aQ#8.N.C.Na1........aFada2a0a.aiaf.D..................................b9b6........................aGbuaLac#R#O..............ayaLaGaq#Mawaq........................#V.#..............#TaKaAap#T#T....................................................", +"aUbe#k.8.A#l.1aR..a.#o#n##bUbf#n#.blbfbe#c.z#cbhb0blbV#i.4.z.y.4aW#i.4.4.zaZ#ob6.5.5bUb8be#j.8.K.5.yaZbVaWbcaTaUaU#ibhb2b0bcaT#k.Kbhb4b5bm#i#e.J.K#dbZ#ma6aVaPbgaW#d#e#d.1.J.w.1b6a9bra7a1#7.N.C.uaOa4a7.I.uba........a7.O.O.H.H.LbZa5a7a1#8.1.C.CaR..............ad......#8#8.N.F.FbT........aLbvab#7aNbpbnag#6.Q.................................2b6..............aGaGaCacaqaGaGaB#1.q#P......ayaz#W#Kayayaxaq#Kayap#Taxao#J....auazar........................avaxat#V#J#W..................................auauap#L..........", +"bh#g.8.A#gbe........#7##bXb8#o#mbmaWaXaP.7.5bebhbhbmaT#e#b.A.y#faUaT#b.waZaYbVbW#mbfbWbU#n#g.6.8b8#f#nbfaT#i#e#b#k.4bkb0b0bc#e.4.ybhb0bVaY#e.1.y.zbg#ma8a8a5aP.L.x#d.x.L.M.xaSb.aWa8a9aRaN.N.H.u.HaQ.O.H.I.1bZ......a7b5bx.I.H#8aR..aRaQaN#8.H.u.OaR............buaa.r.......C.P.Ca1.#a2a..E..aFad#4.sbnb3bvaf#3.B....................aHaDad#4.r....b6.#..........aGaGaLaCac#P#PaB#Y#O.qae....ayaMaz#0#Saybuax#W#LaAaq#T#J#T#M.aauayayar#0.t....................apapao#L#Uax................................auaMawao#L..........", +".6#j.A.7bX...........EbUbXbX#obhbiaWaVaP.1.z#oaWaWaT#k#c.y.y.KaZaU#e.1.y#ebfbe#n#..Abe#n##.8.9#l.6#lbebf#h.4.4.x#b.5bgbhbcaT#e.K.wbgbhaW#e.4.K.x.4#gbib5b5aV.4.G.I.M.w..bk#dbb#cbha5aN.4.O.P.v#3b6#d.H.NalaQ........a9a7a4#8.C.H....#8aO.O.P.H#7b5..............ad.rbY..............bobnaga#.Bab#4.r#6aEbnai#5.D.Bai................aHb3aJad#4.Q....bSb6..........aGaHaLaLaa#P#R#R#O#Oan......ayazaq#Sayayazar#U#J#U#W#J#M#L#L#LataGaLar#U#K................auavat#T#L#LaK..................................avavat#V#Jaq........", +"bXbf#kbb#k............#obfbfbhb2b2a6aT#e.4.x#oaT#k#e.4.J.A.7b1bV.4#c.x.yaT#g.5#..A#.#j#h.8.6#lbX.8bXb8#o#haVaT.4aU.xbcaUaT#e.5.x.zaWaTaT#e.4.x.1#i#ia8bxa8aP.1.x.GaS.1..bfbf#kbWb2a5aR.N.I.C.Nbaa1.O.uaS....bkbha5aRaOaQ#8.H.ual....a3.H.L.uaOb#al................aa..............bpb3bsaf#3.B..#2#5..afafa##2.Bba..........aGaI#Y.qaFaHaJaa#2.rab...2b6..........aIaCaBac#R.sad.....#........#W#W#U#KaMaqaq#W#M#Kas#M#MbY#JaM#Wazazar#W#M#K#M..............avaAap#T.#......................................ataoao#L#U..........", +"#o#j.8.7#c.z..#o#m....#o#o#mblb2b0aW#e.4.K.w.4#n#d.4.y.x.1aZbcaT#k.K.A#baZ#c.z#j#hbUbf#..6#lbU#g..bfbf#m#gbmaV#i.ybi#i#k#e#b.z.KaZaP#e#e.5.y.ybTb2bma5a5aR.4.I.u#d.1aW..bb#j.8bkbia8a5aO.H.NaOa5.1.u#fa5....b4a8a8aWaR.4.w.F.1a4....aNa.#7aO.valb5................................a2boaga#.E.Ba.........aiaf.B#6ai..........aLaC#X#Oadadaa#4.r#PaC....b6..........#Racaa#1.q#1aCayayax#U........#K#Masao#0#U#N#MaM#T#Uas#Las#T....aq#0#M#JaM#L#U............avat#V#Jat........................................#T#L#LaA..........", +"#n#gbU#o#o##.9#o##.9....#hbmbibibgaW#e.4.w.w.4#n#..6.4.1#kaUaT#k.K.z.1b1bd.A#c.#..b2b2#n#g.7#.....#n#m#gbhbgaU#ebib4bZ#c#b.A.w#fbVaV.1.4.x.xaSbVbZbcaRaPaO.L.x.1b7.1.4..bf.7.5a8b5bZaRaO.G.Ibk.G.LaRa5a5aR..a8b3bZa5aO.O.u.O...........N.F.C.Cbs..................................aga0#9.E.Bba.......#bpbzag#6.B............aB#Y.q#1aa#4#4.r#Pb5......bTb6..........#O#P#PaaaM#Y#QaAaq#S#U......auaMav#V#L#M#Maq#J.......a#W......#M#U.tas#U.tas............ao#T#Las............................................................", +"#m#cbXbU#n##.9####.6#h..bf#.bgaYaT#e.4.J.A.yaZ##.9.9bW#nbcbcaU#k#b#baZbc.7.7bX....bf#n#..9.9bf.8.5bgbcbhb4bVaT.4bibZb0aV.5.K#eaT.M#e#d.x.1#eaTbhblbjaP.O.L.u.1b#.JaP#dbWbU#h.5a8bxa8aO#8.I.I.x#c.zbibZa6aR.4a8b0bxaV.4.L.u.O....a1#8.....N.Nal......................................a#.E.Ebzaiag#3..bzb4bqaf#3.B........ai..#Q.t#1.....r#P#2aJ#5.......2b6............aIaGaC#Z#Q#Oaqayax#0......avaxax#T#JaAaAao#J..................#Waq#U#K#1ay..............#Tao....................................................avat#T....", +"##bUbXbU#n##.9####.6#o..bebfaTaTaP#d.y.x.1b#aW##.6#...bkbVbcaUaT#b.ybk.7.7##bU#o#.#n#h.8.9bX.9.9b0bVbmbhbhb.#e.4a6bmaT.4.5.x.JaXaP#d.z.y#daVaTbmaWaTbmaX.4.4aS.y.1aWaVbe#m.8.6aRaVaQ#8.I.uaO.waRbibxb4aWaO.La8a8aVaRaO.L.xaO..bxa9aN.C............boa0#9...............................Nbpb3bnaf#3a3a2a.bna#.D.B#9....bzbnafa#.B..bzbzahbpbpaiaf.D......b6bT............aB#Z#X.q#R#Ubuaz#W#K....atat#V#J#Watap#T#J.b..................#M#M#0ax......................................................................auaKat#L....", +"##bU#o#o##.9.9##.9.6#n..#nbU.4#e#a.K.K.yaZb1bd#n###obhblb2bcaU#k#b.4#baTbWbUbgaWaX#kbc#j#k.8.7bhb2b0aUaWaWaT.4.xaTaXaP.4.wbgbga6aT#e.K.1bg...4aTbibibmaX#d.x.y.wbVba.....8.6bXaOaO#8.I.u.1b5.1a5a8bxbiaVaO.GaVa8a8a5aRaO.uaV..bra9a1aQ#8........bob4a0#7.C......bobna0#7.B......a2a.#8bnbpbvbo#9bqbsa0a..E.E.B.E....bzb4bnaf#3.D..bvbsafbvbvai#5.D#3....bRb8..........az#Q#Q.q#ObYazazaq#U#KaGaI#Y#O#J#Tayazar#UaM....ayay#U........................................................................................avat#V#Jaq..", +".8#o#n##.9.6###o.6#.#obd#gbUb8.5.K.w.1aZbVa6bU#o#h.6bkb0b0bdaT#f.7.z#b#.bhbhbjaWaX#e.y.w#k.7.ybcbhaU#e#i#e#b.y.ybT#d.4.xbhbibgaYaV#e.M.x#ebhbgaTbxb4a6aP.4.w..............biblaX.L.O.ualbV.Ib1..a5aRaXaO.N.ua8b3b5a5aO#8.I.I..aQbrboa0a..C......a3bq#7.E.C......bybsa3a2a2a2a2a..Ea2a..Ea2a0#9#3byb3a0a..E.E.Db5aDbnbobwbp#6.E.Q#9bpaEaiaEai#5#6.B#9....bRb6.......#....#0#O#1#Z..arar#U#KaGbYaIak#P....aKaKaz#0#K....aLaz#U#M...............aap....................................................................aoao#L#T.#..", +".6.9##.9.6.9bX.9#.b2bUbd.7bUbf#obk#d.4aX#j#c.A#n##.9bgbhbcaUaX#c.z.z#ebUbhb7bxaWaP.4.K.J#k.4.yaTaU#e#b.y.4.4.1aZbg#c.M.wbib4b2aWaT#e.J.x.4b7bdbmbxbja6aO.L.x#e............bfbb#c.waV.4.G.IaV....aRaRaO.O.x.Ga8bxbxa5aO.O.I.N....bxb3a0#8.C#7....aNa..E.Cal....a2bpboa9boboboa0#8.E.B#9.E.E#9#3a0bqa2a.#7.v.NbwaHbtacaiag#9#3.B.Dagaf#5#2af#9#2.B#6am.....#bSbS...#.#....#O#Nas.#....#M#KaBaGaGaC#R.q#RayaGaGaq#U#K#0axaq#W#Kar............auaKat#T....................................................................#Lao......", +"#naZbf.9###o#.#.bfbe#m#..7bf#n#mblb7bVaU#j#b.6.8#..6bcbhbhbmaT.4.z.5aUbgblb0bjaW#e.4.J.4.4.A.y#f#e#b.y.zaZbgaT.z#ca6aVbgbhbjbjbg#e.4.w.x#eaP.OaWaWaXaP.4.x.JaV..........bWbWbb#i.za8a5aR.O......bg.O.L.x.xaPa8a8a5aQ#8.H.x.1a0#8bra0#7.N.Cal.......E.Ba0........bqb3bobsb5bra0#7.C.B#7.C.E#3.B.Ba0a.#6.B.Fam..aHaF#4aj#5#3.B.Dbw..#3.D.B#3#3.B.EbY.........2b8.#.....#...#..........az#WayaBac#Y.q.qaCaqazar#W#J#Kaz..#U#J#0..............avaw#V#Lap.............................#avao....auatao................................", +"bb#i.8be......bUb2bU#o#o#n#m##bdbfbWbkaU#k.7.A.8.9.6bhbxbhbmaT#e.1.wbcaWbmbgaV#e.4.y.J#daX.A#baU#j.K.K#ebc#b.4bibia6a5aPbma6aT#e.4.K.x.KaVaP.4.uaXaP.4.GbhbgaWaT#b#o#g..bWbW#j.4bib4a5aR.O.x....aWaW.I.IaS.waVaRaPaO.L.u.IaSa9aQ.H#8#7.Cala0..a3a0.N............a3bqbobqbqa2a.#7.C.Eam.Bal..#3...N.N.C.Cba....adaa.r#6.D.B.Bamaiak#X.....#..#3...#.......#..b6.#.#...#...........#..#X#KaK#Y#1#O#Pbw..#W#0#X#K#NaM.#.....#................aoao#L#T..............................avaAap#JauaKavao#L..............................", +"bb#g.8.5....bfblbUb2bfbeaU#g.7bbbdbdaU#k.4.z.5#i.9bhb0b4bVaU#i#c.y.y#e#naWaXaX.4.K.xbga6aVaR.4.4..............bib7bZaVaPaVaXaP#d.1.x.1#eaUaP.L.w.M.M.wbhbWbWaWaT.4.yaP.Jbe#j#k.7a8bxbibmaWaX.4..#eaP#d.K.waTaOaO.O.L.u.IbTb#a1aN.H.P.C.PbsaObqb4a0.N.P..........a0a0a2a3a2#9#7.E.v#6a2alb7.........F.E#7.........D#5......a#bvad#2#P#Q.....#.......#.#......bSbS.#.#.#.....#.#...#....ayazay#O#N#Y#W....#K#M#QaCaM............awaq............#V.#..............................axat#V#Javaxav#T#J.#............................", +"#j#k.7.7......bebfbkbfbcaU#k.5.zbb#j#i#c.5.z#kbmaTbhblbjbjaU#e#b.y.y#e#gaPaX.4.4.4bibibxa6aX.4.M.x......bf#oa6bjbxbxaX.4.4#e.4.K.J.w#fb7aX.4.G.x.4.L.4bhb2b2aU#e.K.yaP.J#i#kbkbea5aRbhbibmaX#e.J...K.4.x#fbia8.L.O.u.HaOb#a7aQal.C.I.Na9a7a1#8.Pa7aN.Na3a0a.......a.#9aga.#7.E.B.Nb5albs...#..bra5aN.C.....#.#.#.....#.#..aHaF#4.r#P.#...#.#...#.#.#.#.#.#...2b6.#.#.#.#.#.#..........arar#W#M#Uax#W#J......#Y..............awaLax#U............................................ao#V#JaMatap#V#J#L....................avavap#T..", +"#g.8bcbmaWaT.4.Kblb8bXbb#j#k.7.7#g#k#c.7bdbhbibmaTbmbhbcaU#e#d.J.x.1aU#g.5.4.J.wa8bib7bxa5aP.4.M.L.M....b8#o##a6a6aV.4.O.x.y.4.x.waSbVaX#d.M.x.LaV#kbjbcbiaY#e#c.z.zaZ.w.4bfb7bbaRaOb0b4a6aP#d.G.4a8biaP.1bib4biaX.NaNaOa1aN#8.C.Halbxbybya0#8.E.Na..N.Fa0#7.C.....C.Ea##7.E.B.Cbwa2.#......a7b3a8.1.x.#.#.#.....#..bnbnaia..E#P.rae...#.#...#...#...#.#.#.#.ab6.#.#.#.#.#.#...#.#.#.#.##U#L#KaHaB#Y#M......................away#W#Kaq............................................#Tao..#T#V#J#Tax..................auaAaxap#L..", +"#kbhbhbcaUaT#e.y.AbWbW#m#k.4.z.7#i.4bkbkbdbxb0aYaTaWaWaT#k#e.K.x.1#faV#c.A##.4.4bibib0bZaVaOaO.L.w.4..bfbU#n#.aVaPaP.4.w.I.MaV#c#daTaPaO.O.x.1bTaV.4bhaWaU#i#e.z.y#f.4.xaVbkbkbd#cbibjbjb.#e.M.x.1aRaRaO.xbibiaW.4.H.uaO.O.N.P.Hba#8bqbxa6aVaO.G.N#8.C.EaN.N.Ca......E.B.E.E#7a.a2.E.....#.#.#aRaO.H.1.#.#.#.#.#.#..bob5ai#9.E.Ean.#.....#.#.#.#.#.#.#.#.#.#.#bSbS.#.#.#.#.#.#...#.#az#0.##0aGaGaC#Z#P......................ao#V#L#U........................................................#V......................avavap#V#Jap", +"bhb0b4bjaW#k.4.K.x.4#m#i#c.7.A.8bbbeblb7bhb2b0bgaTaTaT#e.4.4.y.JaSb7bh.zbfbf#n##a6bibgaW#d#d.L.G.waObdaU#c.KbkaO.4.4.G.G.1b1#gbcaU.4.4.M.x.G#fb1....bm#e#e#b.K.y#fb8aTbVbfbbaU#g.5aWaWaV#e.4.x.GaS.4.O.u.1a5aRaO.4.ua8a7aRaO.H#8a1#8a1bxbZaVaO.L.Ga7a5aQ.N.B.CaQ............bpb4ag.E#3...#.#.##8.u.1a5.#.#.#.#.a.#bnbpbwa2#7.E.E.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.2b6.#.#.#.#.#aHaLac.saK#0#K..aGbuaB#1#Paa....ayayar#M..........#J#M..................................................................................apap#T#L#W.a", +"bib0b4bVaT#e#k.y.w.4#b#c.7.A#c#lbebkbWbWbibjbiaW.4.4.4#b.z.x.z#bbVaY.z#ibXbf#m#.a5aVaVaP#e.4.I.w.waSbhaU#c.Ab0bW.G.M.uaOa6.9bkbhbb#i.w.L.waSb#.7....aXaP.1#b.xaSbV#daWbkb2bkaRaO.zaTaXaP.4.G.ybaaW#e..aOaVaOaO.O.xa8bxbxaR#8.L.IaR.Oa8b3bxaR.4.Ibrb3a5aN.O.ub5......boa3a0#7.Ea2a#.B#7.#.#.#.#.#.#.#.#.a.a.a.b.b.a#9a2ag#9.E.v#7.#.a.a.#.a.#.#.#.#.#.a.a.a.a.#.bb6.#.#.a.a.#aLaJak.ras#U#O..aGaB#1#P.qacaGaI#Z.q#0#M#M............................................auauat#T............................................#L#Laqat..", +"bhbjbibcaX#e.K.w.w#d#c.z.z.7bTbkbfbdbkbdbmbcaT#e.4.y.x.x.K.z#faZaZ.A#fbbbXbU#h#.aVaXaP.4.4.G.u.1aZaZbd#k.z.zaUbb#kbf.4bf#mbhb2b0bb#i.4.Abd#e.z#c.#b8aU.J.x.z#b.xaSb...bda8a8a9aR.O.u.4.M.x.w#daY.y.#.....4.G.L.L.LbibZbxaP.O.u.Ial.HaWa6aR.4.La8bZbyaVaO.I.u......bob4bqa0#7.Ca#.E.Ebn.#.#.#.#.a.a.a.aa8a5#8.u.a.b.b#9a#.E.B#6b7.b.b.b.a.aaB#R.a.a.a.a.a.a.a.a.abRaB#Paz#0.aad#4.ram#Q#QbY.#ac#Y#R.q#1aGbYaC#Z#O#Uayaq#W..................................auao...#aKaKao#T#T....................................................", +"aWbmaWaT#d.4.J.x.KaT#c.z.7#lbdbbbbaUbbaUaTaTaX#d.y.x#bb1aW#i#e#b.A.1b6bf#o#m#g.7.6aO.4.4.J.u.G.1b1a6#i#b.A#baU#ibUbUb8bU#hbkb2bWaU#e.7.z#i.7#bbc#nbf#h.K#a.1bVbc......bbbxb5a1aO.O.u#m.J.y#daS.ya8a8a1aQ.N.4....a5bra5aR.O.H.H.H.H.CaVaXaO.O.ua5a8aVaO.O.u.I......bobra7#7.E.Ba.#3a7a3a0#8.#.a.a.b.aa7bxa5.O.u.b.c.c.d#3.B#6bw.b.b.c.c.cbtaC#Y#P.b.b.b.b.b.b.b.abtaCazaKar#X.##Pae.#.#.#.#.#aG#R.q#1aCaGaG#Z#Q.qacbuaz#U#J.............................#avawap#V#Lavap#V#Jaq....................................................", +"aWaTaT#e.4.K.x.1#faZ.7.7.8#h.5#g#g.7#i#i.4.4.4.y.J.1aZbcbU#b.7.A.zbTbd#n#m#g.9.3#g.I.L.w.x.x.1b#b##k.8.A#bb8#c.7bfbfbfbe##bdbdbb#e.4.A.zaU#haZbW#m.6#..Ab6#cbhbc#e.w..a8bxbsa5#8.I.uaO.6bV...4aXbsb4a5aO.O.u..aRaOa1aRaO.1.u.3aO.HaN...O.L.u.GaRaRaO.1.H.1aP.#.#..a2a2a..N.v.Ea0bqb4a7aQ#7.P.b.b.c.b.aaRaO.ual.e.e.e.e.e.c.d.dbzah#5.caCaGaaaCaB#P.b.c.b.b.b.aaBaC#YaAaG#0#N#N.a.#.#.#.#.#.##Z#Y.qan.#aB#Z#X#O#Paxayaq#M#J............................auaAaAap#T#Lap#V#J#Tau..............................................awauap", +"aT#e#e.4.K.y.yaTb6aY.7.A.4aU#n#m#c.7#i.8.4.A.5.K.1aZaY#..9##.z.zaUaU..#..8.9.9.9bXbebf.G.GaPaS.y...4.7#cbc.z.7#l#m#n#n#h.8bbaU#i#c.5.z#baU#.#gbf#h.6#lbe..a5aRaO#ba6a6aRa8aRaO.O.u.IaS........a7bxbia1#8.Ia8a7a5aQ.4.4.N.I.HaZbT.........L.1aPa8#8.O.I.IaSa1...#.#a.a..N.C.Eb1a3bqbZa7#8.E.C#8.b.c.c.c.N.ual.e.f.f.e.f.e.g.gbtbvaFaDad.d#YaGbvaB#R.c.e.c.c.c.c.caa#Parar#X.taB.a.#.b.#.#.#.#..#O#1.#..#Q#Q.q#Obuaqaq#U#JaM............................atavat#V#J#T#L#T#Uax..............................................auaAaAau", +".9#b#b.y.x.z.1bTaY.7.y.z#ibb#n#j#c.A#gbf.4.4#ibcaPbUbd#..9.9.9b8bf#h.6#c...8#.#n.7.7#m#.blbb#h.z..............#o#h#l#g.9.7#b#i.4.7.z#cb0#h.6#.#..9#h.#.#a8a8a1aO.O.Ia6aR.4.I.1.I.IbaaR.A......a5a5aRaO.I.ubrb3a9aQ.O.I.L.IaSb#a5..............brbx.x.I.4a5.#.#.#.#...F.E.Fa0.#a0a3a0aQ.N.C.FaQ#6.e.e.e.f.f.f.f.f.f.h.h.f.fa2btaFbtaFab#2#2aCaH#R.qae.e.g.e.e.b.c.a#P#M#Q.t#ZaGaB#R.#.#.#.#.#.#aGaIac#Rar#0#Rar#U#S#L#Kas................................ao#V#L#LaK......................................................atavaoav", +".9#n.y.K.w#faZaY.8.z.8#lb8bW#j#h.8.6#gbf#j.8.8bga6aWaR#d#i.5#obXbd#g.6#g.5be#m#c.A#l#..6bfbkaU#c.7..........bWbUb8.9.8.8#g#n.z.4.A#fbe#h.7.6be#l.6bf#ma8b4bxaRaO.L.xbiaP.4.I.I.H.1b##..z......aQaQaN#8.ua8bxbsa9#8.N.C.O.4aObs................a1aN.P.H.#.#...#...#.#a2a..#.#.#.#aNaN.O.C.Cam.sa0.e.e.f.f.f.h.h.f.h.h.h.h.h.haEbzbuaD#5#2.rac#1#P#4#Y.r.g.gaGaC#Z.r.cbT.c.caGbvaB#Y.t.a.#.#.#aGbuaHaB#R.q#W#Qauap#J.....#..................................#T#Wax....auauao#L..............................................#V#Tao", +"#h#g.6#m#m#f#c#b.z.z#bbXbdbe#j#g.6.6#hbe#g.7bibga6aVaX.4.J.w#h#m#l.7.6bU#o.9#c.7#cbbbf#m.8bW#j.7.7#.......a6bf#o#o#n.9bbaU#i.4.zbXb2bb#g.6#gbfbfbe#j.7a8bZbxaR#8.I.IaOaO.1.x.1aOaR#g.A#l.........O.N.u.Ha1a5aRaN.O.C.HaO..a9a0.O.................N.1a4...#.#.#.#.#bobra0#7.B.#.a.H.N.C.valbZa2.e.e.f.h.h.h.h.h.h.k.h.h.k.h.h#5aDaDab#2.s#4.h#P#PaD#R#O.haGbuaGak#P.d.3bS.baGaI#R#O#P.a.b.#.#aHbubt#Z#R.q#0#K#Mao#L.#.#.......#.....................................#aAawap#T...............aauat............................#V..", +"b8.6.7bW#..7.7#b.A#ibebe#m#j#g.8.A.7#m#n.9bib0b4b.aTaP.4.J.I#g.9.9.8b2bU#n.9bfbb#fbfbfbb#..5#c.A#g#...bgbmaT#b######.9bX#k.7.5bebk#m#g.9.6#mbfb2bb#h.7a5b#aRaO.1.u.IaO.O.x.waV..bgaW#e.J.............NaOaRaQaO.O.P.ubabqbqa7a1aN.H...........#.#.#.....#.#.#.#.#.#brbvag.N#7.b.b.abg.Eala0.g.f.f.f.h.h.h.h.h.h.k.k.k.h.k.i.iaFadab#2.r#2b7.i.i#Z#R.qb5.haIaCacaI#Zad.dbR.d#Z#Z#R.qb5.a.a.a.#aGaIac#R.q.r#U.t#X#T#J...................#............................avaxap#V#L..............awaKap#L..............................", +".8.A#mbe#m.8.8#l#i....#m#h#g.8.A#cbgbmaUbhbhb0b0bjaX#d.M.I.w.4.4#.#nbfbb#.bkbkbb#k.5#o##.9.6.z.9b2#obibZbmaX.4.w##.9#h#l.A.5#ibc#m#h.8.A#lbkbWbW#m#g.7aRaRaO.1.I.FaOaR.G.Ibabibjb2aV.4.w................b7.O.L.I.u.1b3bqb4bxaQ#8.P.H.............#...#.#.#.#.#.#a2a3a0#7.Fal.a.c.caWaX.1#b.f.f.f.h.h.h.k.k.k.n.h.h.k.k.h.kbtbvah#2.s.rbw.k.k.i.i#QaB.i.i#YacaGaGar#Y.qbH.d.d#P.qan.b.b.a.a.#aBaa#R.q.qbY#K#Qas#LaM.#.......#..........at#T........................#Tao#V#Jas..............atap#T#L..............................", +".A#.#o#h#g.9.7b8......#g#g.8.7.4bjbhbhbkbkb.bjb.aV#e#d.J.x.MaX.4.wb2bl#m#g.6bW#j#k.5####.9##.8bebUbhb0b0aWaT.4.y.4b8bb#c#c..bhbc.8.8.A.8bWbebf#m#g.8.A.O.4.O.1.I.2bZ.u.uaSb#b2bibg#d.M.xaV.7........aWbbbe#g.C.IalaR.Gbrbsa7a..O.C.N.......#...#.#.#.#.#.a.#.a.a.aa.#7.E.Bb7.c.c.c.e.K#f.f.f.h.h.h.h.k.k.p.k.k.k.n.n.n.kaEbzbvaj#4aa#4bpbzah#3.s.k.k.k.kaIaGbuaLac#Q.q.3bH.g.d.c.c.b.b.d.a.a..#P.q.qaa.t#NaJ#Vaq.#.#.....#...#.#..auauav#V#J.#......................#L#Laq................#L#L#LaA..............................", +"#.bf#o#m.8.9#m....a9#8be.5.7.7bhblb4bhb0b4aWaWaVaP#d.1.x.G#daV#d.J.KbW#j#c.z#i#i.4.5#j#..6#n.9....bgbjaYaT#d.y.x#ebd#k.z#hbkb7bj#k.4#c....#j#j#i.8.A#ca5.I.L.xaPb##c.6aO#.....aTaP#b.x.M#h.8.#....b0bga8a8a6aR.L.....4a1a1aQ#8.H.Cal.....#...#.#.#.#.#.aa3a0#7.a.b.F.C.Ba4.c.c.e.e.e.f.f.f.h.h.h.h.h.k.k.k.k.n.n.n.o.o.mahaDaj#5bzaEaj#2bsaf#6.D.n.n.n.n#XaGaGaB#1#O.q.fbH.2.f.d.c.dazazar#0.#.a#Rac.##Xas.#.#az#W.#.#...........#avaAav#V#L....................................................................................", +"##.6bf#h.7.8.9..b5a5.1bU#m##bfbhb0b0bhblblaXaXaP#d.M.w.3#db6aV.M.y.z#m#c.z.7#j#c.A.5bb##.9#o.9bfbfaWaVaT#e.1.x.yaV#i.7.8bdbhblbc#k.5.5....#f.4.8.5.8bia8a5aO.O.u.J.J.6#j....bh.4.4.x.1aY#..5......a5a5aX.Ma5aP.O.x..a5aNaN#8.N.valb7.....#.#.#.#.#.b.#bqbqa0a..C.b.b.c.c.e.e.e.e.f.f.f.h.h.h.h.k.k.k.p.naFaiab#2.o.n.m.o.mab#5bzb5aJaj#2.Q#9#2.Q#9.m.l.l.kaBaB#Y#1.qambH.0.0#E.2.daDaAaMar#X.t.a.#.#.#.#.#.#aKazar#M.#...#.#......atatao#L#W....auap................................auavap#L....................................", +"##.A#m#..6#..8..a1aO.ubU.9bUb2bcbjbcbcbhbc#d#e.4.M.J.G.1bTbibga6aVaX#d.K.A#kbb.7.7b1#m.8.6.9bUb8#obf#e.4.1.w.Kb1#g..#.....bbaU#i.z.y#ibb#c..b8#o#.a8b4b0aVaO.L.u.J.L.w......aWaU#g.4.6bX.AbV....bia8a5aR.1.uaO.L.IaP..aU.N.P.u.NbZ.....#.#.#.#..a9aN.abxb3a0#7.E.N.e.c.e.e.e.f.f.f.h.h.h.h.h.k.n.na3a0a.b5aiab.D.o.o.o.o.U.Q.raFbtaE#5.D.D#6.Q.D.m.o.m.m.m.l#R#O#P#1aC.2.i.f.j.3btazaGazazaq#M.b.b.b.a.a.#azaKaK#W#K#M...#.#....aGar#V#L#T.#..aAaAap#L............................auaMaxao#L....................................", +".9.6#n.6#.be#n...L.x.1#o#nbUb2aWaUaTaUaUaT#e.K.M.G.u.1aZbibia6a6aWaT#d.J.wb0.8.3aZ#n#..6.9#obUbUbma6aVaP.L.1babe#g.6......#c#ebfbfbb#g.5#g#obUbgaVa8bxbxaXaO.I.xaO.J.w..bb#e..#b.y.5bc........a8b3b4aVaO.O.u.O.x.IaVaV.O.4.N.NaQb1.#.#.#.#.#.ab3a8aOa0boa2#7.N.Cal.e.e.e.f.f.f.f.h.h.h.k.h.k.n.nbqboa2a..Eai#6.Qae.oaDad#4.X.Xahadab#3.s#6.D.DbY.U.o.U.U.UaHaL#R#R.l.2.0.i.i.haFbuaJaraLaGar#Q#M.b.b.a.a.#arar#W#M#Nas........aAaL#Z#Q#V.#..avaxat#V#Jao..........................avaxap#V#Jap..................................", +".6##.9.6bXbU.#....bfbU#o#obU#oaTaT#e#e#i#f#c.7.y.M.1#eaPbhb4b0b.aWaPaO.L.x.4b8#n#n##.6.9b6bX#obibia6aVaP.4.ubUbf#c.A......#h#gbWbU#m#h.6.8#nbhbjaWa5a6aR.4.N.x.IaX.4a8a5aR.G.z..#k....a5aR.O..a8bxbxa5aO.L.CaO.IbT.M.4bxbx#d#daT.....#.#a5#8a1a7aR.N.Ca0#8.N.valaV.f.f.e.f.f.h.h.h.h.h.h.k.n.n.nbyb3a0a..E.C.D.D.DaHbtah#4.r.W#5#5#2.D#2aJ#3a2.X.X.U.U.U.UaBak.qae.m.0.k.k.k.iahajabaAaGas#0#K#S.d.b.b.b.a.a#U#M#Man.#.....#..aIas#Y.t#1......atao#L#W.a..........................apap#V#L#W....................................", +"#n#####n#h......bUbUb2#n#.#o#n##.4#b.z.1.4.z.A.K#ibVb0bhbxb4b2bgaTaP.4.y.x#a#o#n#..6.6#m#o#hbibZb4b.aVaO.M.x.4#g.6bV..bhaW#ebfbXbW#j.8.A#h#ob0b0aTaRaXaO.4.x.1bTa5bibia5aO.O.uaU..a8a8a7aRaO.ua5a5aRaO.O.x.IaSa5a5.w.4bia6aO.x.O...#..b4a5.O.uaQbqa0#8.N.N.B.CbZ.f.f.f.f.h.h.h.k.k.h.k.n.n.n.oa3bra3a.#7.C.E.DbY.Bbtbtaj#2.Q#y.W.D.D#6aJ#v.W.W.W.W.U.V.U.U.U#Pan.S.U.UaGaGac#P.k#2.Qarar#0#N.t#Z.3.daB#Z.b.a.##U#0ar#Q.#.#.#.##Z#0#S#QaB.#...##T#L#Uax..............................#T#Laqax....................................", +"#obU#o#o##.9#o##bUbUbU#n###h##.9.6.K.1.KaT#b.4#c#ibhbxbibjbxblbgaX.4.M.w.x#dbUbfbU#o#h.6bf#jbibxbxbjaX#d.J.w.4.5#l..bjbjbd#j#i.K#m#g.6.6#naWbiaV#e.K.4.L.I.1aSb#a8b3b5a5aO.H.u....a8b4a8aO.O.IaRaRaO.1.H.1bTaV.O.C.Lb7aRaVaO.1ba.#.#a5a8aN.4.ubqbya0#7.E.g.L.f.f.f.f.g.hbnag#9.E.p.n.n.n.o.ma3boa2a..F.F.Cal.D.DbwaDad#4.r.D#v#y#y#v#v#y.W.W.W.W.W.V.U.U.U.U.U.U.U.S.laHbtac#P#R.i#5.i#U#M#O#N.h.0aGaH#Z#O.b.bazaKas#0#O.#.#....#Q#Nas...................................................#....................................b6", +"bUbXbU#o##.9###n####bU#nblb8.9.9###n.8b2bUbUbfbf#mbhbja6bib.aWaX#d.4.G.x.JaSa6a5aX#e.Lblbd#ma6bib.aT#d.M.x.waP#n..bhblbdbdbb#i.5.5.8.6bT#n#.aT#e#a.xaT.I.GaOaRaZa6bia6aQ.4.I.uaRaTa8a8a5#8.L.uaO.O.L.I.uala5aO.O.CaZ.Oa8a5aR.O.u.#.aaQaQ.N.uboa0aN.F.E.Ca..f.h.f.h.f.gbrbsa0#9.C.n.o.o.o.o.Sbrb3a2a..N.Bala1.Qbnbnaia#.Q.Db5#y#y#y#v#y#y.W.W.Y.W.W.W.V.W.V.U.V.T.U.SaCaHaBak.q#1.k.k.i.i#X#0.j.f.daHaH#Y.q.b.baGaGas#N#O.b.#...#.#.......#.#...................................................................................2", +"bUb6#o#o##.9####.9.9#obU#o#n.9#c.6#gbVbf#nbWb2be#maWaWaWaWaVaTaP#d.J.x.w.1aWbiaVaXaO.O.ubX#jaVaVaXaO.1.x.1.1aV#n#obhbkb7bVaU#e.7#b.A#l#i##.9.4.4.x.1bV.6#m....biaRaRaP.4.G.u.ObVa6a5aRaO.L.u.HaV.I.I.IaOaVa5#8.H.uaObrb4a4aO.O.u.#.a.b.N.ubybxa1#8.N.H.E.f.f.h.h.h.hbobybsag#7.E.E.o.o.o.obobvbsa2#7.E.Ca3.Dafbtb3aga#.Eae#z#z#A#y#y#vaFab.V.W.W.V.W.V.V.V.V.V.T.T.S.Uac#1#P#4aCaG#Z#O.i.j.i.j.f.hac#Y#O#1#E#Earar#X.t#XbQbM.#...#.#.#.#...#.............#.#....................................................auauat#V....bR.2", +"#o#o#o##.9.6####.6##bUb8#o##.9.9.6aZ#o#hbfb2bXbe#haTaTaXaTaTaP.4.M.w.y#bb1aVbZaVaP.4.L.u.O#f.5aPaO.1.G.w.1b1bmbfbfbdblbUbk#i#b.z.7#nbb#g.z.6bdbb#j#c.6.6#n..bfb2b0aO.4.L.Ibia6aVaPaOaO.O.I.IbT.u.1aW#ea1aRaO.L.v.Ia7bsbxbi#8.G.uaO.a.b.ca9bybyaR.O.C.Nb5.h.h.h.h.ha7a7a1aN.P.E.va..o.o.X.Xa0a2ama..N.v.F.B#Ba2bpa2af#3.B#6#A#A#y#y#ybnaEaf#4.r.W.W.V.V.V.V.U.U.T.U.T.S.r#P#4aJaGbtas#R#O.k.j.j.h.g#Q#O#PaC.e.3.2#X.t#X.#bMbF.#.#...#.......#...#..............................................................auayaKat#V#J...3b6", +"#o#n##.9.3#n#o.9#.#nbXbX#n##.9.9#obUbX#obfbfbe#l#g.7.1.1#d#e.4.J.1.1.MbTbVb0bZaVaP.4.G.x.O.7.z.J.4.w.x.1b#aW.8b2be#hbdbb#j#c.K.z#kbk#g#b.6blb2be#j#c.AbXbf#obmbiaW.I.N.ubhb4a6aT#e.K.L.I.1ba.x.Lb7#iaWaT#e.N.H.Ib4..a5aRaO.O.u.L.#.b.c.ca1a7aQ#8.1.ual.h.h.h.h.h.hb3bxaR#8.P.C#6a0.o.o#v#vaga.#8.E.B.Nb7babDbDaiaf#6.B.D.B#A#A#z#Abzbrbpaf.E.D.V.W.U.V.U.V.V.U.U.T.T.U.S.S.S.SaGaC#X#P#R.laq#U.i.j.i.f.h.fayaq#J.0#EbH.#.#.#.#.#.#.#.#.#.#.#...........#........................at#T........................auaKaxav#V#L#LbRbR..", +".9##.9.9.9bX.9.9bU#o#o#o##.9.6#lbUbU#obU#n#n#m#g.9.6#..w.K.M.4.y.walaZb#bib#a6aPaO.L.x.x#d.z#lbV#h.4.1#fbe#m.8.8#n#.aU#i#k.7.A#fb8#j#c.Abkblb2bc#i#b.7#ib8beaWaPaP.4.ubhbjb5bgaP.4.y#a.I.IaO.1ba.4bgbgaU#e.y.La7..a8aQa0#8.I.Nb1.b.c.b.eaQaN#8.O.vala4.h.k.k.h.ia7bxbZaQ#8.u.HbY.X#v#v#v#A#v.N.N.B.Cba#6bDbD#Ba##3.D.DbY#2bA#A#z#zbpbvbo#9.E.B.W.W.W.V.V.V.T.V.T.S.S.T.T.S.S.Sar#Z#1.qaBaKay#W#M.i.i.j.faGaLaq#K.d.dazar#W.3.b.a.a.#.#.#...#.................................#aAawao#T......................auawapao#T#LbY.3b6..", +"#m#g#.###n##.9#n#o#o#n#nbdbd#m#k#o#o##bUbU#h#g.9.7.8b6.8.6.8#h.4.4#eaWaVa5aRaR.4.O.G.u.LaV#k#..Abb.9bfbfbf#h.z.8##.9.8#c.5.z.7bX#h#c.A#fbdbfbf#j#c.5.7bbbWbga6aP.4.x.1bmbibgaT#d.K.w#f.u#daSaU#cbhb7bjaV#e.J.K#d..bqa3a1aQ.N.C.a.c.c.e.f.f.L.H.u.FbZ.i.h.h.k.k.ka9a9aQ.O.N.u.1.X.X#v#v#v#v#B#B#B.Nam#B#B#BbDbDbA.D#3af#3bA#A#z#A#za2aia..E.B#6.Y.V.V.U.U.T.V.T.U.T.T.S.T.S.R.S#Q#O.qaeaxayaq#M#X.k.j.j.iayaq#U#K.daybuar#U#Mba.3.a.a.#.#.#.........#..........................avao#Tao......................atat#L#T#JasbRbS....", +"#m#g.6#n####.9.9bSbU#.bfbfbe#m#k.7.z#i.4aU#c.8.6#gbT#h.9.9.7#.bl.5#cbfaXaXaP.4.O.I.x.1bTaW.8.8bTbfbe#o#n#h.8.6#l.6.9bV.z#b#b#f#c.z#l....bbbb#j#k.9.5#ibbbhb7a6aP.4.xbVaTaWaXaP.4.x.JaT.Ib1.....5biblbjaP#a.w#baZbobyb0a1aQ.N.C.N.c.e.f.e.f.f.h.Na0.p.h.k.k.k.p.kaQaQ#8.N.u.1aRa2aga#.F#B#B#BbD#BbIbDbDbDbDbDbCbCbDaJahbAbA#zbA#z#z#9#9#3.B#6bs.W.W.V.V.V.V.V.U.S.U.T.S.SbObM.S.RbObOayax#0#U#KazaIac.k.j#U#L#MaM#UaxaA#U#M#XawaAaq#U.a.a.#.#...#.#.#.#........................#V#L#L.#......................#T#V#L#LaKb8.3.#....", +"#l.8.5#gbU#..9#n#o#lblb2b2#o#j#g.7.6aT#k.y#k.5#.b8#o##.6.9.5#nbe#m#gb2bX.4aO.1.G.G.Ibab1.9bfbb#gb2#n#h#h.8.z#.bU#gaU..........bmbga6aR.4.G#k#c.7.A#fb8.Kbibjbj#dbc#i#b#j#e#e.4.x.waZaWaV........a6aWaT#d.w.AaZ..a7bybya1a..N.C.N.e.e.ea6aV.4.ha9aN.i.ka2a..j.na0a0.O.N.C.Pb#bvbyai#7.B.E#B#BbDbDbDbDbDbDbCbEbDbCbCb3aj.DbAbA#zaFaDad.D.Eala3.Y.Y.V.Y.V.V.V.T.U.T.T.S.S.RbObF.R.S.SawaMaz#0.t.laGbuas#Q.n.jayaGaz#Maq#W#M.t#ZayaKaq#T#M.2.a.#.#...#...#.............#............ao..............................#V....#Eb6......", +"#c.9.AaU#obU#o#n#..9blb2bWbmaU#k.4.5#j.4.z.4.K.5#n#h.9bfbfbf#m.8#gbUb2bX#m.G.O.u.1aSbxa6.6#h#m#c.6#g.8.8.6#g#obb#k.7..#o##....bib0a6aX.4.J.G.7.z#fbV#e.za6aVbkbhbcaU#e.A.7.y.x.xaTaW............aPaP#d.K.w#ab1..boa9a7a9aQ#8.Cal.e.e.fb4aV.MbrbxaOboboa3aN.P.Fa3a0#9.B.NaQbobsbqag.E.B#9#BbIbIboam#3bEbDbDbCbCbDaEai#3.QbA#zaFb3aFab#2#PbA.Y.W.Y.Y.ZbM.V.V.V.U.T.T.S.S.TbFbC.S.S.RazaAaz#U.t.RazaG#X#Oac.l.kaq#U#N.f#L.t#Xaxataq#T#Jaq.2bRbR.a.#.#.#.....#..........................................................b6.2........", +".8.A.9bebUbXbU#l.9.9bfbhbhbgaU#e.4.y#jaU#i.4.z#bbb#jbfb2bU#n#h.8.6bfbfbb#hbdbd.4.4aX.7#o#.be.7.7.6.8.7b1.8blbW#j#cbhbcaU.4bda8b0b0biaR.4.w.LbmbhbjaT#b.waPaPblb7bc#i#b.y.4b6..aX.9be...............4.y.x#fbV.#b2bra8bra1aR.O.P.N.f.fa6a8boa3a0#8aObob3bq#9.E.Fb3a0#7.C#v#va2a2a.a#.B.EalbDbDbDb5ag.Ebzbta2#9.EbDbA#3.sbw#z#zaFbzaD#4.r#2.W.W.W.V.WbObOaGaBaa.S.T.T.S.R.T.R.R.T.T.Razaq#0.tan.lar#0#N#Q.l.l.n#S#Mas.i.i.f.j.d#W#W#J#LaA.b.b.2bRbH.#.#.#.#.#...........................................................2b6........", +".6.8b2.6#o#o#n##.6bWbhbxb4bgaUaP#b.y.4aWaT#c.z#ibb#ibUb2bW#m#g.6.6#n#n#h#gbkb0bc#i#c.5.z##.9.A.A#l.5be#n.6bbaU#kbhaWaTaU.4.Aa6bib.aSaO.1.x.1.7aWaT#e.y.KaTbdbkblbh#e.7.w#k.............................4....bfbfbrb4b3a1aO.N.H.I.g.hbhbqboa3aN#7.C.Ea2a.#7.v#7a3#7.F.C#v#A#9#9a#.E.Eb1bDbIbEa2ama#.Bbpb3ai#5.E#2#z#z#A#y#y#yahad#5#2.Dam.V.V.V.V.VbMaHaHaCac#P.SaEah#5.S.R.R.R.R.R.R#U#K#X.R.l.R#Q#Qar.l.l.l.k.l.k.j.i.g.h.d.f#M#Xaz.c.d.b.b.a.2bRbR.#.#.#.#......................................................bS#E....at#V..", +".8be#h.6#g#h##.6blb2bhblb2bgaT#e.7.y.4aW#i.4.y.4bb#kbfbf#n##.8.6.8#o#h#.bkbWb2bcaU.4.7.7##.9.z#iblblbf#m.8.6#cbhbjbmaT.4aWaR.4aXaP#e.M.x.waS#c.7.4.y.wbV#.aUbcbbaP#b.w.zaZ.8................................bWa9brbsa8a4#8.N.C.Na7a1bobxb5a7aN#7.C.Ea.#7.B.1b7a..P.CbTa0.Pa2.B.E.Ca4a#.BbIbEbIa#.Ebzbpboaja#.B#3bA#z#y#z#z#y#2#4#2#2am.V.V.V.U.T.UaCaHbuaCak#P#Rbvah#5.Q.T.R.R.R.R.R.R.R.R.R.j.R.R.R.R.j.l.l.l.l.k.k.j.i.i.h.d.d.g.g.d.c.c.c.c.b.a.2bHbR...#.....#.#..............................................#Eb6..aAav#V#J", +"bhbcaU#i.7.9.9#gbebfbhblbjbm#e#c.y.w#e#i#c.5.y#b#k#b#n#n#m#..6.8#l#n.5.8bhblbkbc#k.7.z.K##.9##aUblbmaWaT#e.6.5bhb2bcbibia6aVaO.4.x.O.G.Gbaa5.7.7.w.yaZ.6#obfaT#i#c.J.zbTbb#g.8#h.6..........................bb#ia9a4aQ#8.O.C.ualb0a9a9bqbqa4#8.F.B.F.F.B.FbY.X.N.Balbra0.E.B#7bobvag#7.BbIbEbIbJ#3aiaiaf#5.D.Dan#A#A#z#z#y#z#y.Z.r#5.W.W.W.V.VbGaHaHaCaBaa#2.qaebtaj#3.Q.T.R.R.R.R.R.R.R.R.R.j.R.R.j.l.R.l.l.l.l.l.l.k.i.i.j.j.i.g.f.g.d.d.c.c.b.b.a.a.2bRbR.#.#.#.....#........................................bRbR..auaxav#V#J", +"bjbhaUaT#b.x#b..#n#mbcbmaTaP.4.5.A.1aZaU#c.5.w#i.4bmbmaT#e.K.7bTbk#n#..6bdbcaU#k#c.5.z#faU.9#nbdbjbhaWaT.4.5.Jbjbhbmbxb7a6aX#d.L.w.L.1bab#.8.A#gbX.8#.#.##bi.4#c.y.y#fbd#h.8.8#h.9.........................#.7.5a1aQ#8.N.P.u.1a4bxa5a0a0a0a..N.E.Bal.o.o.X.X#v#va3bqbq#9bpbnagbnag#7.D.BambJbEbEb7#5#9#6.D.Balbs#A#z#A#A#z#y.ZbMbJ.W.W.V.W.V.VaGaLaLaaaa#P.r#1aHaj#5.Q.D.RaGaLac.q.j.R.R.R.R.R.R.R.l.R.l.j.R.l.l.l.l.k.l.k.i.h.h.h.g.d.g.d.d.d.c.c.b.a.a.aalbabR.3...............................................3.#..apap#V#Jaq", +"b8bgaT#k.4.y#b..#o#caUaT#i.4.5.x.KaZaY#i#c.z.7bmbibVbmaU#e.1.xbfbU#h.8.6aUaU#i#g.7.A#caZ.9b9bdbib4b0aWaT#c.J.yaWaTbibxbZbiaP.O.I.xaPaOb##c.z#cb8##.6#o##.9bjb4aV.4#eaW#d.8.A#l.9.6......bd#k...............#...#.P.O.O.C.H.Nb1a4aRaOa.aN#8#7.C.Falb7.o.X#v#v#v#v#Aa0boa0.Ebv#9a.#9.E.BbabEbJbIbIbc#c.Q.E.B#9bwbzaEag#3#z#y#y.YbJbDbJ.V.V.V.U.UaIaCac#R.r.qaead#5#3.D.Db5bAaGaL#Y#O.l.R.R.R.R.R.R.R.j.l.R.R.R.R.l.l.l.l.k.k.i.i.h.g.g.h.f.g.d.d.c.c.b.b.a.a.a.#.3bHbR.2........................................bRbSap#V..#T#Jaq..", +"b0bh#i#e.z.A.4aUaT.4b8#e#c.K.A.y#bb1bm#k#b.5.4biblb4bcaX#e.4.Jbe#j#..6.Abe#k.8.5.A.zbTbb#obXbbbhb0b0aW#e.4.y.y#e#eaWbia6aP.4.1.x.MaW.8.8.A.9bV#..9#.#o##bmbia8a6aRaO.waP.z#l.6.9b6....b0be#k#b.........#.#.#.#.#.a.x.H.CaOa7bXaN#8.N.u.E#7.E.C.NbT#m.o#v#v#v#v#AbBbybrag#7.B#7.B.E.BambIbIbJbJbI.4.AbVbA#A#zbpbybnag#5.B#y.Y.W.W.U.V.V.V.U.Ta9#8#Y#P#O#PaI.B.S.l#2#2ae#O.Zac#Z.r#PbFbCbMbFbB.R.R.R.R.R.l.R.R.R.l.l.l.n.l.k.j.j.i.h.f.h.f.g.g.g.d.c.c.d.b.a.a.#.#.#.##EbSbR.#..................................auaAat#V#L........", +"aUaT#c.4.xbhbhbcaU#k.5bh.J.A.A#bbcbm.w.4bgbmaVaP.1b0aYaT.4.K.J#e#g.9.6bU#obf.5.A.KaZaY#gbUbdbebmbmaW#e#d.K.x#baW.K.AaVaPaP.O.x.1aS.9.9be#g#gbgbdbb#g..bf#obib4a6aP#d.I.O#l.8#.#h....aU.7#j.7#f.............#.#.a.b.c.c.e#c#n.h.i.I.uaSa5bf.N#7a0.z.X#v#v#v#v#B#Bbobvbsa..E.E.E.Fb7bIbIbIbIbJbEbDbDbDbA#AbA#Abpb3bpaf#3.D#3.V.WbNbE.V.V.V.Vbobr#8aL#R#1#R.q.D.R.R#S#Q#OaGbQ#P#O.qaMbB.ZbF#zbC.R.R.R.R.R.l.l.l.R.l.l.l.l.l.l.k.k.j.i.i.h.g.h.g.g.g.e.d.b.b.b.a.a.#.#.#...b.2bSbS.#............................bRauaAax#V#L........", +"aU#i.4.AbhbxbhbcaU#k.4.xbWb0#eaT.4.J.wbibga6aVaP#d.IaT#e.z.w.1aP.9.z#lbUbUbU#n#g.6##....bWb2beaWaVaT#e.4.x.waX.6b6.6#c#d.M.L.wbab.aWaT.4bf#jblbWbe#k.7b8a8bxbybjaP.O.I.O#h.6......bWbcbf#m.6bd.............#.#.a.c.e.e.f.f.h.h.k.k.n.n.nb2bW#k.zbX.Xa0a.#A#B#BbDa0a2a.#7.C#7.BambJbIbIbJbEbEa3.N#BbD#BbDbCamaibnah#6.E.D#9bNbJbJbF.V.U.UbMboaN.PaCaB#Y.q.r.EbA.l.l.l.jbAbMbC.l.jaHac#z.R.R.R.R.t.Rawaq#M.R.l.R.R.R.R.l.l.m.l.k.k.i.i.h.h.j.h.g.g.e.c.c.c.b.b.b.#.#...#.#....#EbSbS.#......................b6aSatat#V#Jaq........", +".4#c.K.zbhb4b2bcaU.4.z.z#caYaT.4.4.xbib4b0a6aVaP.4.w.L.4.x.A#faTaWaT.4bUb8bW#m#g.7###.bkbWb0bd#e#e#e.5.w.yaZb6#n##.9bU.G.G.1aSb#aVaX.4.M.Jblb2bW#j#g.7#caVa6a6aR.O.G.uaS.8.7....bkbkbXbX#j.7#h...#.....#.#.#.a.b.c.e.f.f.h.h.haSaR.I.n.pbd#j.7.z#vbqa7aQ#7.EbDbIbD#9.E.E.Fa4bIbJbEbEbpbnag#3a1.N#BbAbBbA#AbJaiafa##3.s.DafbNbCbMbMbFbJaCaHaCak.P#Zak#P#PbubYbM.lahajbFbMbC.Z.jaHaLaa.r.R.R.t.R.RawaMax#U.R.R.R.R.l.l.R.l.l.l.l.k.k.i.i.i.h.h.f.h.g.d.d.c.a.b.b.#.a.#.#.#.#...#...2bRbT....................#Eb6..#T#J#T..........", +".4.A.x#fbhblbkbcbgbmaU#i.KaX#e.4.x.wbhb4b0bmaX.4.M.I.LaR.x#bb8bgaWaT#b.xbfbe#g.8.9#h##bTbfbb#j#c#b#a.x.y#fbVbf##.9.9bU#mbha6bibia6aR.4.x.Jbebfbb#k.7.z#laVaVaP.4.I.uaSaV.6bX....aU#jbU#na8a5aO.O.f#o#n.9.#.a.a.c.e.e.f.ha7a1#8bxaR.O.Ibm#ka3aN.Nbqb3bra..F.CbDbEbIbI.F#7ambJbEbIbDbnbybsag#3.E.vbAbNbNbMbNbN#5#5.E.B.Bb1bNbJbMbCbEbJbBbtbtadaa.rbC#P.raDa2.S.RbzaEaj#2bF#zbGbBadaa.ram.RaqbBbA.Raxaq#W#Jar.l.l.R.R.l.R.R.R.m.l.l.j.j.j.i.h.g.g.g.g.d.d.b.d.#.b.a.#.a.#.a.#.#.....#...2bRbS.#............bSbT..avat..............", +"#h.4.4#ibcbcbjbhbhbmaT#e.y.y.4.y.xa6bgbjbib.aO#d.J.x.MaP.1b#bcb0aWaP.4.1.4#h#..6.6#n#o#jbb#j#k.7.A#g.1#aaT#nbmbgaWaP.Mbib7bib5b4a5aP.M.w.4#j#j#l.8.A#gbb.6.4.4.L.I.3bZ.8#hbb.8bb#j.5#ma8b0a5aO.N.wbU#n.6.a.b.c.c.e.fbgbrbxa1#8.CaR.N.Ibqa3a3aN#8.Ca9aN#7.C.NbIbDbIbU#n.9bJbDbDbDbDa2bpa2a#.B.DbabDbNbEbEbFa6a5.D.B.Ba4bNbNbEbJbCbIbKaHbtbtad#4.r#4bPbMbBbBbMbzbvbt#5.D#3bFbCbBbP#PaabBaLar#QbC.Z#U#V#L#T.l.R.l.R.R.laq.R.l.R.l.l.l.k.j.i.h.g.j.g.f.d.d.d.d.a.b.a.#.#auauap#T.#.#.#.#.#.#.2bRbS...........2..auaKatao#L..........", +"bXb0bVbbaWaTbhb7bZaZ#i#e.K.z.y.x.1aZa6aWaVaP.4.M.x.x.1aVaZbjblb0aX#e.J.w#a.8.6.8b8#o.9bU#g#c.7.4.7bV###h.8#gblbjaWaP.4.wbVa6bxb.a6aO.G.xaP.8#c.8.z#cbX.w#f.L.x.L.MaSa6bfbebhbhbdaU.4.AbibxaR.1.L.O#n.9.9.b.b.c.e.ebia7bxbyaQ.N.uaQ.ualbqb5a4a..N.Ba.#7.C.Fb8bIbEbXbU##.9bEbDbD#BbDagaga..E.BalbCbh#ebJ#Abib5a5.O.LbNai#3bJbCbEbAbQ#FaDaCad#4#P.qanbEaGaHaB#RaEaEae#2.s#5bEbA.ZbFbF.jarar#X.tbB.RbB#z#W.R.Saq.l.R.laKax#U.SawaAap#J.k.j.i.i.i.h.f.g.g.d.d.c.b.b.a.a.#axayap#Lao.........#...#aSbRbSataobSbS..auawap#T#T..........", +"bkb2b2bb#kbhbxblbWaU#e.4.y.z#e.4#eaYaVaXaP.4.M.G.x#faZaT#cbmbmaW#eaW.y.yaS.9#.#lbT##.8bU#m.7.5#cbebe.9.8#gbgb0b0aVaP.K.waWaVa5aX#e.M.x.waV....aW#c#d.x.1aWb2aT.OaO......bdbhb7bdaU.4.AbmaWaP.I.xaR.9#h.a.b.b.e.f.fa6aRa9aR#8.I.FaR.O.1a7bqa3#8.E.CaN.C.EbabDbIbI#o#o##.9bDbD#B#B#B#B#3.E.B.NbJbhbc#b.1#ya8a8aO.L.Obpa2#9bK#AbEbEbK#Bacabaa#P.sanaebJaLbuac#R#5ab#2.Q#6aEbBbMbB.ZbFbB.jaI#Xbtazazaq#M.RauaKax#V#Latax#V#Jaqawax#V#J.l.l.j.j.i.h.h.g.d.g.d.b.b.b.b.a.aavap#V#J.#.#...............#auaxap#T....atap#W#Jaq..........", +"bdbkbe#k#cbmbgbcaU#e#b.z.x#baZ#n#h#g.4aP#d.M.G.w.1bTbi#e.4aUaT#ebibmaV#e.4.Jbf#m.9.9bUbU#n#.bmbmaT.5.9#h#.bmbiaY#e#e.w.1aTaPaRaO.4.x.1bTa6.....4.4.K.yb1bhaW.4.y.yaU..bhb2bhbkbc#k.5bia8aWaP.4.xb4...#.a.b.c.eaRaR.4aP#8.O.H.Hb1.1.o#va1aQa..E.v.Na7a9aQ.O.HbIbIbD#.##bK#B#A#A#A#B#BbObN#7bCbC#f#e.zbc.WaRaR.1.HaSbna..DalbIbCbMbEbJbF#2#P.s#4aJbKbIaGaB#R.qae.r#2#9btbBaGaI#0#zbB.ZaGaz#UayaKaAaq#X.tawayao#M#W.R#V#M#T.RaoazaraB.l.k.k.i.i.h.j.h.f.g.d.c.c.a.b.b.a.##T#LaA.#...#...#...#....auaAayao#L#V....#T#Jaq............", +"bb#m#j#c.5.yaWaT#i#d.z.A#a#faUbdbb#i.8.M.4.x.u.1aSb..A.4.K#b#ebibib.aV#e.4.xbf#m.9.9b8bU#nbhbjaY#i.4.x#nbiaWaTaT.4.A.wa6aWaP.4.4.u.Iala5bmaT#e.z.K.KaS#baX#e.4.zbT#obUbdbhbbaU#i.7bib4b0aT#e.M.wbcaU#e.a.ca8a8a5aRaN.G.I.N.Pba.o.o#v#v.N#8.P.F.Nbrbxa9aQ.O.HbIbEbDbIbD#B#B#B#AbNbNbDbNbIbJbNbJbAbPboa0.NbJ.O.uaSbM#6.E.EbEbCbFbCbPbMbBbM.Z#4bAbAbI#D#Zak.q#2#4.YbB#AbFaGbYaI#X#ObBaCadazaraAaGaG#0#Q#Kaqap#W#Jax.m.l#V.l.RaAazar#X.t.l.j.k.i.i.g.d.h.g.g.c.d.a.b.b.a.#.a.#.#.#.#.....#........avaxap#V#Jao......................", +"bW#i#f.8.5#b#f#e#e.4.y.zaTb8bkbdbb#j.4bjb7.M.JaOaV.y.w#b.1aUbib0b4b.aTaP.J.w.4#h.9.9bU#o#hb0b2bm#e.K.y#.bh.4#e.4.J.ybia8aWaX#d.x.M.4bjb0bcaT.4.w#i#c.z#i.J.y.x#fbU..#oaUaT#f#f.5.5bgbjbjaX#d.G.yaTaU#d.ybfa8b3a6aRaO.N.I#na9aQ#8#p#v#v#v.E.F.Na4bxb3bqaQ.O.C.NbIbE#BbA#A#A#A#BbJbNbDbJbJbPbJbJ#AbJbqa..CalbNbEbKbIbJbNbJbBbIbJbKbDbCbMbCbJbE#FbJ#AbCbG#R#4abbE.WbBbGbFaIaG#Z#QaHaHaFac#R#Pazazaq#U#K#NaIar#Jaz.S.R.Z.R.RazaMaLar#X#K#W.k.k.j.i.i.h.d.d.g.d.d.b.b.a.b.a.a.#.#.#...#.#.#........aoao#V#J#W.#......................", +".wbd.7.z#fbV#c#b.7.A.z#cbXb2b2beaU#gbhblbmaVaX.4.4.y.y#e#n#ibgbjbhbi#e.4.G.x.4.8.6#g#obfbmbhaWbdbb#i.7aTaW#eaWaX.xbib4b0aWaP.4.G.Mbgblb0bj#e#b.y#e.A.z.#..bU#n.6....#n###c.A.7.5a6a6aWaT#d.1.x.1bWaT#c.ya8bxbZb#aP.4.P.La8a0a.aN.I#v#v#v#B#Bbja1a7a7a0.O.N.CalbD#B#A#A#v#A#B#B#BbJbIbJbDbJbJbD#zbPa..E.EbIbJbIbK#BbJbJbDbIbJbMbJ#BbJbFbDbD#BbL#BbBbKbKbP#ybJbDbGbD#y#z#Z#Z#X.taHbuaLaa#P.rar#0#U#K#ObYaLaB#X#O.RbC.Z.R.RazaGaz#0#M#K#0#M.l.i.i.f.h.g.g.g.d.d.c.d.d.a.c.a.a.a.#.#...#.........#..#L#L#W..........................", +".A#j#c.K.z#i#g.6.7.7#kaPbkb2b2beaU#kbibibiaWaX.4.J.w.zaT#.##aWa6aVaP.4.M.x.waT.6#.b8blbgbmaT#e.5bb#k.8.5aPaPaP.4.4bib0bZaVaO.L.w.MaWbhbcaT.4.J.waT.yb2.5bfbX#h.7......b7bb#gbibibgaPaX#e.M.x.1b1aT#c.z.xa7a8a5aRaO.N.ubqboa2ag#7.B.H#v#B#B#BaU#ea1aQ#8.1.v.FbabC#AbNbJ#A#AbDbDbDbJbEbDbEbDbNbN#vbJbzah#5bDbN.WaE#6bIbDbIbJbJbK#BbDbD#AbDbDbG#C#CbCbDbJbD#zbQbK#B#y.YbGbO#O.qaeaCaDac#P.q#4.W#Q#K#NaCaGaHar#Q#O.R.Z.Z.S.Rarar#0#U.t#N#L#J.k.j.i.h.h.g.g.g.g.c.c.c.bauat#T.#.a.#.#.#...#.#........b8.2............................", +".x.K.8.A#fbebb.5bcaU#e#cbdblbkaU#g.4bjbVbja6aT.4.K.w#aaU#k.5aVaXaP#d.1.x.1aZaV.7bVbbbhbhbmaU#e.K.w#k.5.6bf.K.J.4.Ma6bmaVaO.4.G.x#e.4aVaT#e.K.y#eaW.K#c.5bia6aX.4#b..bdbf#ga8bib7bjaX.4.K.x.Jb#bm#e.4.yaZaRaRaRaO.O.ubobybZa0a.#7.C.F#A#BbIbIbIbD#8#8.N.H.FbTbD#AbNbNbDbI#B#BbDbDbDbDbDbNbNbIbIbJbzb3ai#5.DbPbpbp#9.BbKbIbMbKbK#AbL#BbIbG#C#BaB#R#ybBbDbC#BbP#CaGaCac#QbObGbB#Aacaa#4.r#Pb4#AbB.Z#0#0as#Z#R.t#1.S.S.R.R.R#0#0#Q#S#NbY#J#T.l.k.i.j.h.f.g.g.d.e.d.b.caAaw#V#T.a.a.#.#.....#.#.....#bS.#............................", +".x#a.8.7bXbbbbbhbhaWaT.4bdbb#j#j#cbibhb4bVaVaP.4.z.x.4aY.7.zaZaP.4.4.J.G#db1#m#g.7bib0b4bgaV#d.y.w#c.z.7#j#m#g#dbcaVaRaP#d.L.x.1aZaVaP#e.K.K.1b1.x#f.za8a5aRaO.L.x#b#o#..7bgbibia6aP.O.x.MaP.##b.5.w#bbc.eaO.O.O.I.Hbobybva4a..E.C#7#m.8#BbIbIbDa5.H.I.IbabD#B#A#AbJbMbJ#BbNbNbDbDbDbDbMbIbObMbKaFbnaf#6.QbDbnal.E.EbI#B#BbD#BbGbDad#2bKaCbtaBak.qbGbD#B#A#BaGbYaC#Z#Q#ObDaFaHaF#P.q.ran#SbCbC#z#z#K#Y#Q#O#Raz.RbB.Z#z.ZaG.t#S#QaC.t#U#J.n.k.j.i.j.h.g.g.d.e.d.c.bavao#Lax.a.a.#.#.#.#.#.....#b8#E..............................", +".y#eaWaZbdbdbhb0bjaWaT#caUaT#i#cbkbibjblbjaW#e.4.J.w#e#h#g.zbRaU.M.J.waSb.bf#m#g.6bhbjbxbm#e#b.w.yaP.A#fbf#j#..5#jaOaP#d.1.I.LbVaVa6aX.4.x#faU.z#bbkbia8a6aRaO.N.xaO#o#h.6aWaWaVaP#d.x.GaZ.#.#.#.a#e.e.ga7bx.N.I.Lbaa3a3a0a.#7.C.Bal#m.7#m#BbIbJal#8.H.ObDboboa0#7.vbCbJbNbNbEbJbEbNbJbA#AbQbJbDahab#3.s#6bNa#.E.DaEbIbKaLaF#4aHaHaD#4.saGaGaBak#P#x#B#v#x#CaGaGaC#Y.q#ObGaHbYaLae.r#2#Q#Xazar#QbObMbFbB#XbB.SbB.Z#z.Z.T#Z#X#OaIayaz#U#K.n.l.j.i.f.h.d.d.g.d.c.d.c#T#J#W.a.#.a.#.#.......#.#.#bS.#..............................", +".1aT#nblbdbhb0b4bVaUaP.4.J#c#.bhb0aWbgb.aV.4.4.1.x.JaT#m#.#hb2bhbcaW#i#bbgbmaW#e.JbcbgaVaP.4.1.w.1aZ#cb8#m#g.z.8#m.z.M.M.u.1aZa6b4aWaP.4.x#h.1.4aU#hbxb4a6aRaO.I.HaS#n#..9bgaPaP#d.I.wbTaW.#.#.a.b.c.e.fa1a5aQ#8aO.Ca0aga.#7.F.B.Ea1#..8bDbDbIbIbIbJ.1bD#Bbrb5a0#7.Ca2a.bJbDbJbIbnai#6bNbNbJbCahbN#2.s#2bwbJbL#FbIbDbI#BbtaJ#2bzbtaD#4.QaGbYaC#Y.qaHaBaa.raGaBac#Z#R.q#1bDaDaDab#2.rab.tazaMar#X#MbFbF#zbB.Z.Z#z.T.Z.Z.R.S#Q#zbEaq#0#J#W.m.l.k.k.i.j.h.g.g.d.d.c.c.d.b.b.b.a.b.#.#.#.#......b8bR.#..............................", +"bVaWbkb2b2bcaW#i#eaT#e.5.A.4.7bkb2aVaVaX#e#d.K.x.1.1aW#.bf#obhbhbdaWaT#b.y.5#j#e.4aTaTaP#d.1.x.1b1#fbV#h#g.7.7b2.9#faTbg.4aPbibxbjaWaO.L.x#d.9#m##a8bxbxbiaO.O.I.uaP#g.6bUaXaP.M.L.1aSb#.#.#.#.b.c.e.e.faOaN#8.I.C.O#7#7#7.E.F.FbY#8.Ebfboa3a..PbJbIbD#Ba2bra7a..N.va.ag.Ea2bDbzb5aia#.BbMbPbpbn#9.Dbna2af.Eag.C#C.UbIbIad#4.saDadaa.r.raGaHac#RaHbuaD#4.qaL#Y#Y#Q#P#1aA#y#4ab#2.r#6aDaCaAaG#X#Q#O#M#A.Y.Z.Z.S.S.T.Z.T.T.R.R.RbCbC#M#0.S.S.m.n.j.j.g.g.f.g.g.c.e.b.c.b.b.b.a.a.#.#.#.#.....#b6..................................", +"b7bgbkblbhbhbcaT#e.z#b.y.w#fbcbhblbdaP#e.4.J.w.1aSb6aY#lbUbkb0b7bhaU#e.4.y.KaT#e.5.A.4#e.z.z.1bTaY.A#ia6aVaP.4.H#.bUbibhaWaXaWbmaV#e.M.w.JaZ......a5a8aVaR.4.H.u.LaP.6#g.....K.xaTa4aQaO...#.a.b.c.e.gbfbW.I.N.ualbsa5.C.P.B#8a4a0a..E.Cb4a1a..E.EbEbC#z#ya0a.#7.B#7bvboa2ag.E#7bpaf.E.BbEbza7a2aNbpbva2af.E.B.EbK#BbKbKbD.Dama.#4.r.rbYacac#R.qaCaCaa#P.raCar#O#O#1aC#y#y#A.s.r#5ahbKbJasar#X.t#ZazaqbB.R.R.R.l.S.S.T.R.R.S.T.TbA.S.T.S.S.Uayaxaq#K.h.h.j.g.g.d.d.c.d.d.#.a.a.#.#.#.....#.bbR..................................", +"aU##bcbhb0bZbm#i#e.y.y.A#faZ.9bcbcaU.K#a.J.x.I.1bTaW.9#o#nbhbWb0bjaT#e#b.y.4aU#e.K.zaT.z.4.KaVaY.Abibga6a5aP.O.u.xbb#cb2aW#eaPaXaP.4.w.1bVaV#g.6#naRaRaR.4.N.u.1aS.O.G.7#.....a8a7a5a1aN.I.C#b.c.e.e.fbebe#c.7.Oa8bra8aR.4bsb3bsa.#7.E.EbraRaO.C.FbD#B#A#y#7.N.C.Fbsbob4a3a..E.E.B#3.D#6bDbqb4a7bobrb3aiaf#6.Q#8bKbIbK#BbKbI#G#Gadakaa#w.l#R.q#Raaaa#P.qbY#Y#Q#OamaIac.YbG.X#w#y#B#A#AbK#Q#Q.taaayaGaq#M.ZbCbB.Z.l.S.T#z.S.R.T.R.Vax.S.S.Uaybuax#W#M.i.j.f.f.g.e.d.c.b.d.d.a.a.a.#.#......b6b6...........#......................", +"##.9#mblb4bWaYaP#c.y.z#ebVbc#laUaU#i#k.w#a.w#faTbg.6bXbU#obcbhbcaT#e#b.w.w#c#f.4.K.zaP#i#j#k#c.z.5bib7bjaVaP.4.xaObb#g.AaT.4.x.1.4.x.waSaVbb#g.z#hbb.4.4.N.L.Ibab#aO.G.Ibkbca9bxb4a5aQ.O.I.H.5.b.e.f.h#.#g.Ab1bfa8b4bxaQa2bqa3a0#7.N.B.Na8a5aO.L.IbD#A#v#A#B.E.Eam#7a3boa2#7.B.E.B.D.EambDbqbra7bnbna2a.#6.B.BambIbD#BbI.U#CaHaHaCak.r#x#xbL#F#C#x#P.rae#C#x#PaaaGaGac#P#BbL#G#p#yaHaFaabG#y#X#UayaA#0#K#0#z.ZbB.R.SbB.Zaxaq.T.TaMav#T#T.TayaAar#W#J#W.i.hawawap#L.d.c.c.b.b.a.a.#.#.#.#..bRat#T................................", +".6.6bgbhblbhaT#e.4.w.yaTaY.8bU#f#k.4.5.5.KbRbVaP.9bU#ob8#oaUaUaT#e#b.J.A.1aZ#d.z.A#baU#g.7#c.z.5a6biblbjaX.4.G.x.OaS.8.5#g.y#aaZb8.1aObUbe#g.7.6.6bd.4.L.I.4bab#aR.O.I.Lbra8a8bxbybraO.O.C.IaRaU.f.f.h.h.k.h.n.na8a8a5aO.La0aNa.#7.B.Calb2a5aP.I.G.E#v#y#A#A#Ba2a..Fa2ag#9.E.Ca.#3.EbIbIbIa2a0aN.Nafafa#.E.B#3bPbK#CbGaEah#3aHaLadaFaDabaa.s#x#E#q#p#x#wbG#C#GaGaLaLaa.r#1#F#x#F.jaHaL#R#P#A#AbFaqaq#M#K.S.m.Rawawao.Sawawaq#Lavaxao#L#W.Saqaq#W#J#Kat.j.kaKaAaq#T#L.d.b.b.a.a.a.#.#...#avauavao#J...#..............avao........", +"be#jbkbcaWaT#e#b.x.w#eaU.6bfbfbk.w.4.z.1aZbjaWaX#e##.9#o#o#eaP#e#b.K.w#bb1bV.z.A#baTbc.7#c#l#caUaVa6a6aXaO.1.u.GaS#cbdbdaU#caYaZ#o##.9#n#l.8.zbXbUbe#h.6a9a8a8aR#8.I.uaObrb4a5a8a1aQ.O.F.C.IaZ.e.f.haU#e.k.n.n.oa1aRaO.L.u#7#9.N.E.Cbaa3.CaR.1.I.I.E.Zbqa3a2bpboaga#.B#3.E.Eba#6bDbCbPbJbIala..N.C#6#3.D.D.DamaDab.Dbvbpah#3.QadaHaFaDab#2.Q#C#x#pbG#w#v#F#v#w#vaB#Z#O.r#C#p#x#F#wac#R.raC#A#AbI#M#M#JaMbMbFbBayax#UaxazaAao#Jaqao#L#TbMbJ#V#U#J#MaMat#VawayaAao#L#M.dbO.#.b.b.a.#.#.#.bavaAat#V#J................auaAap#L......", +"#h.8bkaTaT#e#b.y.y#fb1#l.9bW#hbcbd#e#caTblb0bbaT#c.A.6#o##.6.7.4.z.A#baZaY.K.y.zbTbj#c.6#c.7bUbf#oaXaPaO.O.I.1baaVbfblbd#j#c.A#h##.6#n..#c.6#lbUb2be#g.9bfaRaRaO.N.u.Oa9brbsaQaRaQ#8.N.v.1aSbU#n.fbWbc#i.AaX.1.o.4#8.N.1.Ib1.P.N.Fbaa4.F.CaO.I.CaS#7bqb4a3bpb3bsa..E.FbJ#7a..1bIbDbNbPbJa2#8.C.Falba.B.E#9aHbvaFab#2.Dbuaf#3.QaFbvbvahaa#2#2ab#CbL#D#v#v#s#x#x#p#R#P#Pbw#x#v.i#v#v#E#R#ybQbDbQazaraz#0bObMbC.Zaq#W#JbYaxaq#U#KbBbO#VbBbFbBbC.T#Uavavao#Lapaxaq#T.tar.dbPbF.b.a.a.#.#.#b6atat#V#J#T.......#avao...#awaxao#J......", +".7bdbk.4#e#c.J.K.zbTbc.6##bdbb#j#j#i.4bhb2b0aW#k#b.y#a#o.9.9b2...7.4#k#b.5.x.1aSbV#k#b.z#c.6b2bX#n.4.4.O.J.L#fbZ.8bkb2bU#ibhbcaU.8.1..bUbUbU#hbhbcaU#b.z#maO.O.H.L.GbTa1a7a0aQ.4.O.I.I.Hbaa9#o###.bWbdbgbf#m.8.w#v.u.N.Oba.Na1bqa4a.al.C.F.1.Hala5#7a3bqa3a2boa2#7.E.Ba.bJbIbJbK#CbPbKbva3#7.NbIbK#BbIbIbKbpbtah#5.r.Daf#4.B.DaDaJaEae#4.r#2#v#C#x#GbL#w#x#p#p#q#w#w#w#F.XbG#B#v#x.o#A#AbG.YayaGazazar#Sap#UbD.S#WbFbB#U#M#KaM#zbMbFbMbFbB.T.T.Uaoao#T#LbM#V#T#M#U.f.gbMbF.c.d.a.#.#.gbR.##T#J#Tau...#auaAaxap#T..apao#T#W......", +"bbaUbkb2.K.4.A#daZaY#f#.bkbkbc#j#c.7.zbhblbkaU#k.1.y#a#g##.b..bba6aWaX#d#e#b#e#j#i#b.3.7bbbfblbl#j.8.G.L.xaSa6bd#kbfbe#jbkblbcaT#c.y....be#mbhb2bj#i.K.z#fbi.L.L.1aZ.G.MaQaO#8.F.H.N.HbaaZbU#o.8a7a9aR.Nb2#m.8#..Xa7brbyaQ.N.Ca0aN#7.F.Fal.HaSb#.Fa0a2aN#8afa0#9.E.v.NbJbDbMbLbQ#vbJbNa2a..CalbIbIbNbIbKbKaDah#5#2.r#2#5.D.BbZadadad#4.r.Dan#G#p#H#F#x#w#w#p#p#w.o#s#FbK#w#B#v#C.obL#D#w.X#AaGaAaLaG#0#M#M#V#J#zbB.ZbJ.ZbJbMbFbBbF.ZbPbF.T.TbMbB.UbP#TbEbFbB#U#V.i.f.g.g.d.b.b.b.#.#b6bR.#...#........auaAaAao#Lao#L#T#Lav......", +"bgaTbkbWbWbk#iaT.z.z#f#ob0b2be#i.8.z#cbmbmaU#e.4.y.KaT#e.ybfbfbibga6aT#d.J.J#j#g#b.z.7bTbV#nbe#j#c.5bhbhaUbbbb#k.5aU#jbhb0b2bc#i.4.A#e..#g#.bdbhaW#c.y#bb7a6b#a6aO.O.G.4.N.O.P.C.HbZ.G.bbUbX##brbxa9aQ.N.Ca8a1aN.Ia3a7a0.O.P.P#7#7.F.Pbaa3#7.C.Cbaa5#8#7.F#3#7.E.B.Eb1bJbA#A#F#F#FbIbI#7.Pbna2ag#6bKbKbK#Baeae#2.s#2b4#2.EaHaHaF#4#2#2#2alaD#P#x#x.X#x#G#q#w#x#v#x#p#F#F#w#p#B#x#D#D.W#A#v#varazazaq#U#K#0#T#L#zbBbPbDbBbBbMbMbBbPbBbFbCbMbFbM#zbMbFbCbM.nbE.k.i.i.h.h.g.e.c.c.b.a.#bR.#.#............atatao#T#J................", +"b0#ebdbdbbaU#c.7.A.7aUbfbkbd#j#c.5.5aUaTaT#e.4.w.Abdbb#j#c.4bgb0b2aYaX#d.J.JaY#b.z.zaZ#n.8#m#h#g.7bhb2bkbfbfbd#j.4.5#cbdblbcaT#c.z.w#i....bmaWaX.M.5.1aZblaVaRaP.4.x.Gbaa8bx.O.1aN.x.O.b#n#na7bxbxa1#8.H.CbZa1aO.HaQa9a1aO.valb2.E.Pala3bD.C.Ca4aQ#8.H.C.Eal.B.Dala2bIbM#AbNbNbKa8a5aObKbpboa2aga#.E#FbIbL#F#2.s#6bY#F#p#GaHb3aFab#2.r#5aD.qae#p#G#q#w#q.0.p#E#x#w#pbG#wbK.o#v#x#qaxar#U#C.X#0araq#X#N#Nas#JbYbCbAbFbObB.Z.TbCbBbFbBbObMbMbBbCbFbBbF.U.RbM.n.k.k.i.h.f.g.g.d.c.b.ab8.2.#.#.#..........#V#V#T#T#Z............auau", +"bcaUaUbb#j#k#b.A#b#fbb..bbbkbd#j#c#f#c.5#c#b.A.5bkbdbc#j#k.5bib0b0aWaP.4.w.KaVbWaW#i.1.z#lbebe.8.7bhblbfbWb8be#j.7.7#.#jaU#i#f.7.x#caZ.9bxbZaWaX#a.xaZbb#c#d.4bjbgaUaP.zaOa6aVaO.L.uaSa5aR.4aRa5a9aO.O.C.IbxaR.O.ubra8a9aQ.N.EbU#h.6#mbIbDaR#A.O.1.H.IbT#BbDboboa2ag#9.EbKbNbIbib4a5aO.Gbzbybrafa#.E#3bKbKbKbK#Bbaa.#p#H#xaFaHaD#4.Q#P#R.rae#H#F#E#r#s#r.X#x#F#E.X#E#C.X#x#w#CbHaybuaq#U#C.X#v#D#K#N#1aK#W#D.XbG#zbObNbCbBbBbB.ZbMbBbPbFbCbBbA.V.T.U.UbMbFbMbM.k.i.h.f.f.g.e.c.b.ebT.#.#.#...#.#..........#Tao............auaMax", +"bdaU#k#i#f#b.7.A#fb8#j..bUbkbd#m#g.5#c#c#m.5.Ablb2bXbbaU#c.zbmbgaWaP#d.J.x#db0b0aU#e.z.KbU#obkb2bdaWaUaWaP.4bd#g.z.7aWaP#e#e.K.z.Kb1##.9b0b0aWaP.L.waPaU#b#bbgb0bjaW#e.K.yaOaO.L.uaOa8a8a1aN.PaNaN.O.H.LaOaQ#8.I.ua8b3a1#8.H.H#h.8bUbe#g.AaR.O.H.H.F#8a0aNbobpboa2a0#9.E.B#CbJa6bia6.L.ubnboa2a#.E.B#6bK#B#F#Bbqa3a0aHaFadaDadaa#2.rae#Pahab#x#w#w#s#s#p#w#x#F#w#x#x#paGac#w#w#xaxaq#U#Jas#v#w#x#D#C#x.X#B#vbBbB.Z#zbFbFbBbB.ZbBbBbBbFbBbBbFbC.V.V.V.W.UbBbMbBbF.h.h.h.f.g.e.b.cb6.2.#.....#...#...#.....#................avawav", +"bf#m#k.5#c.5.A#fbV#gbVblb8b2bb#j#c.5#cbfbf#n.8bkb0bWbb#i.8.zaWaTaP#d.1.x.1aSbgaU#e.4.x#fb2bdbb#i.5#cbhbcaT.4.A.7.A#iaRaO.H.5.z#cbeaZbfaVbiaW#e#d.w.waT#c.5#fbhb0b0aT#d.y.K#o.L.uaOa8b4a9a0aN.G.I.N.u.Cbaal#8.I.CbTa9a7#8.N.u.N.8bkbWbb#c.7aQ.H.O#v#vbqa3a.bnbvb3bnag#7.E.C#FbPaSaR.1.xaOaiag#9a#.B.Dam#F#F#G#Cbyb3albubuad#4#4#P#Pam#xbzaFah#5.Q#s#G#p#p#s#p#w#x#G#FaHbtac#P#p#w#W#W#M#X#x#CbG.0.X#w#w#B#v.X#A#AbG#v#vbNbE#z#z.Z.Z.ZbFbBbB.Zavavat#VbBbGbFbFbF.n.k.h.h.g.g.e.c.bbR.#.#.#.#.#.#.......#...#................atapao", +"bfbb#h.7.7#c#c#i.8bWbfbfblbW#m#g.7.z.8b8#o#m.8bdbdbd#f#c.5.A#eaP#d.M.w.wb#bjaT#k#b.A#bbcblb2bb#k.zbhb7bgaT.4.w.za8a6a5aX.4.G.y.x#daY#j.7aVaP#e.J.x#b#j.5.zbcbgbgaT#e.1.x#b...#.1aPbrbqa7a1aN.N.u.I.OaR.o.U.H.Hba.NaQaN#7.u.1b7bJbbbb#g.A#f.O.vba#Abobvbq#7bobwbpbo#9#3.B.EalbJbK.O.x.1aEa#a#.E.E.DbT#BbK#F#Fa0a7a1aFbtaFaa#2.r#P#4#Fbzb3bnaf#3.Q#F#G#H#x#w#w#s#E#q#paCaBak#O#qaI#0#x#UbK#x#D#v#D#B#xbHbHbD#w#BbD#B.WbObNbBbBbBbBbBbF.T.T.ZbBaAaKat#V#L#z.Z.m.l.n.k.ibF.f.g.e.cb6.2.#.#.#.#.#...#.........#..................#V#L", +"bf#j#g.7#cbbbc#k.zbfb2bdbebb#g#c.z.7#lbWbf#h.8bbbbbgbgaWaX#e.y.J.K.x.waSbe#o.4.7.A.1bV#obWbWaU#c.zbhbjbm#e.K.wa6bZb3a5aP.4.I.waSaW#m.8.8#d.4.M.J.1b..7.zbeaVaPaT#e.4.x#baZ.#...K.La7b4bsa1aN.N.u.IbZ.o.Sa6a5.N.H.Cal.N.C.HbsbMbEbD#c.z#cbe.uaQ#y#Aa6aX.O.Ea2a2a2a..N.E.B#3bKbJbI#FbQbJanaE.E.E.Eamah#B#F#F#B#Fa.#8aDadab#1.s.raHaBakaFbnai#5.D.D#p#I#s#p#E#w#G#E#p#Fac#Y.saJaAaz#Z#X#u#F#v#v#E#C#C#w#wawaq#y#vbG#A#BbObCbCbF.ZbBbPbMbCbObObAavat#V#L#Tavap.m.m.k.jbPbF.d.f.e.cbS.b.#.#.#.#.........#.#........................#V", +"#n#g.8.5.8#j..bf#o#hbW#m#j#g#c.7.7aZbe#n#h.8.6#kbibjbhaWaX.4.J.yaU#iaP.9.9####.9#ebfbe#j.8aU#c.5.5aWaUaP.4.x.4bib0b0aVaO.L.x.M#h#n.9.7..bd.y.L#daVaWbhbha8aWaX.4.Aa9aRaQ.N.#.#.#a3bsbybxaQ#8.P.C#8a9aR#8b4aV.4.x.4#BbDbNb2bb.1bDbDbDbDbJbE#y#y#AbibxaXaO.xagafaf#7.F.B#3a0bN#FbJbKbK#CbPaf#6.D.BbRbIbI#F#F#F#F#G.P.C#5#2#P.DbYbuad#Paiaf#9#2.s#3#H#u#s#x#w#w#s#p#p#x#x#PabaGbYaMar#X.t#qbK.X#w#C.W#vawaLaq#K#A#vbPbKazaqarbFbBbBbFbBbNbFbFbMapao#T#JbYaKap#T.m.n.kbFbB.f.f.eb9#E.a.#.#.#.#...#.#.....#...#......................", +"#j#c.6.7#l#h.6bU#o#h.8#h#c#b.z.7.8b2#n#j#..6.8bdbhb4b0aW#e.4.y.1aU#e.K.z#nblbe#gbUb8be#g.8.8#b.zbV#e#e.4.y.Kb8a5a8a5aR.O.w.IaObga6aT.4bUbkbW#jbhb2bhbib0bZaVaP.4.xa7a9aR.O.u.#.#a1a7a7aQ#8.O.u.PaQa7a1#8.HaO.L.xbhaU.AbDbd#c.AbDbDbDbD#A#y#y#AaZb0bxaP.O.w.B#7#6.E.E.EbTa2#BbKbIbKbIbzag.D#2.s#9aJ#H#CbL#B#F#F#x#q#x#F.D#2aJaCadak.q#1#6#2.D.Fam#s#p#u#s#r#H#u#H#p#q#w#q#sazaGaG#0#S.tbK#x#w#C#v.XbG#Baq#Mat#W.XbKaAaGaq#W#K#z.ZbBbBbMbFbC.Z.V#T#Laxavax#V#Lap.l.k.i.h.h.f.eb9.a.a.#.#.#.#.#.#.#.#.#.#..........................", +".y.9.A#lb8##.6bX#n#g.6#.bd.8.9#g#h.9bf.8.6#g#obcbgbjbjaY.4.K.w.1aV#c.y.1.Ab2bebfbUbU#m#g.6#c.zaZbf#m.z.5#fbg#eaVaVaX.4.L.u.IaVbdbdbb#k.wbbaU#cbcaUbcbib0bxaV#e.L.I#da5aO.N.CaOblbWaRaQ#8.N.C.Cala0bxaQ.O.H.O.ub#bl#k.z#i#c.zbTbDbDbD#A#y.W#y#AaVa6aRaO.G.G.BbP.E.E#6amambIbNbDbPbKbpbyaga#.B.PaQaJahab.r#4bL#C#F#F#F#G#F#x#Gakak#P.raC#r#3.F#I#t#r#p#p#u#r#G#H#E#E#x#p#E.0asar#0#Q.t#N#x#D.X#C#C.X#vbG#yawaAao#JazaGaKar#U#KarbFbCbMbMbB#zbMbFbA.V.Vao#V#L#VbJ.n.k.i.h.f.fb9.2.b.b.a.#.aauat#T.#.#...........#..................", +".z.A.8bX#l.9.6#h#h.8bhbhbhaU#k.5.6bUb8#o#j.8.8aTbmaWaT#e.4.y.w#f.4.K.w#f.6be#gbUbe#n#g.9.6bebfbUbe#g.6#.aUaT#c.4aOaO.1.G.1b1bdbWbkaU#i.5.5#c.A#i#caTa6a6aVaP.4.w.GaVa5#8.H.u.ObWbk#8#8.N.P.P.Nb1a8a4#8.N.Cal.1a5aP.7#eboa3aQ.PbDbD#B#A#y#v#v#A#BaPaO.x.xb1b1bKbI#B#y.W#v#vbJbKbKaEbtbwaf#3.B.PaHbvaDab#2.D.r#x#x#F#w#G#G#u#u#t#P#R#u#s#r#u#u#u#t#s#q#s#q#r#I#q#p#p#H#H.p#x#Y#0#Q#O#QbY#w#v#p#v#w#F#w#v.Xaxaxayaxaqazar#U#N#KarbFbBbFbFbF.TbFbCbA.V.V.W#V#VbMbB.n.n.k.h.f.gbSb9.b.b.a.aauaKat#V#T.#..............................", +".z#i#n#h#..A.9#n#..Abkb7bk#j#c.7.4bUbf#n#..6.8beaTaXaP.4.y.A#daP.K.A#cb8.8#h.9bX#j#i.7.zbTbU#n#n#h.8bmaU.4.4.wbx.I.L.u.1ba#dbkb2bW#j#c.z#c....bU.7bhaVaRaP#d.w.1aZaVaO.O.u.Ca1a3a7a3.P.N.valb#a1aRaO.N.u.Pba#v#Aa7a0bqbsa3aN.H.CbD#A#A#v#v#y#Aa2a..M.1b#a0#6.E#BbIbIbKbKbNbKbN#F#Bagaf#3.sbtaFbtbtah#5.r.r.r.D#x#x#x#q#G#q#s#u#u#p#H#saDadab#t#t#r#t#t#u#paGaB#Z.B#u#p#p#x#p#O#Q#OaC#w#xbL#G#x#w#x#w.X#vaqaybtaz#Waq#X#M.taJbBbM.ZbB.Z#z.V.VbC.Y.W.VbObObBbCbF.n.k.k.h.f.f#E.b.b.b.b.aavax#V#T#T...........#....................", +"#d#i#h#..9.9bX.8.6.8bhbjbj#i.4.z.1bf#n#gbdbmaT.4bf.4.4.wbga6aVaP.1.wbV.9#o##.9#o##.7.6#jbU#..6#.bhblbgaT#d.K.4bibgaV.4.y.waTbdbdaU#e.8.y#j....#o#maWaT.4.4.J.L.1a6aO#8.I.uala9brbra3aQ#8.O.F.G.I.O.O.H.Hb1#v#ybrbqa3a0#7a1#8.C.NbD#A#ya3a0a.bqbra..Ebybsag.E.EbKbNbJbJbzbnah#6.E#Fa##3.D#3btadaDad#5#2.s#3.r#4#x#w#H#saHad#4#u#I#t#GaHaJad#4.r#s#s#t#I#IaGbYaC#Y#O#q#H#s#p#x.p#E#p#w#p#pbL#x#w#w#F#B#x#w#vawazaz#W#K#M#KaBbGbBbF#A.Z.Z#z.VbCbC.Z.Y.VbNbFbB.UbKbB.n.i.h.fbTb9.b.c.b.b.aapap#T#LbY...#............................", +"#e.J.6.8#.be#g.6.9#nbcbcbc#j#c.K#fbc#hbhb0bcaT#c.wbf.4bibZa6aX.4.J.x#c#lbU.9.9##bUb2#n#..6#g#...bhb4bcaX#e.y.4aWaX#d.1.x.1aVaWaU#i.4.A#faY.......8.8#b.w.M.waSaZ.O.N.H.I.FbTa7bZb5a3aN.N.C.N.k.n.n.O.NaQ.X#v#ybrbybxa0#8.v.N.vaQbqa2a..Fa0#7.vbsa..Ebpama#.B.EbEbJbPbJbvbwaf#6.Q#F#7#2.EaDbzbzab#5#2.s#2b6.ram#w#GbLaHbvaB#P#2#s#saHbtbtad#4.r#2#I#t#u#taGaHaC#Q.raeb9#s#p#q#x#q#rar#Y#x#p#F#wbK#F#v#w#p#xaxaqaq#K#K#B#D#z.ZbAbCbBbBbBbB.V.V#z#A.Y.VbCbM.Z.UbMbB.k.k.i.f.2.c.c.b.b.b.b.a#L#LaA.#...#.#.#........................", +"#d.K.xbkb2aZ#i.6#caTbhbhbcaU#e.zb8aZ.9b0b2bb#e.5.z#jbgb4b0biaT.4.J.w#d#g.6#ib8.9bUbf#h.8bgbgaT.4bhbhbm#e.4.w#b#e#d.M.L.1b2#d.5a8a6aV.1b1..........bd#j......aYaT.7.H.N.OaQ.7a7bra7a1#8.N.u.N.k.kaV.4.o.X.X#va8a3bsbraN.Na0a.ala1b4a3a..Fa0#7.Ba.#7.va.#7.F.Fb7bJ#ybJbzbpbp#9.E.D#6bIbKbzaEai#9.D#2.s#2bw.DbT#u#t#u#Iaead#4.ran#u#tadaDad#4.r.raj#u#r#t#uaBac#R.q#O#s#H#q#H#x#p#EazaI#Z.q#s#w#F#pawayaq#Jayap#U#J#NaK.ZbD#vbBbObN#A.Y.Z#y#z.Y.V.V.TbObE#zbAbObObB.n.i.hbHbH.c.c.b.a.a.b.a.#.a.#.#.#.#...#........................", +"#d.J.x.4bl#j#c.z#cbhb2b0aW#i#e.5.zbb.8bhaY#i#c.w.zaTbgbxbga6.4.4.w.yaP.7.z#m.9bgaWaX#dbhblbgaVbgbmaU#e#b.x.yaZ#b.J.K#db#.4.ybibxa6aV#d.x........bfb2a5aXaO...5.4.wbbbf#j#c.Aa1a1aQa..N.C.CaQ.pa1aQ#e.x.x.Xa6bxa0a3boa3aQ.NaN.N.Cbqa3#7.C#7.E.Cal.B.N.E.E.BbabA#zbna2ag#9.E#3.B.DbK#Fbtbvbnai#5#3.D#2#2.D#5#u#t#q#u#t#R#4.r#2#p#q#u#4ab#1#2.ram#u#t#r#r.9#R#1.q#Obp#G#p#u#q#s#paGbuaC#0#O#X#x#x#xayaA#W#Kayao#L#UbC#y#AbCbNbCbObFbBbBbB.ZbB.ZbFbEbObPbC.W.UbCbCbM.k.h.hal.g.c.d.b.c.b.a.a.a.a.#.#.....#...#......................", +".4.y.w.4bb#g.5.zaUbjb2b0aU#i.4.y.z.8.8aU#i#e.y.zbTaUaVa6aX#e.4.G.x#daX#i.4##bibiaWaV.4.wb2bibjb4aP#ebmbmaT.5bmbgaWaX.y.K.4.Jbib4biaR.4.G.4bd#jbc#gbibmbia6aVaP.O.7..#j#c.z.8aNaNaN.N.H.CalbZa7a7a1aN.Pa0.O#vaRaObqbsa3aN#7.C.E.C.N.O.E.C.F.CbT.Eala4bIbNbNbNbDbpbza2a2#9.E.B.DbZa4bzbtbybpaf#5#2#3#x#H#x#F#H#q#G#q#H#q#s#uaDaa#t#u#t.Q#P.sah#u#I#t#r#u#r.p#sak#p#q#p#u#I#u#t.paBaI#Z#Q.q#u#q#E#waq#W#Janao#JaM#C#A#D#BbJbM#z.ZbJ.ZbB.ZbF.V.VbFbAbAbFbMbCbC.U.m.l.k.hb9.2.d.c.c.b.b.c.a.a.#.#.#.#.#..............................", +".K.x.w#e#g.7.5bdbbbhbhbcaT#k.5.y#aaW..bb#c.z.z#bbm.8aPaPaP.4.J.xbmaWaP.4.4.Abxb4bgaX.4.w.4bgblblaWbha6a6aXaO.LbjaWaP.4.J#j..a6a8aXbia6aV.4.5#j.7a8b0bibibiaVaP.O.u.....7#gbd.4.N.N.C.C.Nbsa7bybZa1.O.P.N#8.v.O.Lbrb3bq#8.N.C.C.P.H.N.FaQ.BaS.N.valbDbDbNbNbIbBbpb4bqag#9.E.Eam.D#8aEaLbza2#5#3.D.Dam#x#H#F#F#H#w#x#s#s#GaLaDaa.s#I#t#u#I#t#u#I#I#t#t#t#I#u#u#t#u#G#H#E#u#u#r#q#x#0#R.taM#w#F#p#v#D#Nas#D#Lax#B#w#vbPbQbJbCbFbDbM#z.ZbFbCbF.ZbBbB#z#z.WbC#zbJ#z.n.k.h#E.g.e.e.e.c.c.a.a.a.#.a.#.#...#.#..........................", +".w.w.MaV.7blbkbhbcbbaUaU#e#b.x.y#i.4....#i#c#ebb#h.6.4#a.4.G.xbhbgaWaT.4.y.A#kbia5aVaP.4aOaVbgaWbhbibia6aVaO.L.xaX.J.5.4..beaVaRbibjbgaVaP.J.G.7a8bibib4bjaRaO.L.u.1.#.##e#d.w.x.L.N#8.7.za7bxbsaN.O.C.N.N.CaN#Aa3a3a..N.C.E.B.N.CalalbM#A#BbKbIbJbMbDbJbJbIambpbpboa.a#.B.Bag.D.Hahahahaj#5.D.D#6#C#q#G#w#H#q#H#G#u#raHbtaJ#4.r#3#I#u#t#t#t#u#uaCaGaB#Y#I#t#u#G#I#r#s.p#s#s#x#w.X#O#YbL#F#E#FbQax#Var#UbL#x#v.0#vbKbKbF#AbPbD#AbF#ybB#zbBbB#z.W.V.V.W.W.UbCbD.k.kbS.0.g.d.e.d.c.c.a.c.a.#.#.#...#.#............................", +".x#bbSaZ#obkb7bVaU#iaT#e#b.z.z#fb8.4.5..bUb2bW#m#..5#gbT.G.Mbib0bjbcaP.4.w.4#kbibia6aX.4.JbiaT#kbgbxb4a6aX.4.G.x#e.4a8a5aRa8a6a5bhb7bVaRaP.G.G.5a5a5bibib#aO.4.I.uaO.#.a.a#a#e.bbc#e.zaT.Aa4a4aQ.O.P.vaQ.P.uaQ#AaNa.#7.C.Nb1.Ea4ala1a4a3al.ubJbJbDbDbDbDbDbJ#9a2a2aNa#.E.B#3#3.B#9ab#9#5#6.D.s#2bY#x#x#x#I#I#r#s#qaEaFahab.D#P.r#I#I#t#t#r#I#u#raHbuaB#Y.q#X#s.p#q#u#s#r#r#E#p#p#x#t#tbL#x#x#Fauayayaz#W.t#x#w#CbGbMbGbI#BbD#AbObObB.Z.T.Y.ZbB.YbC#z.W.W.X.obM.k.hal.f.g.g.e.c.c.c.a.b.a.a.#.#.#.#.#............................", +".ybTbV..bdbWb0bW#j#k#b.4.y.z.1bV#c.z.zaUbebf#m#g.9.zbe#k.5bib0b4bVaU#e.1.y.4bhb4biaVaP.4.J.M.M.4a8b0b0b.aP.O.I.GaO#ebZb#aRb0bZbmbjbjbiaP#d.w.waTaOaOa6aVaP.4.I.u.LaV.#.#.a.b.c.ebgbcaU.4bcaNaN#8.P.va3a3a2a0#7.EbA.F.C.Pba#7#7alba#vbsbra..F#B#BbDbBbobnaga#.Caga.a##3.B#6bZ.DaEaha#.D#6.D.v.Dam#F#F#F#F#u#s#s#s#rbtbwah#5.D#2bY#t#taDacak#u#tadaHaC#Z#O.q#X#Q#q#p#s#r#r.p#H#E.p#t#I#r#x#w#vauaAaAaLar#M#KbI#B#BbDbD#B#A#DbM#zbMbCbNbJ.V.V.V.VbCbB#y.W.X.UbObPbBb9.0.g.g.e.g.e.e.b.b.b.a.a.#.#.#.#.#.#..........................", +"aSb#..bUbbbdbdaU#k.4.z#b.1#faT#c.1.x#faU#m#m#g.8.6#lbebdaUbmbjbhaY#e#d.K.x#dbhb5bxaT#e.M.G.MaW#ka6bia5aP.4.N.u.LaX#e.K.KaRb0bZaVb.aVaP.4.J.x#a#....NaRaP.4.O.u.MbVaV#d.#.b.b.a.db4bjaT#c.w#k.N.N.uaQbsbra0aN#7.C#7bAa7bybsaQ#7.C#A#ya7boa3a0.EbNbMbpb3bnaga#.B#3a#.D.E.Eba.Ebzbzah#5.D.Q.D#6ag#F#x#x#x#G#x#u#s#qaFbvbuaj#4.Q#2#P#taHaCaBaa.B#I#uaB#Y#Q.q#1#N#1#u#r#u#r#r#t#p#p#q#s#t#r#wbQ#F#wataxaq#W#K#M#C#v#v#vawaxaq#LbQbA#zbObN#z.Z.V.V.YbObM.ZbFbEbMbFbFbM#E.f.f.g.e.c.d.c.b.b.b.a.a.#.#.#.#...#..........................", +"aV....bUbUbb#j#i.4.z.A.7bbaT#k.5.A#bb7bb#g#..8.6#fbXbkbhaTaTbcaUaT.4.K.x.yaZa6bga6#d.4.G.waOaW.4aVaVaPaO.L.u.1#faVaT.K.zaOa8aVaVaTaP#d.K.x.1b7bU.......O.G.I.Ibaa5aP.4.xa6aWaXaO.Kbj#i.z.z.7#ba6a.bqb3b5a0#9#7.E.Na5aRaObra..N.Cal#yaQb4a3aN.P.EbEbpbvbo#9.E.C#7.B.E#7an#F#5bvbyah#5.D.EbzaJaj.Q#G#x#u#H#H#H#p#raFaEah#5#2.s#5anaHbtbvadak.r#uac#R#Q.q#Oas#N#I#s#s#p#r#I#t#s#p#r#p#p#p#sbL#x#F#T#W#W#M#Kaz#x.X#vawaMawaq#LbJbGbMbFbGbP.Y.Z.Y.ZbObM.WbB#AbObC.navauat#L.e.e.c.c.c.b.b.b.a.#.#.#.#................................", +"......bf#n#i#k#c.7.5#cb1bdbU.4.A#fbVbX#n#..5..##..bkb0bha6aWaX#e.M.4.x.1b#b8aWaVaX#d.M.x.JaZaT.4.GaPaO.O.G.IaSb1aT.4.z.4aVaRbga6aXaO.G.w.1bV.7........aV.L.LaOb4aWaP.M.Mbxa6aX.4.x#i#b.A.1#b.kaPaObobqboa3#7.E.B.Na8aRaO.H#7.C.F.EbNbobrbq#8.P.NbEbna2#9a#.E.Bambra..E#7#FaibpaE#5#3.s#9bubt#5.Q#6#G#G#p#q#H#G#Iahadab#2.s#6ai#uaDaHaDak#P.qabaC#Y#O#2#t#M#H#s#raFaCak#t#t#q#r.0#u#x#w#s#q#p.X#E#x#L#N#F#w#w#C#Cawayaz#W#J#0bFbCbC.ZbQbF.V.Z.ZbFbC.W.W.VbPbB.naAaAap#L.g.e.c.e.c.b.b.a.a.a.#.#.#...#............................", +"#c....#h#.bb#b.7.A#faZbb.9#n.9.6bfbUbe#h.8.zbe....bgaWbibga6aVaP.M.x.4#fb1.xaPaO#d.M.w.xaZb1#e.4.x.1.O.G.uaObjaT#e.K.x#f.Ibibja6aXaP.M.GaP.w.4...........4bmbib.a6.4.y.waTbiaP.L.x#d.y.1b7a6aV.4.La2a0a0a..N.C.CalbZaRaO.I.N.Eb5.EbAa0bobna2#9.EbCag#9#7.E.B#6a0a..E.Ea0bKbDah#5#2.B#6aiaDaj#2.Dai#H#q#H#w#s#H#u#t#2#2.Q.DbsaHaHadaBaa#4.q#PbuaB#Y#P#t#taCac#RaHb3ad#4.s#H#H.p#s#x#F#C#x.o.oawax#W#C#C#x#p#v#v#xaqaq#V#L#JbNbBbQbF.ZbMbF.Z.V.V.Y.W.W#v.UbEbFbHaxat#V#J.g.g.c.c.c.e.b.a.a.#.#.....#...#..........................", +"#c.......6#fb8bU#c.8.7#m#.##.6bX#nbe#m#..A.9...#bjbZbhb0b1a6aX.4.M.x#a#i.y.1bZ.O.L.x.G#db1aP#a.w.1aV....alaTaT#c.4.x.1b8bib0b4b.aR.4.G.Ga5aRaO............aVaWaPaP.L.x.1a6aX#d.1.uaS#dbca8b4a5.4.xa.aN#8#7.F.CaSbYa8aR.O.I.Lba#7.Bal.Nbqb3a2a..E.E#B#7.B.B#6bnbD.E.BalbDbI#B#2#2.B.DbY#2#3.D.DbYbLahab#p#t#r#q#s#t#I#2.D#6#uaHbuadak#P#P#PbvaBak#O.qaCaGaGaB#Y#OaF#4#P.r#q#p#G#s#p#F#x#wbLawaKaq#W#L#v#w.X#w#wbG.W#W#J#LaMbMbBbMbF.TbQbC.ZbM.Y.W.YbE#A.X.m.nbHao#T#Lan.e.g.d.c.c.b.b.a.a.a.#.#.#................................", +"be.8......bf#n#h#h.8.8#hbbaP.K....#h#..7.8aUaUbib0b0bgb4b0aWaP.4.y.w#daW.4aTaZbc.w.JaSaV#e#a.J.JbTb.....aO#d#a.y.w.1bja8a6bibia6#d.L.x.GaRaVaN.I.O..a8a8a9aR#ebma5aP.Jb8aXaO.L.x#eaVaVa8a5aO.I.I.u.o.N.N.C.C#7a3a5aR.4.I.uba#7.E.Bambobqb3am#7.E#7#BbM#6#3bJbCbMbJbPbDbD#BbKbK#B#3bvaj#2#3#B#5#HbzaEaj.D#H#q#q#q#H#u#t#u#s#raDadak#P#P#Pad#Z#Y#R.qamaGbtbuac#Y#O#R#P.raM#p#I#H#G#F#x#G#s#C#waq#V#K#T#w#v#C#v#w#D#A.U#U.WbObObBbC.Z.ZbFbFbPbMbB.W.YbE#A.o.mbM.0.f#Vao.f.e.e.e.c.c.b.a.a.a.a.#.#.#................................", +"bU.8.8..bUbW#o#h.7.AbhbhbcaT.4bhbdbbaT#c.zaWaTbgbibgb.bxbgaW#d.4.x.waPb2bmaV#e.Jbc#jbfbf.x.M.GaZaY#b.z.....J.L.4.K#kbxb1a5a6aRaP.4.G.I.1bxaQ.4.GbgbmaVaO.LaObibiaWaP.M.x.4.L.G.ObZbjbra7boa0a..Fb#.ob2bd.N#8#Aa3a3a0#7.ubaa5.E.BbT#Aa2a2a2#7.N.valbJ#AbIbJbNbJbEbqbn#9.BbKbKbK#BaJah#4.Qaf#x#qaFbvbpab.Q#5#p#q#x#u#I#r#s#r#raaab#2aCacaa#u#r.q.qan#IaIaGaH#Z#Q.q#Y.ran#r#p#E#q#G#x#q#G#s#s#p#T#J#W#w#C#BbG#v.o#BbGbG.Y.WbMbFbMbF#DbF#z#zbFbC.Z.V.WbJbA.o.mbQbC.j.h.g.g.g.g.e.c.b.b.b.a.a.#...#..................................", +"#b.y#...bUb2#n#g.7#hblb7aW#ibkblblbb#i#c.Abc#eaWaWaTaWaWaXaP.4.y.x.1aZb0bjaVaP.J.J.9#o#mbhb0b2aW#e.7.K..bibhbmaX.4a6bibiaOaPaO.4.G.w#db8a5aO.Nbibxb#aV.4.G.Gb3b2aW#e.L.x.w.J#daX.f.hbqa3a3a0aN.E.B.obb#i.K#iboboa3aQ#7.Cba.F.CalbJ#Aa.aga.#7.B.Bam#A#z.Zboa0a#bKbrbra#.CbJbK#B#Caj#5.D#2aJ.K#G#GaEaj#2.s#F#G#E#saF#5#u#s#r#r#t.DaHaHaCaa.r#4#s#I#E#IaBaB#Z#R.q.qaB#Q.t#p.pawax#K#q#H#F#q#x#x#p#w#C#w#C#v#y#AbG#y#ybPbGbMbJ#z.Z.TbCbC.Z.Y#z.Y.W.Y#ybMbA.o.RbJbJ.f.f.f.f.e.f.e.c.c.b.b.a.#.#.#.#.#.#..............................", +"#c.y#i..bf#n#h.7.8bdbWbWbc#kbkb7bWaU#i.4.z#b#b.zaT.4aXaX#e.4.J.x.1b1aWb0bZaT#d.y.K.8b8#.bhb0bkaU#c.z.z..bib4bgaP.MaVaVaXaO.O.M.w.w.1bVaRaO.O.ubxb2b.aX#d.G.MbibgaP#d.x.GaVbe.e.e.g.fbpbqa3a0#7.P.va.#c.A#fa3byb5a1a..N.C#7bIbMbDbJbD#A#7.E.B.Bam#y#ybJbpboa2#7.Ca2#9.E.EbD#BbI#BbI#2#3aiai#9#x#q#4#2.Da4#F#p#saHbvab.Q#paGaCakaFbYbuadaa.r#2#r#t#q#t#t#X#Q#O.qbwar#Q#Q#saybuaq#M#p#G#G#w#H#E#p#E#C#v#x#w#p.XbG.WbBbI#AbEbBbFbPbMbAbA#ybB#zbM.Z.W#vbCbFbA#E#E.h.h.h.h.f.e.e.e.e.c.b.b.aauauap.#..................................", +"aU.zaUbUbfbb#j.7.7#obhaU#k.4bkbWbjaU#c.5.A#c.1.w.4.J.x.4.M.J.J.ybab.a6bgaV#d.K.x#d......bbbcaU#c.5.x#e..bgbiaV#d.x.1aOaO.L.x.G.O.1aPa6aO.N.N.IbibiaV#d.L.x.1aVaP#d.w.u.1.b.e.cbiaW#ebqb4bra0aN.E.vaQ.o.U.Xa3brbqa2#8.P.ualbNbJa5al#A#AbMbJ.Eal#y#ybMbqbvbva0#7.B#9a#.EbMbI#B#BbKbK#Abzbnaiaf#3.Q#x#xaf#H#q#w#paDae#2#2#qbYaCakaHaHaFaa#4.r#4#t#s#u#s#r#u#O#Pan#Z#Q#N#1#qayaq#U#J#p#G#x#x#x#p#q#C#x#x#E.o.X.0#D#v#v#ybObD.ZbObPbBbF.Z.Y#zbMbM#z.W#v.WbCbAbE#z.h.h.f.f.f.e.e.e.c.c.b.a.baxaKap#L..................................", +"bVbTbfb2bW#m#g.7.7..aUa5aVaP#dbbaU#e#b.z.zaZ.A.1b8.......J.M.1aSaW.zaVaX#e.4.x#db.......aUaT#e#b.A#cb8.JaVaX#e.K.zaS.7.M.xaSbTaObgb4b#aP.I.LaVaVaXaP.4.x.GaZaP#d.L.x.MbZ.b.c.cb4a6bqbsbsbsaN#7.E.C#8.o.U.Wa0a2a.#8.N.B.Fam#Abxa6#8.CbJbMbEbE.W#y#y.Ybsbnama#.E.CagbDbPbD#BbI#C#CbKbnbtbyaiaf#3.B#p#H#q#G#H#x#x#s.r#2#raCaC#Y#OadaBac#4.r.ran#r#t#r#r#G#s#I#u#Z#Y.t#Ob5#H#U#W#Kac#G#G#w#C#w#x#E#F#xbG#v#v#B#v#D#y#A#DbJbG.ZbNbFbC.Z.Y.YbB#zbB.W#y.YbPbCbJbE#z.h.h.h.f.e.f.e.c.c.b.b.a.aavav#V#Jap................................", +".1bXbfblbd#i.8.A.5bibia6aVaRaN.G.I#b.z#bbSbc.zbVbg......blblaWaPaU.7.8#e.1.J.1bV........aW.4.5.A.zbVbdaU#k.z.J.JaZ.7.8bia6aP.M.wa6bia6#d.G.yb4aPaO.4.G.xbVaOa8.G.xaSbg.aa9aQ.OaVaXa3a3a2a.#7.N.v.Eam.m.obrb4a.#8.N.C.Fb1#AbAa7aR.L.IbJ#ybE#y.W.W.Y.Waga.#9.E.BbabDbDbIbD#B#F#B#FbGbzbtbpbn#5.E.D#x#x#p#H#G#F#p#p#G#r#s#rak#PaC#4aa#2#P.rbw#u#t#t#r#t#s#s#u#t#p#O#SaC#H#x.X#x#0#x#p#H#H#F#v#w#w#C#v#x#D#C#B#v#w.YbG.XbF#zbBbFbC.YbA.Z.Y.Y.Z.Y.Y#v.WbEbC#D#B.i.h.h.f.f.f.f.e.e.c.a.b.a.aapao#L#W..................................", +"bbbUbbbb#j#k.6.5bdbjb0b#a5aR.4.L.H.z.7#lbh#a#eaT........bWbhbhbhbc#j#c.4.M.M#e.............4aW.4bhb2blaU#k.5#caPbfblbib2biaP.L.GaVaV#d.L.uaSbia6a9boa1aQal.Hb3aRaO.Ibra9a1aN.N.C.GaNa0aN#7#7.C.Cal.m.m.oa8a8aO.N.v.Fa0bJ#zbqa7a1aN.NbE#y.W.W.W.W.W.W#7.E.E.BambEbDbJbJbMbLbL#x#C#Cahaiaf#5.D.B#3#C#q#w#C#p#p#w#q#w#s#s#r#saHbtad.r#P.rae#t#t#r#G.p#H#q#q#s#q#p#r#s#q#G#p#H#x#x#w#p#w#w#w#qbK#F#v#p.X#w#waz#0bGbPawayax#UbBbJbCbBbA.YbB.Y.Y.V.Y.W.W.obH#D.h.hbNbM.f.f.f.f.c.e.c.b.b.a.#.##L#W.b..................................", +"..be#h#h#c.7.6bSbibib4bxaRaO.O.I.O.4aTaU....bf#mbcaU#ebebhb4blb0bc#i#c.y..bb#ibfbe#g.5.4bgbj.K#ebjb2blaUbmaP#dbfbf#ma6aVaO.M.x#d.G#d.J.J.1aVaSaObxbsa3aQ#7.Ca5aO.Gbrbqa7a1aN#7.C.O.f#7#7.N.F.CambZbc#b.SaQaO.N.Ib7bAbJbD#zbyb3a1a..N.HbJbA.X.W.W.V.V.VbMbJbDbDbIbJbA.UbK#B#F#F#B#B.Saf#5#3.B#6b5#F#x#w#G#H#D#p#G#HbzaFahaa.QaIar#R#P.p#s#s#r#s#r#s#p.p#t#r#p#s#r#u#G#G#w#s#x#F#p#E#p#w#F#HbKbK#C#vbG.Xayazar#UbBawaMaq#U#UbCbCbB#zbA.Y.V.Y.VbQbC.W.Xaxap.i.hbPbE.h.f.e.e.c.c.c.c.a.a.#.#.#.#....................................", +"aW.8bhbh#c.7bebea8bxbia8aPaO.L.I.GaO......bUbfbhb0aW#e.ybibhb2b2bb#k.4.y#kbd#j#cbb.8.7.4aWaVaP.4bcbcaWbibmaWaP.KbfbibmaVaO.G.Lb7b2aR.M.4b.aTaOa7b3b3a1#8.N.u.O.La7brb4bya1aN.N.C.N.g.f.F.F.PalbwbW#j.7a1.O.N.Hba#A#z#z#Abqbxbxa0#8.C.PbCbJ.W.VbObPbAbNbJbDbDbPbDbK#AbDbKbJbD#BbG.m#FbL#3.B#7a2#6#G#x#GbL#H#w#s#GaFbvbtad#5.Dbz#Z#P#R#r#r#r.p#r#s.p#p#u#u#r#s#p#E#s#p#qazaB#0#p#w#w#wbL#G#qbQbQ#A#w#DayaMaKaq#S#Kaxax#W#J#0bJbB#zbB#z.Z.Y.Y.YbFbE.Xayaxaq#L.hbFbD.f.f.e.e.e.e.c.b.a.b.#.#.#......................................", +".4bfb2bgbgaVaP.4a5a5a5aR.4.O.I.I.1aQ.....#b2bWbjb0aU#b.waZbdbhbcaU#c.z.zaZaU#d#b.z.9.8.z#e#d.1.1aUaUbib0biaT#e.M.Jb4bxaP.4.G.Lb3bxaR.4.x#e.y.Ja3bra3aQ#7.F.Calbra9bxbZbxaR#8.N.C.Na7a1aO.fb2be#g.5boa3a0.E.C.N#y#y#zbB#za1a7aQ#8.N.u.1bNbN#A.UbMbzbzaiaj.BbAbJbAbDbIbQbDbK#A#CbDbK#BbIbGaFaHaD#4.r#x#C#H#H#p#s#HaHbtbtah#4.Q#2#1#O#R#r#E#G#q.p#r#r#GaAayar#S#x#s#p#qaAaLas#Z#K#x#x#C#w#q#s#B#C#F.0#Caxazar#U#K#Mao#W#M#LaM.Y.Z.Y.ZbC.V.Z.W.W#v#vawaAayao#J.i.h.h.h.f.f.e.c.c.c.a.a.#.#.#.#......................................", +".5.zbjbibgaWaP.4aRa5aRaO.O.L.u.1aSaR....bf#o#gbmaU#e.AbUb8aYaUaT#c.K.x.1aWaT#f.w.7.9b8.yb8...M#daVa6bZb0biaT#d.y.JbiaW#d.O.x#dbxbjaP.J.G......a0aQaQ#8.H.v.Na4bxa1a7a7a1#8#8.P.u#8b5a1aO.NbW#j.4.4b3braN#7a0aN.N#y#y#AboaQaN#8.N.C.Nb7.ZbEbJ.U.Ubzbya2#5.D#3bJ.m.SbDbMbGbDbI#B.Rahaj#A#AaFbtad#2.r#F#C.o#x#C#paHaDaDab#5.r.san#O.qaD#E#HaHaL#4.p#q#qaMaGar#Kas#u#t#GaGaHaI#X.t#X#v#w#w#w#w#CbKbQbK#x#War#0#K#NbY.Y#J#JbC#z.Y#ybBbJbC.Y.ZbMbE#v.Xaqaxaq#L#L.h.h.h.h.f.f.e.e.c.a.a.a.#.#.#........................................", +".y.ybib7biaVaP.M.4aOaO.4.L.u.HaSb7....bf#n.7#g#k#e.1.y#o#o.y#i#c.7.z.7b6bb#i.4.y#e#m.M......b4bjaPaWbibgaV#d.1.x.1aVaO.4.x.ua6a5aP.1.uaO......#8#8#8.N.C.Fb3aRa7a7a1aRaN#7.N.v.FbabsaQ.O.I#8#k.AbobsbqaNbqa7a0a8aVaP.Gbnbo.N.N.u.Hb#.N.E.W.V.maEbtbtah#5.D#2bMbC.SbJbD#BbNa0#9bzaJaj#2.YaCad#4.r#4#C#w#D#x#p#FaFajab#5#2.s#6am.qaM#x#q#GaCad#P#H#H#sazar#U#K#u#u#t#qaIar#Y#N.q#w#w#CbL#w#CbQbKbP#BbGbK.t#M#Nas#vbJbG.Y.Y.Y.W.Z.ZbBbA.Y.VbO#A#y.Uat#T#M#LaA.h.h.h.f.f.f.e.e.c.a.a.a.#.#..........................................", +".AbmblblbjaX.4.L.x.4.4.I.u.IaSbZaU..bfbf#n#.be#j.7.K#f#n####.9.7.A#fbdbcaT#e.z.K#e........aWa6aX.4.xaWaXaP#a.w.1aZaO.O.G.IbTa7aO.M.I.Ob#....a5aR.C.N.C.1a4....aRaOaNa.#8.H.C.HbTb#aQ.N.P.I#c.A#fa2a0aNbobybxa8b4a5aO.I.Oag#7.E.Nala..F.E.Y.TbpbyaEaf#5.D.BagbNbAbP#BbKah#5bvaFbubtab#2#2#B#4.r.raC#w#v#x#H#p#xaCac#2#P.s.Dbw#R.qbv#H#G#G#s#Pazar#X#q#W#X#Nae#E#u#t#x#X#Q#O#OaMbL#wbL#F#w.obI#CbI#B#v#v#BbG#D.X.ZbPbI#A.Z.Y#ybB.Z.Y.YbFbBbFbCbDaKavaoavavatao.t.h.h.f.e.e.c.c.a.a.#.#.#..........................................", +".yaVaWaWaP.4.M.w.Jbibg.I.GaSaRaZbg..bgaUaP.4bf#j#c.A##.z##.8bhbcaU.4aU#i#f.1.A#caU..bmaVaObmaP#d.w.1#e#d.4.y.xbTbj.O.L.IaZaV.....L#d....a7a8a5aR#8.u.u.1...#...O.O.I.N.H.C.Hala7a3a0#7.vb#.f.hbhbm#7#7a3a3a3aNa..E.O.I.O#3.C.Ebaal#7.va4bJbnbvbvaj#5.E.B#6aDbCbJbEbtaHahab#2aDaFah#4.r#6#A#x#2#H#q#F#B#p#p#waGaGaBaa#O#4#w#p#w#F#p#p#G#I#paGaHaB#Y.q#p#w#0#DaGaB#R#w#p.t#O#Y#x#C#x#w#v#F#v#C#v#v#p#w.X#DbF#B#y#y#A#A#y.Z#zbG.Z.Y.Y.YbE#zbFbAavawav#VauaMatao#J.h.f.f.e.e.c.c.a.a.a.#.#..........................................", +"aZaYaTaTaP.4.x.wbiblbjaWaT#d.J.J..bjbjaWaP.y.K#j#b.z.L#c..blb2bbaT#c#k.4.K.x.Kb2bgbibmaT#d.G.4.K#fb..x.K.1.1aZaYbZ......................a8b5a7aO.O.uaObs...#...#...I.1.N.N#8bqb4a7aN.N.Cal.hbhb7aW#e.Pbobqa3a0a..E.C.Ia5#y.E#z#y.N.CalbJbD.Vaiag#3#3.salbnbF.l.lbzbtbYaDab#2#2af#5.D.Qb4#D.l.S#G#G#q#v#v#BaHbtbvadak#O#R#w#p#F#H#p#q#G#q#GaGaLar#Y.q.X#E#paGbuaB#Q#Q#p#p#w#C#B#C.X#wbK#F#pawawax#W#J#C#ybJbPbJbC#A.ZbMbF.Z.ZbJbCbB.Y#ybC.W.Waoap#V#Javax#V#T#L.f.f.f.e.e.c.a.a.a.#.#............................................", +"#g.7#e#d.4.A.x.1bhb4b0aWaP.4.G.JaPb2b2aV#e.y#b#g.5.7bbbdbdb0b0bc#i.4.z.z.w#bbca6bhb4bxaP#d.G.M#d.w.5#j....#a#daX......a6aR.O..........bma7a8aR.O.I.Ia4aR...#.....#.#.#.#.a.aa4bqa4#7.F.Cal.fbibmaX.4.Jbob4bra0#7.E.CbT#y#y#z.Z#z.ZbMboa2#7.V#9#7.D.Eb1ag#2bC.l.laDbzaEaD#2.r.D#2.Q.sambG#A#v.l#GaHaHad#R#vaCaHaFac#R.q#1#x#p#F#G#F#E#q#x#paIas#1#O#S#r#q#xaBaB#Y.qan#w.p#p#x.0#v#v.obG#A#DayaMaq#V#J.W.WbIbObDbFbAbJbMbBbNbFbE#zbDbCbAbMbB.X#D#L#Lasapap#T#JaM.f.f.f.e.c.c.c.a.#.#.#.#.#........................................", +"#k.7#c.J.w.x#db#bibjbiaW.4.4.w.MaVbhaW#d.4.x#e.8.A#gba..bbbhbc#k#c.z.zaU.7#i.4blbibia6#e.M.x#d.4.xbW#m.7............bxbxaR.O.Mbkbe#i.5..aRa9a1aQ.Nb#b4aV.L...#.#.#a9aR.O.a.#a0a0a..N.v.Ea0.faTaT.4.xbobwbvbra.#7.C.Cam.W#y.Y#z.ZbJbobvag.E.E.V.B.sa4bYag#3.DbC.laFahad#4.r.safbK#ybGbI#D#BbG#C#vaHaLac#4#PacaBacakaCaB#R#p#E#F#G#w#x#F#w#s#Y#X#O#ObY#p#F#F#w#R#O#1#w#w#C#w#p#p#x#D#p#w#Catayax#W#M#J#A.W#AbCbCbP#zbPbFbMbMbBbJbCbA#zataobA#D.0.n.mbO.k#T#Jas.f.f.e.e.e.c.c.a.a.#.#.........#....................................", +"#c.6#kbdbhbhaWaTaWaWaT#e.1.x.xaP.4aT#k#e.x#fb..7#cbU......aUaT#c.1.yaZaY.4.xbgbxaVaVaP.4.x.1aY.J.xaT#h.5..........bibxbiaO.G#db2bb#k.5a6bra7a1aQ#8.vaO.I.x.#....brb#aR#8.u.##8aN.N.C.Fb1.I.f.f.K.x#fa2a3a2a.#7.F.B.F.W.W#y#y#y.Z#za0ag#7.Ba..V.VbCbpbp#9.D.DbE.laD#5#5#2.r#6aJbQ#BbGbI#A#AbNbKaDaHaD#4.r#4#w#Y#RaGaCaB#Y.q#w#x#H#x#p#x#w#x#p#O#O#Z#p#w#F#E#w#w#F#C#v#w#F#C#w#x#p#G#F#F#w.Yaqaq#T#Kan#v#C#ybJbKbObCbJbMbAbCbJbAbBauauavap#L#D.n.nbNbFbFbObNbA.h.f.f.e.c.c.b.a.#.#...#avao........................................", +".z.6aZaTblb4bmaPaTaP#e#a.w.y#fb8#e#e.4.z#bbV#b#kbb........#c#c.5.z.7bX#d.x.4aWaW#e#e.4.G.ybV#a.x.1#g.7#l............aVaP.M.waVa5a9aRaNa7b3bZaRaN.N.C.4.xbZ......byb3aR.O.C.abq.E.N.Na4.B.g.g.f.f.f.h.ha.a.#7.F.v.Nam.W.W.Y#y.Y#y#y.Z#3.C.N.VbMbC.Uagaf#3.BambA.k#4#4.D.raeaJbJbIbK#B#ybFbDbK#B#Bacak#P.saeadakaGbubuaB#R.raa#x#p#p#w#E#p#w#s#q#x#E#p#w#F#x#x#wbG#w#v#w#C#C#x#w#EbL#x#x#v#x#L#U.t#0#B#v#vbDbJbEbQbFbNbNbA.ZbJbC#zauaKaxao#L#D.k.k.jbE.i.jbCbK.f.g.e.e.c.c.b.#.#....aAavao#J......................................", +".AbTbebgblblaW#e.J.4.K.y.y.1bV.1aWaP.K.J#f.E...................7#f#i.M.x.1bV..aP.4.G.K.JaZ.K.J.Mb..8#l.1.O..........#d.M.uaVbrbia9aR.4brbybxaR#8.I.C.1.IaU.4..a1a8a1.O.P.uaQbobsbr#8.P.Ca0.e.g.f.h.h.h.N#7.F.C.FbT.o.W.Wa2ag#6.Y.Y.Y.Y.Z.WbMbMbA.V.S#3.QambE.Ra8aR.r.DabbDbJbD#AbC#BbIbGbG#B#BbG#P#P.saeaLaD#4aGaHaC#1#P.qac#w#p#x#pbL#F#D#G#E#x#C#F.o#w#G#C#x#w#v#v#p#p#w#Eazar#X#w#BbG#FbNbDbB#A.XbGbPbN#AbCbMbFbFbFbJbGbEbB.Yavavap#T#Jao.k.n.k.ibObF.h.f.f.g.e.c.e.b.a.#.#.#auawax#V#J......................................", +"#fbeaW#ebmaU#e#b.w.K.M.J#daS.1b1bh#e.y.Jbf.........................M.wbV......aXaX#d.w.1aZ#d#b....aV.O.Ga5..............aR..a8b4a6aO.Oa9a7aR#8.1.C.IaR.I.O.zaU..aRaO.O.uba.#a1a0a..N.v.Fa1.c.g.f.f.h.h.i.C.E.Fal.o.mbqbtbpag#3.B.Ybnaiag.E.YbCbF.T.UbJ.SbFbAbMb4a5.O#d.jbMbJ.jbEbObNbK#vbG#yaHaCaa#P.laHaLaD#RaBacaa#R.q#1#O#q#C#p#pbL#F#C#q#DaAar#Q#C#w#CbG#w#p#w#x#x#xbHazaGar#0aGazar#X#NbI#w.X.XbDbM#BbG.Y.Z.Z.Y.ZbCbFbAbB.Waoao#V#Jas.o.k.k.h.hbNbC.h.f.f.d.e.c.b.b.a.#.#.#apapao#JaC......................................", +"bgaWaP.4aT#e#a.x.1bSbh.5.w.yaZbm#e.4.x.1..........................bdbb#j.........M.G.wbaaX.GaV..b0a6.4.I..................a5brb#a8.4.Ha1aQaN#8.H.ubaa4aR.O#k.#.#.P.N.ual.#.a#8#8.N.C.Eb5aR#8.P.g.f.f.h.h.i.k.k.n.m.obnbpa8a7aRaObpbvbnaf.E.E.V.T.VbMbCbA.lbMa5a8aO.CaO.jbMaFajbFbPbDbCa7a1aGb3aC#Y.rbGadad#4.q#2#1#O.q#OaM#Y#xbI#C#C#x#x.X#CaGaLar#Q#K#0#x#v#w#w#DazaIar#QaKaMarazaHaKar#X#K#A#v.XbG#BbFbDbD#A#D.V.Z.YbB.ZbA#z#A#y#J#Laq#D.n.p.k.h.h.h.f.f.f.gbObM.b.b.b.#.#.#....#T#J#T........................................", +"#caP.4.y.z#b.w.waSaW#a.w#e.ybdbb#i.x#aaYa6aV#e........bqa0.NbiaVbfbkbd#i.5..........blbf#h.A....bxa6.L.L......a8a5.O........a5aRaN.O.u.x#8.O.H.P.FbZa5aR.4.u.#...#.#.#...#.a.#.E.N.Na4a0#7.P.F.e.g.f.f.h.h.k.k.ia5aRaNa2bibZa1aObobrbo#9.D.C.T.Vaia#bA.S.lbCbCaO.I.FbC.jbzb3af.DbCbDbOb4a1aCaFaFah#5ae#Aak.r#2bK#C#R#R#P#PaCaGazar#OaCac#G#pazar#X#K#Y#0#K#A#H#paGaLaGar#R.qaI#0ayaGaKar#Q#K#0#DbCbD#y#A#AbPbC.Z.YbA.V.Z#zbCbA.YbMbFbJbBbObE.k.h.h.h.h.f.f.f.gbFbC.b.dbPbM.#.#.#................................................", +"#c.y.y.yaSaY#daTaP#e.y.waXbkbdbia6aVaP.Lb2aW#d.w....a9b3a1bib7aSbkb2aU#k.z#f........b2bc#i.5....aQ.4.xb8....bib2aR.O.Ga8a6aRaQaO.O.I.ubaa4.H.uala5b4a5aO.Oa9aQ#8...#.#.#.#.#.#.O.Obqbsa0#7.C.N.e.c.g.f.h.h.h.ibra7a1.O.HbxbsaQ.Oaiag#9#3.B#6bzbzaE#5.B.S.l.l.l.j.1bCbBbKaDah#2.DbC#za9a9aOaFaHaFad#5#2#2.X#v#B#CaGac#O#PaC#xaLaLar#OaJak.q#p#X#X#N#Qaq#K#M#C#C#waGbtaC#Z#O#O#0#Uazazar#X#S#K#B#vbPbJ#AbD.YbCbB.Y.YbMbE.Y.ZbA.ZbObPbFbFbObObB.k.p.h.h.h.f.f.f.f.e.b.a.abMbM.#.#...#..............................................", +".8.A#i#daW#d.y.waX.1.x.1.Kb2bibia6aV.4.O.xaX#d.xaP..a8a6aXaP.L#ebdbd#g#c.zaY........bkbd#j#c.z.....Ja9aRaO..a6a6.4.Gbibxa5aR.L.H.C.Halbs.uba..a6a8a8a6brbqa9aRaN.N.C.#...#.#.#.abobsbsaN.N.B#8.eboag.N.h.f.ha7b0bZaR.N.P.OaQ#8.I#9#9#6.B#6bsbzbvaia0#9#5boboa2a..BbAbBbFah#5.sa4bF.ibF.4.4aHbvbvad#4.r#2#D#AbHaLaLac#O#B#BaIaGar#X.tas#P#PbH.X#E#X#M#N#1#G#x#p.XaIaC#Z#Q.q#Q#Q.t#0#0#X#N#NaMbObMawavat#V#D#A.Y.Y.ZbFbB.V.Y.Y.W#ybMbFbCbEbFbM.k.i.kbM.f.f.f.e.e.c.c.b.b.b.#.#....................................................", +".z.5aUaT#e.4.A#d.4.L.1b1bda6bxb4a8aP#d.L.x#d.J.L..bibia6aVaO.L.xaU#c#b.AbR.#......bkb4bk#i#b.7..a8a8a5aR#8.HaRaO.1.IbibxaVaO.x.1.zaO..........aVaVaRaObrb4a9aQ#8.H.u.#.#.#.#.#.a..a2a0#7.E.Cala3boa2#7.B.f.fa9a8a5#8.N.CaO.4.IaEah#9.B#9a2bEaiboboa3ag.Ebqbya2#9.Ea#.jaHaFaD#5.DbF#z#ybN.OaFaFaE#5#4.s#2bGbDaGaHaH#Y#P#R#D.X#Z#Q.t#1#P#Pbvazar#QazaGaB#X#x#w#w#D#Z#Z#Q#O#Pb6#L#Q#C.t#Q#QaCbDbQbMauaMap#TaxaxaqbMbFbAbA.V.Y.Y#y#v#ybFbB.n.k.nbObMbNbM#B.f.f.g.d.d.a.b.a.#.#......................................................", +".A#caZ#k.4.KbmaWaP.4aZ.Jbcbmbibib#aP.4.I.x#e.wb1bkbjb4a6aRaO.G.xbb#e.zaT..........bdbdaU#c.z.7.Ia8b4a5aR#8.H.H.L.xaVaVaVaO.O.uaS.A#i............aOaOa9bybxa7aO.O.H.HaNa1#8.#.#.#..a.#7.F.CbT.cbobya0#7.C.h.haRaRaO.1.u.Ca1.Nbpbpaia#.D.T.VbAa#bqb4a2a.bobsbvai#7.E.Ebzbybpah#4.DaCad#PbQbDahahab#4.r.QanbK#A.YaBaa#P.qaD#B#v#v#Q#Z#x#F#waGbYar#QaGbuaB#X.q#wbKbGax#Q#O#O#1.tbY#y#D#v#vawat#TbQbMavax#VawaAawaq#TbCbBbA#z.Y#y#y#v.X#D.n.n.k.hbMbCbFbC.h.f.e.dbObF.b.a.#.#.#......................................................", +"#ebX#d.G.4bhbgaWaT.4.y.y#kaVa6aVaP.4.1.u.LaV#g#bbibxbxbiaP.1.G.G#d#c.7#k..........aUaU#k.5.KaYa5bxbxa8aO.O.P.N......aOaO.O.x.1bV#cb2...............La3a7a7aR#7.N.C.IaRa1#8.H.#.#bqby.P.Ca4#7.Ca2a0#7.F.N.g.i.haO.N.H.Fb3.Caibybyaia#.B#5bC.T.Tbobra2#7.Ca2a0#7.E.Ba.bzbtbtab#2.r#2aa#PbJbJ#Aaa#4.r.DamaJ#A#ybBak#P#Oam#B#BbG#BbI#v#BbQbKasaI#XaIaGaH#Z#O.qbDbKaMax#W#J#B#Laq#B#AbNbDauaKat#TbMbCao#W#LawaKaA#V#L#U#z.Z#z#y#y#y#vbG#DbNbC.h.i.hbJ.h.f.h.f.ebNbMbB.b.a.#.#.#.#....................................................", +"#e.y.K.xbibxbjaWaT#d.y.yaS.4aPaPaO.M.x.1aSaV#k.AaVa8a6aP.4.L.u.NaV.7.z#j........bWb0#b.z.zaZ.4bia7a5aQ.O.I.ual....a5aR.O.IaOb##fbebhbc#i.y.........4aQa1aQaN.N.C.Iala9al.Hal.#.#a0bob3bsa..E.C#7#7.E.Eb4.f.f.h.h.N.NaQ.C.Caibpaia#.D.BafbAbA.Ta2a0a..E.Ba.#9.E.B#6a2aDaEae#4.r.Qafak.qaB#P#B.Q#2.Qafah#z#A#A.YbF#zaAaIar#N#x#ybQbK#wbK#B#Q#Y#O#RaB#Z#R.q#ObGawazaz#T#J#y#A.ZbD#AbK#Bavaxao#L#V.Y#A#L#Maxaxaq#U#Kasauat#T.Z#y#v.X#D.mbMbD.kauao.h.h.f.f.e.g.dbJ.b.a.a.#.#...#....................................................", +"#a.y#d.4bxb4b0aWaP.4.w.yaX...4.4.M.1.wbTa6#i.7.AaXaRaPaO.O.x.1aPaV.A#f..........blbca6a5aO.I.IaVaQaOal.N.ualbaa8a8a5aRaN.Ia9aRaNbhb7bc#i.z..........a8#8#8.N.H.CalbZ.N.C#7boa0.N.#a3a3aN#7.C.F.g.c.N.c.e.g.g.j.f.h.h.i.k.k.kag#9#3.s#9.SbC.S.S#7a#.N.Ea#a3#3.BalbaaCabab#5.D.salaF.raHaCaa.r.ZbBbJ#BbD#AbG#AbG#ybBaHaH#Z#S#wbDbKbDbKazaGar#Y#X.X#R#Q.q#O#A#A#Waq#U.taMbJbA.WbB#ybD#Bapao#T#L.V.YbFbD#A#W#W#U#J#0awaAat#V#L#v.X#E#D.k.n.kavayap#L.f.f.f.e.e.c.b.a.a.#.#.....#....................................................", +".K.w#abmbhbjbiaT#c.1.w.4aXaT#b.y.L.LaTaZ#j#c.A.8bc.4aO.M.L.xbab#.A#cbX..........#ja8b4aVaO.x.Ib#.O.O.I.F.Ib1..bib5a5aR.O.G.LaR.4.Cbhbc#b.yaU........a5aR.H.C.CalbY.#.#..bhaW#e.xa.a.a.#7.E.Ca0ag#9.d.c.e.g.f.f.h.h.h.h.k.i.k.E#3.s.Nam.o.S.SaFaE.C.Eala4bzaEaf#5btad#4#2#2.s#5aD#PaHbvaD#4.raBbG.ZbObM#A#B#A#ybGaraG#Z#Q.t#ZbKbI#B.WaGaGaI#Z#ObCaq#0#R#XbObP#A#L#JasbQbFbNbC#D#ybPbD.0#z#Laq#T.Y.Zazaq#W.V#L#0bAaxayap#T#L.X.X#D.n.n.k.haxawao#J#V.h.f.e.e.c.b.a.#.#.#...#......................................................", +".w.yaVaVbmaWaV#d.7.y.w#baTaU#c.x#k#b.A.7.4.5.7bWbb.4.G.G.Gbab#..#c....a8a5aP.I....a8bxaR.1.uaPaOaO.O.N.OaO..a8bxbZa5aO.L.I.LaR.4.uaO#f.y#fa7a1aQ.F...4aO.G.G.1b1...#..bib4aW.4.wa0.#.N.C.Cbpboa2#9.E.c.e.g.f.h.h.f.h.h.i.k.k.k.n.m.m.m.m.U.TbuaFab.D.Sbpbvbnaga#.D#4.r.Da3#8.EbBbCaDaCab#2.qadbMbObMbF#ybIbGbNaC#Z#Z#X.q#QbPbQ#AbKaGbuaLaI#X#O#QbQ#M#YbJbMbFbCaGaAao#JbBbCbC#D#CbF#A#zawawax#W#Mayayaz#0#M.VbBbEavap#V#Jao.X#E#D.k.n.k.katap#T#L.h.f.e.e.c.c.a.a.#.#.#..............av#V........................................", +".wbSbmbcaTaT#e.4.1.x#daZbc#i#b.A#i.7#i..bc#cbdbb#iaV#e..............bib4a5aO.IaO..a5aR#8.u.Ha5aN.Ia8a9aQ.O..a5a8aVaR.O.I.uaRaNa7a1aN.N#ba7b4a1aN.I..a7.I.L.1b...bqa3a0bgbga3a0#7aT.#.#.a.#bpb4ai#9.E.E.d.g.g.f.f.f.i.h.h.k.k.k.k.n.n.m.m.SaEaJah#6.DaEbrbvbnaf#3.B#6.rb5a4.N.NbBbBaFaDaj#2bwbAbNbObCbFbBbBbQaGbY#Z#O#S#YbC#A#BbK#CazaGaI#X#O.t#ZbDbBbPbObOayar#Uaq#T#J#WbJ#DbG#B#v#z.YawaAaq#T#MawaKazaq#K#VbFbA#V#V#L#M#v.o#D.k.k.p.h.i#T#L#LaK.f.e.e.e.c.c.b.a.#.#...#..........auauap#L......................................", +"#fbmbWbb#d#e.4.y.J.ybTbjaY#e.z.x#i.4.z.4.5a6a5aP.4aWaP.L.4..........a6a8a5.O.uaRa9aO.O.I.Ib1a5aRa8bxa7aR.O.uaRaRaOaO.G.xalaVbra8a9aN.4.Cbqa8a9.O.uaObxaQ.P.N....braWaX.4bobsa2a..E.#.#.#.aboboa2#7.B#6a#.e.e.g.f.f.h.g.f.h.i.i.k.k.n.m.m.S.mab#4.D#6aibnaEaf#3.D.BafaaaN.N.Ca3bMaHaFaEaj#2.Q.ZbPbJbMbBbB#z#AaBaB#O#PbEbJbA.Y.Z.U.T#Z#Z#Z#X.t#1aB.U.XbQbPaybuar#U#K#JaMbB#A.W.Z#DbB.ZbBaxaq#W#J#Waxay#W#U#Jaq.YbC.W#v#V.X.obH.2.k.h.h.h.h.h.h.f.f.f.e.e.e.e.b.a.a.#.#.......#......aAaAao#L.#....................................", +"..bWb0bb#c.J.K.w.1aZbgaU#e.4.A.K.z.z.Ka8bia8a5aRaN.G.4.G.1..........aRaR.4.u.1aVa9.4.u.OaRa8bsa1bxb3a4a7a0aN.N.4.4.P.1.Jb5a7b3b5a9aN.4.PaNa0a3a3a0aN.N#8.C#8boa0bibiaVa3a0#8a0#7.C#7.#.#.aaga.#7.B.Ba2ag.g.e.g.g.h.f.i.h.h.i.i.k.k.k.l.m.m.m#2.r#6.S.Rahafa#.D.s#7ahab.raDab.SbFbpb3aJab#3.QbFbFbAbPbAbCbB.ZbM#R.raIbPbCbA.Y.0.U.U.S#Q#O#O#1aM#K.U.XbKbDayaA#W#N#NaqaMbD.Z.W.0.YbB.ZbB#z#V#L#Lapar#W#U#J#N.Z.Y.W.W#v.X.o.obNbJ.k.h.h.h.h.h.h.f.f.f.e.c.c.c.a.a.#.#.#..............atap#T#L......................................", +"..bdaY#g#c.Abdb2aTaU#i#e#b.yaZ#e.K.z#ca8b5bZa5aP.O.G.L.xaO.............O.I.IbxbcaT.4.C....bsbxaRa8bra8a8a1aN.H.C.G.GaOaR.Na9bra7aNaNa3boa1aN#7.Ca0aN.N.v.I#8.Cagb0b4bqboa2a..E.P.Ba4.#.#.#.E#3.B.EbTam.b.d.d.g.g.g.h.h.h.h.h.i.k.k.k.k.n.l.m.l.R.S.R.l#3#3.E.E.DbwaDabaFaFad#2ahbzbpaD#5.Q.QbB.Z.TbFbBbC.Z#zbMbObMbAbFbB.0.0.Y.TaGayar#S#1#U#Kan.V.Z.W.Yar#0#M#KbYbB#yauat#TbE#zbGbA.W.ZbBatap#V.t#U.t#XaAbNbMbM.W#v.o.o.lbObF.j.h.h.h.hauauatao.e.e.c.c.a.a.a.#...#...#.#........#V#T#Tas......................................", +"aO#j#i#c.z#cbcbkbb#c.4.4b2bWaT#e.y#bb8bxbxbZa5aO.L.H.O.4aV..........bhaWaT.7bhbgaW#e.y..bda5aQ#8aRbrb4bsaR#8.N.Nb2#8#8.N.CaRa1aQaNbobrbqa1aQ#7.E.PaN.N.C.N#7.C.Ebia3b3byag#7.C.Eba...#.#.#.#.a#7.e.a.b.b.c.dbnaiaf.B.f.g.haiaj.i.j.k.kaFah#4.l.l.R.R.R.R.R.D#6ag.R#4aFb3bpad#2.sahahae#2.s#2#z.Z.Z.SbCbF.Z.Z.ZbMbBbJ#zbB.Z.V.W.SaGaL#Z#Oar#Mar.V#D#z#A.Y.Y#M#SaB.W#zauaKap#TaobAbCbB.Y.V.Z#L#T#L#0avapbNbObObFbCbE.U.o.nbHbDbD.i.h.h.h.fauaKat#V#J.c.c.b.a.b.#.#.#....................................................ap........", +"bb.4#b.A#fbV#gaU#i#c.ybca5aRaO.4.w#b#ca6a6aRaO.1.G.IaSbVaZ........bkb4bbaP.4b0b0aU#e.J#bb0.O.O.Ha1aN.NbsaQ.O.F.CaNaT#b.NalbcaO#8.Na7b4b3a1aN#7.F.C#7.F.C.NaR.F#9aRa3boa3ag#7.C.E.#.#.#.....#.a.a.#.a.b.c.dbzb5a2#9.B.fbzbzaEaf.D.iaFaHaFad#4.s.l.m.l.l.l.S.R.R.R.R.RaDaFaD#4#2.Q#5#4#2.D#2am.Z.T.T.tbF#zbMbF#N.Z.T.VbGbB.Y.0.Y.Tazar#Q#ObFbF#z#z.Z.Z.Y.YbB#DbBbBbLbBavat#V#J#y.WbBbCbGbC.V.T#zbPauaAat#V#JbMbGbF.WbQbF.l#D.h.h.h.h.h.h.favav#V#T#L.c.b.a.#.#...#.#..................................................auavatao#J..", +"bb#k.z....#fa3#e.4.z.5a8a8aVaO.N.IaZaQaVaRaP.O.1.u.Ib.aZ..........bkblaW#ebgblbk#i.1.A#faU#cbra7a9aQ#8.C.O.I.C.1aR#b.AbVbV.....P.Cbqbxbra1#8.N.C.P.N.C.Cal.C#7..a0a0amaN#7.E.Ca4.#.#.#.#.#...#.#.#.a.b.b.bbnbnaf#3.B.gbzbybn#5.D#3aFbYbtab#4.r.m.l.l.l.R.R.R.R.R.S.Radadab#4.s#2.R.R.D#6.Z.T.Z.S.RbObNbObMbBbF#z.T.TaIac.T.W.0.T#O#Q#OaMbBbB.Y.V.V.V.V.Z.VbA#z.YbQbMbM#V#LaqbB#y#zbMbMbF.Z.T.TbFavaKat#V#LbMbB.o.XbMbFbH#E.h.h.f.h.f.f.fapao#T#LbY.b.b.a.#.#.#...#.#................................................auaKat#V#L..", +"aU#k.5#e....a.#7.5.zbibxa8aRaO.O.u#8.H.NaO#8.I.L.IbZ.#............bcaU#e.1.waW#i#b.x.zaW#k.5bsb0a1aQ.O.H.H.u.Nal.H.4aZ........a0aNa3a3a0#8.N.C.C#7.C.C.Pa0.Balbqa2#9#7#7.F.Bbwa3.......#...#.#.#.#.#.a.a.baiaf#3.B#7.gaiai#9#3.s#9aDaJad#4.D.Qae.l.l.l.l.l.R.R.R.l.R.l#4#2#2.DaF.R.R.R.Z.R.R.R.R.RbFbFbObFbC.T.Z.ZaAaGar#O.TbBaGaM#Z#O.V.V.Z#z.V.V.Z.T.TbB#z.Y.VbMbC.VbC#zbBbB#zbBbMbBbFbC.VbC.Vavax#V#L#WbBbM.U.mbM.l#E.h.h.f.h.f.g.f.g.d#T#Jaq.b.b.a.a.#.#.#.....#................................................auavao#T#L..", +".4.4.waU.......E.Na2brb0bxaR.4.I.xaO.#bhbc.L.ualb.al..............#e#e#b.A#b#d.4.1.za4a7a1brbZbZa1aO.O.P.H.Nbab#.Ca0.Dai..bqa7a1aNa0aN#8#8.P.v.1a4.C.Nb1.C.Fa0b3a2#7.B.E.Bama0...........#......a6aP.#bzbnbnaf#3.B.H.da#af#6.B#3aEadajab#2.s#6.n.l.l.l.m.l.m.m.R.R.Ra7b4aQ#5.S.R.R.R.R.R.R.RbMbM#zbB.VbFbCbB.Z#zazaLaH#Y#O#QbBaIar#Q#ObB.V.V.T.Y.Z.Y.VbBbG.Zat#W.TbG#z.ZbFbMbJ#z.Z.ZbF.Uaq#L#zavawawaq#W#KbCbPbBbObMbBbPbB.f.f.f.f.f.e.e.e.c.c.c.b.b.a.#.#.#.#.#.....#..............................................apao#T#JaM..", +".8.A#faW....ayar#N..a8a8a1#8.O.u.GaR..aT#eaP.O.u.NbZ.................5.z#fbj.#.4.K#ibxbia1a9a7a9aQ#8.N.u.OaQa4.Nba.Dam..bqbybsa3aN.O#8#7.P.P.FbT.v.1ba.F.EbZa3a0a..F.F.......................#aEa2#3.4bzb5aiaj#6.BaS.g.g.D.Dala4.i.i#5#2.D.rbw.l.l.n.l.l.l.S.R.RbM#za3a0.N.C.R.R.R.S.S.RbFbBbMbFbBbFbFbF.RbB.TbBaIaGar#R.tac.T#Y#Q#QbubA.V.VbC.Z.VbBbBbBbGawazaq#M#z.T.VbBbMbB.T.T.TbFayay#WaxavaAaMax#W#JbAbFbFbFbC#EbMbM.f.f.g.f.e.e.e.e.c.c.b.b.a.a.#.#.#.#.#.#....................................................#T#Lax....", +".z.zbV......aK#0#Kara1aRaO.O.I.IalaR.....4.5.N.1b...........a7aQ.N..#b.4.KbT......brb3b3a1a1aQaQ#8.1.u.CaSaTa3a1aQ.N..bqbob3b3a1aN.N.P.P.C.Na4a1al...N.Eal....#9.E.CbZ...........#.....#.#.#btbvah#5a2bpbtai#5.D.B#9.g.d.d.g.g.f.h.h.h#2#4ae.k.k.l.l.l.l.l.l.l.RbFbB.S.N.Ca5.R.R.R.l.l.lbFbBbJbB#zbMbMbM#zbFbB.S#z#Z#Q.q#1ayazar#N.VbCbF.T.VbB.YbCbC.Z.ZayaKaz#V#L.VbMbFbB.ZbC.T.T.TayaAaxavawaqayay#W#M#J.mbCbI.jbPbEavavap.g.e.g.e.e.e.c.b.b.a.a.#.#.#...#.#.#................................................................", +"#fb1....a5aOar#M#X..#8aN#8.I.u.1b1..............bhaW#e.4..brbsa0.N.C....a9a5aRaO..a9a8a7#8.O#8.1.N.H.Cbaa4bqa7a1aQ.N.vbra3bra4a3#8.C.C#7.........................Ea............#...........#bpbtaf.D.Damafa##6.Q.E.c.d.c.d.d.g.f.dbzaEaj#3.D.i.k.k.k.l.lbna2a#.CbF.R.l.R.l.R.R.l.R.R.RbFbFbC.RbC.RaGaB#RbFbFbAbC.S.S#Oaa.WaAaLar#Oar.VbBbJ.Z.V.V.V.ZbJbBaxazaq#U#JapbMbBbE.S.T.T.T.Uaxatao#Jap#Vaqaq#U.tan.n.k.k.hbMbCaxayap#TbMbA.c.c.c.b.b.b.a.#.a.#...#......................................................................", +".L.Ia8a8a5aO.N.I.#...L.N.N.v.1aV..............bhbibmaT.4.xbxbxaN.H.H..a8bia7a1#8.Ha1aQaQ.1.H.u.F.C.LaRa9.vbxb5a1aN.N.va3a0a0aN#8.N.C.CaS.......................................#.#....ab....aiaf#6.D.E#9#5#3.D.Db4.b.b.da7a1.4.gbzbpaEaf#3.Q.i.j.k.l.kbvb3aga#.B.l.m.R.R.R.R.l.R.R.RaDaabBbC.l.SaGbvaB#R#Q.R#z.R.S.S.SbBbAasar#M.t#B.ZbNbMbC.VbE.TbAbF#zaq#W#U#J#0bCbA.U.S.S.T.T.U.U.U#T#J#U.X#L#M#L#J#U.n.k.h.ibH.0auawaAao#L#TbJ.e.c.c.b.b.a.a.a.#.#.#.#......................................................................", +".I.Na8b4aRaO.G.I..bgbmaT.4.J#e..........a6a6aVaP.LaWaP.4.xa9aQ.4a8a1aR.Nb4bxaR.O.H.OaN.N.P.Calb#bsa7#8.Na7bsb#a1#7.F.CaQ#8aN#8.N.C.FbTbs............................................ai#9.D..#9#3.D.Bbs.##3.B.Bam.b.b.c.ab5a5.OaEbvbvaEaj#3.D#5.h.i.j.kbobo#9.E.B.l.l.l.l.l.R.l.RaHaHaFad#2#PbE.RaGaC#Z#O#Y.R.S.S.S.S.S.T.S#X#Q#SaJ.ZbFbFbCbBbFbH#z.Z.V.T.W.Z#KarbAbB.Z.T.U.T.U.U.V.U.W.U.X.o.U.U.m.m.n.nbM.j.i.ibH.fatatao#T#Jaq.e.c.b.b.b.b.a.#.a.#.......#....................................................................", +"bhaU#e.zaQ.O.u.1bjbVbmaT#d.x.y.z......bibibiaVaP.4.x#d.J.waP#8a8a8a1aQ.O.ua1al.I.uaObh.I.vaQa5a1a0#8.N.v.Na1aQ#8.N.v.Hbi.N.N.P.B.Cala4............................................bzbnaf.Eah...##6.....#.#.#.a.a.a.b.b.caRaO.HaEbpbnah#3.D.Bafaf#9.h.iaga.#3.B.E.l.l.l.l.l.R.R.RaFb3aFab#2.rbC.ZaB#Z#RaCaBaa.R.T.R.S.R.T.R.T.T.R.T.TbJbBbB.S#zbBbB.Z.S.SbGbBbF.TbM.Z.U.U.U.V.U.U.V.U.X.U.o.mbMbObE.n.nbObObB.hb9#E.g.d#V#T#Jas.e.b.e.b.b.b.a.#.#.#.#.#.#..............................................auap......................", +"blaW#i.z.K.I.1bgb0b0aW#e.1.w#e.yaR.Obobib7bxa6a6aRaO.M.w.JaVa8b3bZa1aO.O.C.O.N.u.HaVbgaWaP.M.x#a#8.N.P.Hb#aN#8.N.v.1b4b3bZaR.4.N#8..............................................bzbvbv#9.B.D.#.....#...#.#.#.#.#.a.a.b.b.N.u.1ahahaf#5#2.s.Dahaiaj#3.0.R.E.B#3a2.n.l.l.l.l.l.l.laHbtaJ#4.Q.QbB.S.R#OaHaGaDac#P.R.R.S.S.S.T.R.T.TbPbBbE.Z.S.S.Y.Y.T.T.S.SbAbPbFbObMbB.V.U.U.U.X.U.o.U.o.U.m.mbEbObC.n.kbJbFbM.hbH.g.g.d.c.e.c.e.c.b.b.b.a.b.a.#.#.#.#.#..............................................auaxat#T....................", +"b2aT#c.y.K.Hb#aWbib.aX#d.w.yaT.xaR.O.ubibxbia8a6aVaO.L.xb1.Na8bxa5aRaN.O.C.O.H.Ib1.waXaP.4.w.1b8bs.N#8a0aWa0.N.u.1baa8a6a5aO.I.GaRa0#8............................................aiaf#3.Bam.....#...#...#.#.#.#.b.a.a.b.baCad#4#5#5#2.D.Db1b3aD#9#2.s#3.i.i.k.k.k.k.jbPbF.l.l.RaDahab#2.r#2.R.S.R.RaHb3aDaa#P.r.R.S.S.S.S.S.S.RbFbF.SbF.S.S.S.T.T.S.S.T.TbFbObMbF.V.U.U.U.o.m.o.o.m.o.m.m.n.m.n.l.k.k.h.h.ib9#E.g.e.c.c.c.e.c.b.e.b.b.a.a.#.#.#.....#............................................avaxaAao#L#T..................", +"aW#d.7.x#b......aTaT.4.1.wbTaW.w#e.HaNa5a6bxb4a6aR.4.G.Ial.Na9a8a7aRaQ#8.I.C.O.H.4.waX.4.xa7a1aQ#8bobmbiaW.N.N.EaVaPbib4aVaO.I.Ob3a2#8.E................................a3a0a..P..a#.D.Da4.......#...#...#.#.#.#.#.#.a.aaHbtadaa.r.D.D#6ambvbtai#6.D.saf.E.i.i.i.i.k.kbMbB.R.n.lab#5#2.r#2b5.S.l.R.maHaHaDak.r#PbC.S.S.S.m.S.S.S.T.S.U.U.S.U.U.U.S.U.U.U.VbMbPbF.X.UbM.S.m.o.m.m.o.m.m.m.n.n.k.k.k.k.k.h.f.hbH.d.e.eavao.c.b.b.b.b.b.a.a.#.#.#.#....................................................atap#V#L.#..................", +".G.4.w#daY......#d.4.5.K#aaY.A.Jbra7aRaPbmbibxbiaP.4.x.IaV.Ia8bxbxa5aQaO.P.C.O.H.O.waTa7bra7a1aQ.O.ubhb4aW#da8a8a6a8bxbxaR.O.x.Ob3a0#8.Ea.............................bqboa0a..E.C...#......aCad.q.#.#...#.#.#.a.#.#.aaFbubvah#4.D#4.d.c.daEai#5#3.Q.D.Ea#.g.j.j.i.j.i.j.k.k.l.l.l#2.r#5am.R.S.l.S.ladac#4#P.sab.m.U.m.m.U.U.U.U.S.U.S.U.U.m.U.U.TbMbM.Z.U.UbFbB.mbMbPbB.n.m.m.m.n.l.l.n.k.n.k.k.h.h.h.h.fb9.2.e.eavayao#L.b.b.b.b.a.a.a.#.#.#.#.......#............................................#V#T#Tas....................", +".J.J.5bV........bjb0.5#eaZ.A.4b1b4a7aWa7aVa6aVaP.4.G.x.1a6.Pa8b4bZaRaO.O.H.uaQ.H.ObV..brb4bxa1aQ.O.I.HaVaP.Jbib4biaPa5aRal.G.Hbaa0#8.F.Ea...........................bqb5bZa0#8.E.C.......#..aHaa.s.#...#.#.#.#.#.#.a.#aDaFaE#5#P.D#4.b.c.caf#5#3.D.DbY.C#E.0.g.i.i.f.i.j.i.k.k.k.l.n.l.m.m.laCacak.m#Pak#P#Pam#N.S.m.U.S.U.m.m.m.m.o.m.U.o.m.S.RbM.ZbBbF.m.m.m.m.n.nbFbCbE.n.n.n.jbPbE.j.n.h.i.h.h.h.f.f.gbR.g.c.cavat#V#L.c.b.b.b.a.#.a.#.#.#.#.....#..........................................................................", +".w.JaV........bgb0b0aW#e.Ja7a1aQ.Nbgbma8a8aRaP.4.L.u.1ba.Ma9a8a8bsaR#8.N.H.HaO.ual....brbybya1aN.N.P.H.x.1.wa6a6aP.4aOaO.L.u#dala..N.v.1a0..............bzai#9......a3brbqa.#7.B.F..........aa#PbY.#...#.#...#.#.#.#.#adadaa#2.r#5an.a.2.2.D#2.Q.Dam.g.g.0.0.0.0.d.daB#Y.i.i.i.k.k.k.k.n.laHaHadak.qaGar#4#Q.qb5.m.m.m.m.m.m.m.max#W.m.m.n.l.m.lbFbB.l.l.mbMbM.k.k.k.jbMbA.n.n.k.kbMbB.k.i.ibNbN#A.h.f.g.g.2.c.c.cap#V#JbY.c.b.a.a.#.#.#.#.#....................................................................................", +".x.1......a9a1aWbiaWaP.4bra7a1aN.O.uaWaVa5.4.4.J.1.IbTaP.L.Ja9a5aRaO.O.H.u.NaQ.Ha1....a9a7a9aQ#8.H.Cal.xaVaPaRaRaO.G.1.L.IaV.....E.v.Cb#................b5ai#6.B....a0a0a.#7.E.val........a1#8.....#.#.#...#.#.#aHaD#4.s#4#2.s#2bs.3bHbHbR.d.b#4.d.b.d.d.d.g.0.2aGaGaIac#O#5.i.i.i.j.jaGaHb3btac#4.raI#Z#Q.taC.m.m.m.n.m.l.n.maAaxao#J.n.n.l.k.k.n.k.k.k.kbMbCbC.k.i.k.kbD.k.i.i.k.i.ibMauapbEbFbJ.f.g.gbSb9.c.b.b.b#V.b.b.b.a.a.b.#.#.#.#.#....................................................................................", +".JaS....brbra1#8aT#i#da7b3bZa1aO.N.u#8aOaQaO.G.L.1aSb1aVaR.GaQaQaN#8.H.u.1aQ.HbT.C.C..aRaRaQaO.P.v.Ha4.1.......L.w.xb#............................a7a9aQ.Na2#3.B......a.#7.E.B#7a3......a8a9aN.C.....#...#...#aFbvaDak.r.abp#6ag.Eb9.c.b.b.b.b.d.d.d.b.d.c.d.d.daGbvaI#Z#P#O#2#4.iaFadaaaHaHaFaa#2.rab#Q.taM.n.n.n.k.l.k.n.kaxayax#U#J.n.k.k.k.k.k.h.j.i.i.ibF.iavao.i.h.i.h.i.i.i.hbNaxayap#T.f.f.f.e.b#f.b.b.b.b.b.b.b.a.a.a.#.#.#.#.#.#.#.#.#................................................................................", +"b#bgaX.4bxb3a1.N.1#b.wa7bxbsaR.O.P.C#8.J.O.N.I.uaObZa8a5aO.I.N#8.1.H.I.Ib#a4a5#8.C.N..#8.4#8.N.C.HbTa4b.........................................a8bxa9a1aQ#8.vbabzaEaha#.N.Bala4......a7bxb#.O.C.......#.......#aCaa.r#2bpbybnaf.E.B.a.b.#.b.b.d.d.d.c.b.c.b.d.daGaHaC#Y.q#O.D#2aHaHaBaaadadaa#4aCaIac#R#K#Nawav#V.k.k.k.k.k.laq#V.tan.k.k.k.k.k.k.h.i.i.i.h.hauavap#T.f.h.h.f.i.h.hauaAaAao#L#TbC.d.cb9bR.b.b.b.b.b.a.b.a.a.#.a.#.#...#.#.#....auat#L..........................................................................", +"aVbgaVaP.J.waO.N.Ca1.4a1a1aQ#8.N.u.Ha1a6aVaO.LaObib4bZaX.4.L.I.I.I.u.1a4a5a3a..N.Cal.....N.L.v.Ibaa4bia6aO.x..........................bzai#5....brb3bqa7a0a..PaEbvboag#3.B..............aRal.C.H....aFah#4.#....#4#P.raDbnbtbn#9.D.D.a.a.b.a.b.a.b.baiaj.b.b.d.caCaB#Y#O.qaa.DaHbvbuad#4akak#5aGaGaCar#R.q.kaAax#L#W.i.i.k.i.i#J#Las.i.k.h.i.h.i.h.h.ibPbB.havaKaAap#T#T.h.f.h.f.h.hatatap#T#JaxbF.c.cbR.b.b.b.a.b.a.#.a.#.a.#.#.#.#.#.......#auaKap#T..........................................................................", +"b4biaV#d.J.L.N.ubaa1.P#8aN#8.N.C.NbTa7bjaVaO.L.La8bZbiaR.1.I.IaXaV#d.xa0a0a.#7.C.Ca1..a8b4a5.O#8.IaOb4aVboa2a0.E......................b3ah#5.B..a3a3b3bZa0#8.P.Nbtbzaiaf.D#9.............N.F.Fa4..btbvad#2.r.#bT.2bSb6b6aiag#9#3.Bal.b.a.a.a.a.b.abvbn#5.D.b.b.c#Y#Y#R.q#RaCamaDaLaD#4#2.s.raGaHbuaCac#R.qaxaq#K#U.i.i.i.i.i.i.i.i.i.h.h.i.h.h.f.h.h.fbFbC.hauawat#V#Laq.f.f.f.f.g.g.g#V#T#L#Z.c.c.cb9bH.a.a.b.a.a.a.#.#.#.#.#.#.#.#.#...#.#..avav#V#Jax........................................................................", +"b4bla5aVaO.OaXalbaa..N.H.N.N.C.Cbaa1b3bxaR.4.G.OaWaVaR.4.G.x.ObjaP.O.waP#8.Na8a7a9aO.Lbibxb#aO.L.H.OaWbob4a3a..E.E..................aibn#9.D.E..aQa7brbraQ#7.C.Nbzbqai#9.D.D......................aFaE#4.r.r.2bSb6...#.#.#a#.E.Dal.b.a.#.#.a.#.baEbpaE#5.Bai.a.b.a#P.qaeaC.baLadadaa#1.r#PaDaIaGaCaC#Y#O.qac#U#K.k.i.h.i.h.h.h.h.h.i.i.j.h.j.f.h.h.h.g.h.f.faoap#V#L#Uax.g.g.g.g.e.g.e.e.g.e.e.c.b.cbR.a.a.a.#.#.a.#.#.#.#.#...#.#.#.#...#....ao#V#L#V..........................................................................", +"bia8a5aVaR#8.IbZa1#8.C.N....#8aQ..a6a6aR#d.M.waSaPaP.4.L.u.1b8aX#e.x.1..a2a8bxbxa9aO.N.Ca5aR.O.I.CaS#dbobsbo#7.B.E....................#5#2.Bb4....aRa1aQ#7.P.CaSbvbvaf#3.B.D#Y....................ah#4#2.Danb6...#...#.#.#.#.E#7.#.#ay#X.#.a.#.#..aj#5.D#6as#X.q.a.a.#.a.b.baraz#4#P#P#PbYaraBaBac#Y#P.q#R#W#N#U.f.f.j.h.f.h.h.f.f.f.f.f.f.h.h.h.h.f.f.g.g.gbO#T#V#Uay.c.d.e.g.gbObO.d.c.c.c.c.b.bb6al.#.a.#.#.a.#.#.#.#.#.#.#.#.#..............#T#W.#..........................................................................", +"bib4biaRaO.4.I.Na..F.CaQ.N........aXaP#e.1.u#daZaN.I.L.x.Ib#.M.4.J.Gb1....a8b0b0aRaO.I.IaR.O.I.ualba..a2a0#8.F.Cal.......................D..........a.#8.H.Bbaaibzai#5#3.Bai#9.r................bTadab.ram...........#.#.#..aCak.#aAaG#0#N.#.#.#.##4.D#6aLaI#Y.t.#aGaGaB#Y.a#Oarar#P#P#Sas#0#K#Y#1#O#P#ObY.t#X.f.g.f.g.f.g.g.f.f.h.f.g.h.h.f.f.f.f.g.g.g.g.dbMbMbM.e.c.d.c.c.e.cbObFbJ.c.b.b.b.b.abR.#.a.a.#.#.#.#.#.#...#.#.#.#.#.#.#..........................................................................................", +".Gb4biaRaO.O.x.L.N.C#7a1al...........4.J.G.Gb1al.P.C.C.O.........4a2#9a5a5a5a8a5#8.O.u.IaR.I.u.1b#....#7a..E.v#7a3......................aHaHab.r.......N.Cala1#9afa##3bzbzaiaf.E.B..........aHaHaFaDad#2.D.............#.#bvaCak#Pazar#Sas.#.#.#.#azaHar#Q#Z#O#NazaGbuas#Q.q.a.a#QazaI#Z#K#N#Q.3#O#O#1aC#X#K.e.g.g.g.g.f.f.f.f.f.f.f.f.f.g.f.g.f.g.g.g.e.davap.e.c.c.c.c.d.b.c.bbFbC.a.b.b.b.b.ab6.2.#.#.#.#.#.#.#.#...#...#...........#........................................................................................", +".Gbia6aO.O.I.x.1aVala4ala4..........a..M.L.C#7bZ#9boa3aN.N.FaO.Iboa2#9bxbia1aRaO.1.I.Ialai..al.............EaQ#6.B......................aHaL#4.r................#3.D.Bbpb3aEaf#3.Q....b6.3bRbuaFb5adab#2.r.....#...#bnai#5#3aa#P#4.##N#X.#.#.#.#..aGaH#Z#O#Q#NaHaIaHaH#Y#Q.q.#.#azbuaG#Z#O#U.b.b.caras#X#N#N.e.c.d.g.g.g.g.g.g.g.g.g.g.g.g.g.e.e.e.d.g.eauauat#V.c.c.c.c.b.b.b.b.b.b.a.a.a.a.a.#bT.#.#.#.#.#.#...#.#.#.#.#auauat#Tat#V..........................................................................................", +".LaPaPaO.L.x.LaS#d.C.Nbs...............F.Ca.a4.Bbob4a3a..E.BaO.xbvbna8b3bxaRaO.O.H.Hala5..a5aO.L........aEbpam#3.B......................adaa.r#4................a0aQaEbtbtai#9#3.B#6.2bSb6b6acaFaLaD#4.r#P.#bzai#9bvbrai#5.B#P.qbu.#.#.#.#.#.#.#.#aI#Z#Q.qaB.#.#..aB#Z#R.t#1.#.#azazar#Q.tar.a.a.b.b#X#N#ObY#E.c.c.c.e.e.g.g.e.e.g.e.e.e.d.e.eauap#L.d.caxaKap#T#L.c.b.b.b.b.b.b.aauawap#V.#.#b6.2.#.........#.#.#.#.#.#auaAaAat#T#Lao#L........................................................................................", +".1aR.4.O.u.waSb6aP.O.w..........aVaO.x..#7.E.Ebabobsbq#7.E.Ca0.xaOa7a5a7a5aO.O.P.uaPb#a2bxbiaP.L.L......agafa#.B#3........................#P#5.....................N.PaJai#9#3.Q.Dafb6b6.....raDad#5#P.r#5bvbqaibzbybvaf#3.D#5...#.#.....#.#.#.#.##O#Q#Oan.#....aC#Z#P#O#R.#.#.##Z#Z#X#O#1.#.#.#.#.#.a#X.b.a#EbHbR.c.c.c.c.c.c.c.c.c.g.c.c.eauavat#V#L.cavat#V#Jaq.a.b.b.b.c.a.a.aawaKax#V#U.#bS.#.#.#.......#...#.#....avaxaxao#T#L#V#J........................................................................................", +"aS.O.L.x.x.1b1a5aP.L.G........a8a6aR.O.ua8a5aO.Ia0a0a..N.val.1.IaRa8aRaRaO.O.u.1aR......bxbxaO.I.O........#3.B#9am......................ad#P..........................af#9#2.D.BbT............#4#4#2.r#2aDbvbvagaibnah#6.D.Bam#O...#.#.#.#.#.....#.....#.#.#.#aGaIaB#Y.q.#.......##Q#O#OaC.#.#.#.#.a.#.#.a.a.a.c#EbRbR.b.c.c.b.c.c.c.c.c.c.caAaAap#T#L.c#V#V#L#T.b.b.b.a.b.b.#.#axawayaq#M#Lb8ba.#.....#...#...#...#.#..atatap#T.t#W#J#T........................................................................................", +"bZ.I.I.uaOb#bxa6.4.I.G....aEbib4a6aO.L.xb4a5aO.I#7#7#7.B.Fb4.ub1bxb##8#8.N.I.HbT.uaR....aRaP.L.Iba..................................aFaHaD#2#P......................bR.D#3.E.BanaE................#Pan..bzbnaia##9afa##3.safai.t#Z...#.#.#.#...#......aGaB#YaGaGaI#0#Q.q.#.......#...#...#.#..aCac#R.#.#.a.#.b.b.a.##EbRbR.a.b.b.b.c.b.c.b.baxap#W#L#L.b.d.a.c.b.a.b.a.a.#.#.a.#.#aqaq#U#JanbS.............#.......#....au#V#T#T#U#L#L..........................................................................................", +".va0bqa2#7aVaVaO.L.xaS..bza8bibia6aO.G.GaVa5.O.u.4.E.Fala4.IaVaRaRaO.L.x.L.Nal.u.1....a1aQ.N.Iba......................aGaI#R........aFbtad#2#2..ad#2aCaa.........2.2bSb6b6#3#9.qae................aGaB#Y#9ag#9#3.B.E.D.B#6am#O#1...#.....#.#...#aGaGaGbuaBakaGbYaI#Y#O#Oac.............#.#aGaGaIaB#Y.q.#.#.#.#.#.a.a.a.a#EbRbT.c.a.a.b.b.b.bao#V#L#Mav.a.a.a.#.a.a.b.#.a.#.a.#.#.##T#U#J#Wb8#E...................#......auaxat#V#L#V............................................................................................", +".N.Ea0#7.N.E#d.L.IbaaW.Pboa9a1aN.N.Ia0ag#7aO.I.IaV.L.Ib#.........4.I.Iba.L.O.H.Ib#..a8a7a1aO.u........................aLaB#O#Y......aCad#4.sambuaD#R.rak.rb9.2bRbSb6b6....#R#OaJah#5..............aLaC#P#R.D.D.B#3bw..#6....aa....aq#U.#.#......aGaLaGaLaBaGaKaLaB#X#O#O...#.#.......#....aGbuaLaB#Y.q...#.#.#.#.#.#.#.#.#.a.2bRbR.#.a.a.a.aauaA#L#V#L.b.a.#.#.a.#.#.a.#.#.#.#.#.#...#...#b6...........#.#.........#....atap#V#J#V..............................................................................................", +"#7.u.N.E.Calbo.Ial.N.Ba7a8a7aRaNboa3a2a0#7.E.HbZbY..a8a8aVaO.G......aO.L.ub#.O....brbxb3aR.1.C........................ac#Y.tas....aFb3aD#4#PaDaHaa#P#4#P#PbRbSb8...........#bzbzah#5.B............#Z#R#PaC..bpbvaf#3.D..........ayaEaj#4........aB#ZaCaB#X#PaIaI#0#N.tac...............#..aGaGaC#Y#O.qac.......#.#.#.#...#.#.#.#.2bRbR.2.a.#avaAap#T#T.#.a.#.#.a.a.#.#.#.#.#.#.#.#.#.#...#bR.....#.....#...#..............#V#L#L................................................................................................", +".N.C.N#S.Nbob4boa..E.Ebrb4b#aQaNbrbya2a0#7.E.C......bxbxaRaO.I.........I#d......a8b4a8a5aO.I.uaQ........................#OaB......aCaD#4#2#2..aa#P#PaD#PaGaIak............bzbvbrah#5.Q#2#4..........#OaCaI#Kbzbn#5.D.E..........bzaFah#4.s........#P#Z#Y#Q.q#Z#Y#R.q#1bu....aIaIar#Y...#.#aBaB#Z#R.q#P.....#.#.#.......#.#.#...#.#.##fbRbS#Eatat#V.tax.#.#.#.#.#.#.#.#.....#.#.....#.#..b9b6....................................................................................................................................", +".F.C#8#OaIbnbqa3#7.B.EbrbxbyaQbobyb3a0a.#7.C.Ea0..a5bxa8a7a7a1aO.HaI#Z#O........a9a8aRaQ.N.uba......................................#4#P#2bwbS.3#PbSb6b6bYaCak#OaAas#X....aFbubuaj#4.Q#2aa.r....ac#RaIaGaEah#5aj#6.ram........bzbvbtaj#4.Q....axaq....#O.qae..#Q.t#1aL#O..aGaHaGaB#Y.t#Y.#..#Y#Q#O#ObY...#...#.............#...#.#.#.#.#..bRbR#T#Jar.#...#.#...#.#.#.#.#.#.#.#.#...#...bbR.........#....................................................................................auauat#V................................", +".v.Fa4ae..a0aga..E.Cala7a1aQ.Oa3boboaN#7.F.B.N......a5a8bia8a1#8.P.H#Y.q........a1a1aN.H.u.1a1ab.....................................##RaH#Z.qb6b6b6....aC#Z#P#PaLaz#S#Q..aiaEah#4.D.sana..raaaGaI#Y#Obpbnaiaj.D.sa2........aEaEbzah#5#2.QahaGaI#Z#K.....#....aGbuaGaa#P#YazaLaK#Z#X#O#Y.q....#P#1#Z...........................#.......#.#.#.#bRbSbR...#.#...#.#...#.#.#.#.#.#.#.#...#b6bS..............................................................................atao............avaAatao#L..............................", +".CbTa9bqa9aQ#8.N.FaQ#8aRaQaN.1a0a0a.#8.E.v.Eal.#....aOa8b4bxaQ.O.P.H#O#O........a7a1aQ.N.P#2.r......................................aHaCak#Y.q.#........#Y#P.qaCar#X.taC..#5ab#5#2.s#6am#P.saGaH#Z#R#OaFbyai#5.D#3aHaC#ZaFaCadaaadab#2.s#6aGaI#Z#Q#O#Q........aGaLaCak.q#RaIaIar#Y#O#O#Z.q.........#.........#...........#...#.........#.....#....bRbRbT.#...#.#.#.....#...#..........bR............................................................................auauavao#L..........avavap#T#L..............................", +"ala4bqbqa9aQaN.P.Ca9aQ.OaN.P.H.H#7#8#7.F.Cbabs....brb4a7a8a4#8.1.u.N#RbY....aFbrb4a9aN#8.H.D..................................bS.2.2bvaCaa.sbw................bpa2agaDahab...D#2.s#9aJbs.rbwaBac#1.tacbnbnaf#3.Q#5buaCaaaFaFad#5.D#4.r#PamazaGaB#1#O#Y.......#ar#Z#Y#P#OaD#Z#Z#Y#Q.tanaIaB#Y#O.....#.......................................#...#.#...#bRbSbS.#.#...#...........#.#..b6bR............................................................................avaAaxao#L.#........atap#V#Jaq............................au", +"a0a3bxb5a1aN#8.P.Pa1aQ#8.P.I.HaQ..a#.B.Cala7.E#2axa7a8a1a1aO.N.C.Ha5......aFbvbqbxa8aN.P.Ca.........aFah#4................#f.2bTb9aCaJaC#4.rah................bpbybzbuaDaa.r......#7.##PacaI#Z#Q.qae#Pagaf#6.Q#6aiaHaDaFbybtad#4.D#4#3bYaGaLaL#Z#N#OaC....aGazazaraIac#Y....#Q#O.t#1aCaLaB#Y.q...#.........#.......#.............#.............#.......#..bRbSbS...#.............#.cbR..............................................................................atatap#T#J............#T#Jaq..............................at", +".ubqbxbya9#8.N.C.Ha0aO.N.P.NaQ.O..bqbo#7a.a#.C.N#4aQaQal#8.N.H.PbT........btaEa1a1#8.N.C.F........aFab#2.D#2...........2a2a.#7b6b6..ac#4.qbY........aEaiaj#2..bqbqaFbvah#4.D#4............bt#ZaB#Z#O#1#3.D.B.DbYaBaB#YaFaHaDaa#2.Q#5aFaHaIaIaI#X.t#Q#4....aGaLaIaHaGaB#Y#P......#XaGaLaL#Z#R#O#Y...........#.............#.......#.....#.......#.....#...#....bRbSbR..............b6bR................................................................................ao#T#TaM...............#................................#V", +".ua1a3a1aN.N.P.vala4#8.H.CalaR.Obobyb3a2a.a#.C.Nae#J.1.C.I.N.FaR..........aBabaN#8.O.H.ubZ......bzb3ae.Q.sam....bS.2aSboboa0#7.B..aI#P.saDakbna2a.aHbzaEafa#.QagagaDahab#2.raCaCaa#P....aIaC#R.q#O#1......#3......#R.radadab#4.r.Qahaaac#Y#Z#Y#O#Qb5#2....azazaIaI#X#K#Y.q#R......aIaI#Z#R#O.q.......................#...#.................................#......bRbSbT.......#..bR....................................................................................#V......................................................", +".IaNaQaN#8.N.v.Oa4#8.N.u.Ha1aQ.Nbnbwboa2#7.E.B#6#KaC...O..................#P.q#2.H.u.HaS........aDah#2.sam...2.2bRb1bobybrag#7.C.E..#Y#O#Pbpbza2afbtb3a2aj#3.Q#5a#adab#2.saHaHaDaa#P#P..ayaq#MbY.....................#..#4#2.D.rbw.Q#5.r.q#O#Q#Ran.rab....aGbuaHar#Q#O#R.q#4........#Z#R#O.qaJ..........................avaq.............................#.......#.....2bSbS.2..b6#E............................................................................................................................................", +"b5.O#8.N.H.H.HbTa1.N.F.FbTbs#8.Ca0a0a.a..E.v.Fa2............a7a3a0#7........bqboaQ#7.P............#4.Dbw.3.2bRb9b6b6bobsbqa..E.C#9....#O..brb5a2bzbvbuai#5#2.Q#5..#7#P.saCbtbvaCaa#P#PayaLaq#M....aw#W....................#2.Dab#P.rah..aHaaab#4.r#4aD....aGaKaL#0#S#K#Z.qaD..........#R#PaD..........................auawap#L.........#auauap#L..........................#fbTbSbS..............................................auatao..........................................................................................", +"aR..#P.F.P.Obaa4.L.C.F.1a7aO.H.Cb##9#7#6.B.FbTa3............bybsaN#7.C....a7a0#8.P.N.v............bS.2.2bSb9b6......a2a2a.#7.F.Cam......aibpbna2aibnaiaf#3.Q.saf........aCaFaDaa#4.r#4aqaq#U#K..aGaz#V#K..................abae#4.sam....aFaD.Q.r#5aJ......aIaIar#Q.t#N.sam............azar#U........................awaAaAaq#L#U......avaKaxao#L..............................bSbR............................................avaKavao#L........................................................................................", +"................aIaNal#X.O.P.Ial....#3.B.Cama2............a7bsa7.O.Ca3a0bqbra2#8.C.C.C.........2.2babSbSb6............a.#7.E.CbS..........agag#9ajafab#5.D.B#6ai..........adac#4.r#2ae..#M.taL..axaq#M#L....................#P.s#5.#aFaDaa.r.r#4.#........#Y#Z#X#N#ObYaa............ayaLar#U#K................awaq....axap#T#Jaq......avaxap#V#Jap.............................2..............................................auaAav#V#L........................................................................................", +"................aAbuas#Q#Q#W..arboboa2#9.E.E................aQaN.Nbqa3a3b3b3a0#8.C.N.N..b6.3.2baa0a#b6.....#azar#N.......E.Ea4............#9#7.E.D#3#3.D.E.Ebw............#4#P.r#Pam...#aEad....#T#M#U.#aGaBac#O.................#aFbyaDaa.raa..............#O#O.taC#1..............azaGaq#M#S..............awaKaq#L..#W#W#J#W........aoao#V#Las..............................bR..............................................atatao#L#T........................................................................................", +"..................ar#X.taB.#azasbybyag#9.E.E................#7.Pbob4bsa3bra3#7.N.v.Na9.2albSbqbra2a..C....aGaL#0#S#X.........................E.BalboaH.D#3af..................#4......btbpaj#2........aHaGaI#Z#P#P..............ayaHaFaD#4.raj......................................araq#W.tas..............axayaq#Jaq....................#Tavauat#T........................bRbS................................................#V#L#LaK........................................................................................", +"..................#X#S#Q..azaHbobsbsag#6.C.E......aEaf#3........a7brbra0a0a.al.C.Fa4bHbSb6b8bqb5a2a..C.E..arar#Q.t.#...................abzaiaf.E..aHbuac#R.r..........................aEah#5.rah......aGbuaB#Y#Q#O..............aCaCac#P.razar#0#Q..................................ayawaq#M................aqao#L#U........................auaxat#V#L.......................2.......................................................#..........................................................................................", +".B........a3a0#7..........arara0a2aga#.E.B#7.D.#bzaEaf#3.B......a1a0a..N#7#7.F.FbYbSb6b6..aHbobraN#7.B#7....#Q#SaJ....................bzbnaiaf#3.BaCaBak#P#P..........................aj#5.sam......aFaGaHac#1.q#R............aHaHaCac#R.qazaI#Z#O#X..............................awaGaA#W#J#W..................#U........................avaxayap#T#Lat#L................bSbT..................................................................................................................................................", +".B#7....bqbra0#7.C..........#S#Ka.#9.E.B#7b4.Dbtb5bnaf#2.QaFaFaD#8#8#7.C.C.N.F#8.Nb6......aHa0a.#7.E.Fa0............................bzbyb3ai#9#2.B#4aa#P.raF......aCaIac.r......aFaFaDab#2aj......aHbtaB#Z#Y#O#PaeaCaCac....aGbubvaDaa#P.qbtaGaCaB#X#O..............................axaq#T#J................................................avap#V#Jaqat#J.................2b8..................................................................................................................................................", +".C#7aya3bsbsa..N.Ca.....aHaCac.r..#3.valbw#2.QaJbpbn#5.Q.Qaibvad#4.C.P.Ha1.N.C.Ba0........aC#7a#.E.Cam.Eag..........................aibpa2af#6.B.Daf..#P.#.......#bYaG#Y#O......btbtaDab#2.Q......aFbu#R#R#O#OambtaHaDac#P..aCaHaHaC#P.r.raBaLaKaB#Y#O..............................#U#L#Man..........avaq..................................#V#T#L#Wat#V#L..............b6bR....................................................................................................................................................", +".u.Ha4aQ.Na0#8.C.Ca3aEbzaf.Eaa#P#M..#5ab#2.samagafa##3.s#3aFaEab#P.Qaba.#7.C.vbaa3..........#P.C.Ca0.C.F............................agaiafa#.E.B#6.#............aCaHac#R.qac..aFbvbvahaa.r.Qah....aFaEab#4#R#2#KaHaLaFak#O#Padacad#1#P.q#PaGaLaL#Z#R#O#Y...............................#............awaAaq#L....................awawaq#W#M......ao...##Lax..............bTbS....................................................................................................................................................", +".v.NaQ.P#8.H.P.CbYbpbnaEaf#3.Q.rae.....D.ranah..#6.D.E#3aEahae#4.sam#Lah.F.Fbaa2am............#7#7.E.Eb5..............................#9a##2.B#6b5..............#Zac#R.q#4.q..aDbzaD#4#4.r#2......abab#4.r.Db4#SadaCaa#P.qah..aaaa#P.r#2bwaIaI#Z#R#O.qaB............................................awax#V#J....................ayaKaq#V#J...................#auap#L.....2......................................................................................................................................................", +".u.Na..H.C.F.Pa1arbtb3ai#9.D.D.raCay#V#M........bobs#5#9.EbS#2.Q#2aD#V..#5.D#2am..................#7.#...................................D.B#9bn...................q#Oaa#Q#O..adabab#4#P.Q#6aCab.r..#2.r.sbw.taCac#R#P#Pam..aGbt#P.raaan....#Z#Y#O.qaM........axaq#M................................ao#V#JaM....................awaxaq#K#J..................ayaxap#T#TbXbR......................................................................................................................................................", +".CaS.D.E.C.C.Paq#Ubzbnaf#5.B.DaiaMaz#M#M......b1brbsaga#.C#9......#U.........#................................................aGaI#Y.q........adak................aCaBaa.q#1....#4#2#2.r#6aFaDak.r#4....#N#KaGaHaBak.q......aCaHaLaa#P.q......#P.qae........ayawaq#V#L........awawaq#L................atao.#..................awaMaxao#N#W.aavavap#L.#ataoauaAaAao#T#TaSb6......................................................................................................................................................", +"babZ.E.E.FaQalac#Oafafa#.D.Dam.#aq#W.t#0..bS.2.2a3am#9.F.Ca0..............................................bnbzaNa#.E......bzbzaf#3#Y.q....aHaCaCaa.r.#bzaFaj#2..aGaGaCac#P#R......#2.ragaDaFac#4#Paa....aFadaLbuad#R.r......adadac#1.s#2....................ayaKaq#T#L........aAaAaq#L#W............auauat#V#L..............awawaAax#W#J#WauaMaxaoauauauap#Tatap#V#Jaq.3........................................................................................................................................................", +"bs#3.E.Ea.albYac#P#R#6.D.Eal....#M#Jas.3.2#fbSb6#7a#.P.CbTaf........................................aHaCaBbybvag#3.B......bvbpaf#5.B#O....aHbvaBak#O#Rb3aJaj#2.DaGb3aB#Y#P#P......aCaCac#Pad#4.r#2ah..aHbpadaCaB#1#P.ravap....aa#R#P#PaF....................axaq#V#Jauavap#LawaGaA#W#L#T............ayaKap#T#L............awaMaxaq#W#M#Jaqavaxat#VauaMaxao#T#T#V#L#VbRbS........................................................................................................................................................", +"#3.E.B#7b7bsaL#Y.q#R..#3an......bS.3.2bRb1b6b6b6ai.B.Cal.D..........................................buaCbzbtbsaFaDab#2..bzbvbpaEaDaj#5..aCaLaLac#R.raabtbp#5.D.DaHaHaC#R.q#1.saHaGaGaCad#P.q.s#PaM....aLaHaaaaak#P#PbYaKat#L....#R#4........................aq#V#MavaKauap#L#Vaqaq#U#Jas..........ataxav#V#L#T............away#U#W#T#JaM..apap#V#Lauaxat#V#L#V..#Wb8.3..........................................................................................................................................................", +".D.B#3am..aCacbna2aga##3..b6bS.2.2bRb6b6b8........#5.E.BbY..........................aGaI#Z#O......aBaHaCbzaiaHaFaDaj#2.sahaibzbzaEah#5.D#5adac#4.q#Paeah#5#2.QafaB#Z#1#O.qan.raHaHbvaDaa#P.r#5.r#4....adaa#P#P#P.racavaw#V#J..................................ayaqavawav#V#L#W#W#U.t#0............axaqaq#M#LbY............axaq#V#L#Maqar....#T#J#Latapao#T#Lax....b6.2..........................................................................................................................................................", +".B.Eb#a0..#Ybpbpa2aga#.D.D.2bRbRb6b6b6...............E#6..............bna2aga#.E....buaI#X.q......aIaIbpbrahbtb3ahab#2.r..ajbtb4aJaj#3.Q.Eak#R.r#Pbv..#5#2#2am..aDab#4#OaJ.r#5aIaCaFaDaa.r.q.D#2aF......#2.saM#V....aoao#Las................................ayaGaratapao#L#Jax..................ayaKazaq#MaA........at#V....#T#M#JaA#Xavap..........#V#L#Las.....c.2b6.........................................................................................................................................................." +}; diff --git a/visit_plugins/operators/RandomSample/.depend b/visit_plugins/operators/RandomSample/.depend new file mode 100644 index 0000000..dbdb973 --- /dev/null +++ b/visit_plugins/operators/RandomSample/.depend @@ -0,0 +1,1519 @@ +H5PartRandomSamplePluginInfo.o: H5PartRandomSamplePluginInfo.C \ + H5PartRandomSamplePluginInfo.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/OperatorPluginInfo.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/plugin_exports.h \ + /usr/include/stdio.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/gnu/stubs.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/wordsize.h \ + /usr/include/bits/typesizes.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h /usr/include/bits/wchar.h \ + /usr/include/gconv.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/operator_plugin_exports.h \ + H5PartRandomSampleAttributes.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/AttributeSubject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/state_exports.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/AttributeGroup.h \ + /usr/include/c++/4.0.2/vector /usr/include/c++/4.0.2/bits/functexcept.h \ + /usr/include/c++/4.0.2/exception_defines.h \ + /usr/include/c++/4.0.2/bits/stl_algobase.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++config.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/os_defines.h \ + /usr/include/c++/4.0.2/cstring /usr/include/c++/4.0.2/cstddef \ + /usr/include/string.h /usr/include/xlocale.h \ + /usr/include/c++/4.0.2/climits \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/limits.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ + /usr/include/c++/4.0.2/cstdlib /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/bits/sched.h \ + /usr/include/alloca.h /usr/include/c++/4.0.2/iosfwd \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++locale.h \ + /usr/include/c++/4.0.2/cstdio /usr/include/c++/4.0.2/clocale \ + /usr/include/locale.h /usr/include/bits/locale.h \ + /usr/include/langinfo.h /usr/include/nl_types.h /usr/include/iconv.h \ + /usr/include/libintl.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++io.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/gthr.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/gthr-default.h \ + /usr/include/pthread.h /usr/include/sched.h /usr/include/signal.h \ + /usr/include/bits/initspin.h /usr/include/bits/sigthread.h \ + /usr/include/unistd.h /usr/include/bits/posix_opt.h \ + /usr/include/bits/environments.h /usr/include/bits/confname.h \ + /usr/include/getopt.h /usr/include/c++/4.0.2/cctype \ + /usr/include/ctype.h /usr/include/c++/4.0.2/bits/stringfwd.h \ + /usr/include/c++/4.0.2/bits/postypes.h /usr/include/c++/4.0.2/cwchar \ + /usr/include/c++/4.0.2/ctime /usr/include/stdint.h \ + /usr/include/c++/4.0.2/bits/stl_pair.h \ + /usr/include/c++/4.0.2/bits/cpp_type_traits.h \ + /usr/include/c++/4.0.2/bits/stl_iterator_base_types.h \ + /usr/include/c++/4.0.2/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/4.0.2/bits/concept_check.h \ + /usr/include/c++/4.0.2/bits/stl_iterator.h \ + /usr/include/c++/4.0.2/debug/debug.h /usr/include/c++/4.0.2/cassert \ + /usr/include/assert.h /usr/include/c++/4.0.2/bits/allocator.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++allocator.h \ + /usr/include/c++/4.0.2/ext/new_allocator.h /usr/include/c++/4.0.2/new \ + /usr/include/c++/4.0.2/exception \ + /usr/include/c++/4.0.2/bits/stl_construct.h \ + /usr/include/c++/4.0.2/bits/stl_uninitialized.h \ + /usr/include/c++/4.0.2/bits/stl_vector.h \ + /usr/include/c++/4.0.2/bits/stl_bvector.h \ + /usr/include/c++/4.0.2/bits/vector.tcc /usr/include/c++/4.0.2/string \ + /usr/include/c++/4.0.2/bits/char_traits.h /usr/include/c++/4.0.2/memory \ + /usr/include/c++/4.0.2/bits/stl_raw_storage_iter.h \ + /usr/include/c++/4.0.2/limits \ + /usr/include/c++/4.0.2/bits/stl_function.h \ + /usr/include/c++/4.0.2/bits/basic_string.h \ + /usr/include/c++/4.0.2/bits/atomicity.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/atomic_word.h \ + /usr/include/c++/4.0.2/algorithm /usr/include/c++/4.0.2/bits/stl_algo.h \ + /usr/include/c++/4.0.2/bits/stl_heap.h \ + /usr/include/c++/4.0.2/bits/stl_tempbuf.h \ + /usr/include/c++/4.0.2/bits/basic_string.tcc \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/visitstream.h \ + /usr/include/c++/4.0.2/iostream /usr/include/c++/4.0.2/ostream \ + /usr/include/c++/4.0.2/ios /usr/include/c++/4.0.2/bits/localefwd.h \ + /usr/include/c++/4.0.2/bits/ios_base.h \ + /usr/include/c++/4.0.2/bits/locale_classes.h \ + /usr/include/c++/4.0.2/streambuf \ + /usr/include/c++/4.0.2/bits/streambuf.tcc \ + /usr/include/c++/4.0.2/bits/basic_ios.h \ + /usr/include/c++/4.0.2/bits/streambuf_iterator.h \ + /usr/include/c++/4.0.2/bits/locale_facets.h \ + /usr/include/c++/4.0.2/cwctype /usr/include/wctype.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/ctype_base.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/ctype_inline.h \ + /usr/include/c++/4.0.2/bits/codecvt.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/time_members.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/messages_members.h \ + /usr/include/c++/4.0.2/bits/basic_ios.tcc \ + /usr/include/c++/4.0.2/bits/ostream.tcc /usr/include/c++/4.0.2/locale \ + /usr/include/c++/4.0.2/bits/locale_facets.tcc \ + /usr/include/c++/4.0.2/typeinfo /usr/include/c++/4.0.2/istream \ + /usr/include/c++/4.0.2/bits/istream.tcc /usr/include/c++/4.0.2/fstream \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/basic_file.h \ + /usr/include/c++/4.0.2/bits/fstream.tcc \ + /usr/include/c++/4.0.2/backward/strstream \ + /usr/include/c++/4.0.2/backward/backward_warning.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/VisItException.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/misc_exports.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/vectortypes.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/Subject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit-config.h +H5PartRandomSampleCommonPluginInfo.o: \ + H5PartRandomSampleCommonPluginInfo.C H5PartRandomSamplePluginInfo.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/OperatorPluginInfo.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/plugin_exports.h \ + /usr/include/stdio.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/gnu/stubs.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/wordsize.h \ + /usr/include/bits/typesizes.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h /usr/include/bits/wchar.h \ + /usr/include/gconv.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/operator_plugin_exports.h \ + H5PartRandomSampleAttributes.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/AttributeSubject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/state_exports.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/AttributeGroup.h \ + /usr/include/c++/4.0.2/vector /usr/include/c++/4.0.2/bits/functexcept.h \ + /usr/include/c++/4.0.2/exception_defines.h \ + /usr/include/c++/4.0.2/bits/stl_algobase.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++config.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/os_defines.h \ + /usr/include/c++/4.0.2/cstring /usr/include/c++/4.0.2/cstddef \ + /usr/include/string.h /usr/include/xlocale.h \ + /usr/include/c++/4.0.2/climits \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/limits.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ + /usr/include/c++/4.0.2/cstdlib /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/bits/sched.h \ + /usr/include/alloca.h /usr/include/c++/4.0.2/iosfwd \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++locale.h \ + /usr/include/c++/4.0.2/cstdio /usr/include/c++/4.0.2/clocale \ + /usr/include/locale.h /usr/include/bits/locale.h \ + /usr/include/langinfo.h /usr/include/nl_types.h /usr/include/iconv.h \ + /usr/include/libintl.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++io.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/gthr.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/gthr-default.h \ + /usr/include/pthread.h /usr/include/sched.h /usr/include/signal.h \ + /usr/include/bits/initspin.h /usr/include/bits/sigthread.h \ + /usr/include/unistd.h /usr/include/bits/posix_opt.h \ + /usr/include/bits/environments.h /usr/include/bits/confname.h \ + /usr/include/getopt.h /usr/include/c++/4.0.2/cctype \ + /usr/include/ctype.h /usr/include/c++/4.0.2/bits/stringfwd.h \ + /usr/include/c++/4.0.2/bits/postypes.h /usr/include/c++/4.0.2/cwchar \ + /usr/include/c++/4.0.2/ctime /usr/include/stdint.h \ + /usr/include/c++/4.0.2/bits/stl_pair.h \ + /usr/include/c++/4.0.2/bits/cpp_type_traits.h \ + /usr/include/c++/4.0.2/bits/stl_iterator_base_types.h \ + /usr/include/c++/4.0.2/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/4.0.2/bits/concept_check.h \ + /usr/include/c++/4.0.2/bits/stl_iterator.h \ + /usr/include/c++/4.0.2/debug/debug.h /usr/include/c++/4.0.2/cassert \ + /usr/include/assert.h /usr/include/c++/4.0.2/bits/allocator.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++allocator.h \ + /usr/include/c++/4.0.2/ext/new_allocator.h /usr/include/c++/4.0.2/new \ + /usr/include/c++/4.0.2/exception \ + /usr/include/c++/4.0.2/bits/stl_construct.h \ + /usr/include/c++/4.0.2/bits/stl_uninitialized.h \ + /usr/include/c++/4.0.2/bits/stl_vector.h \ + /usr/include/c++/4.0.2/bits/stl_bvector.h \ + /usr/include/c++/4.0.2/bits/vector.tcc /usr/include/c++/4.0.2/string \ + /usr/include/c++/4.0.2/bits/char_traits.h /usr/include/c++/4.0.2/memory \ + /usr/include/c++/4.0.2/bits/stl_raw_storage_iter.h \ + /usr/include/c++/4.0.2/limits \ + /usr/include/c++/4.0.2/bits/stl_function.h \ + /usr/include/c++/4.0.2/bits/basic_string.h \ + /usr/include/c++/4.0.2/bits/atomicity.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/atomic_word.h \ + /usr/include/c++/4.0.2/algorithm /usr/include/c++/4.0.2/bits/stl_algo.h \ + /usr/include/c++/4.0.2/bits/stl_heap.h \ + /usr/include/c++/4.0.2/bits/stl_tempbuf.h \ + /usr/include/c++/4.0.2/bits/basic_string.tcc \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/visitstream.h \ + /usr/include/c++/4.0.2/iostream /usr/include/c++/4.0.2/ostream \ + /usr/include/c++/4.0.2/ios /usr/include/c++/4.0.2/bits/localefwd.h \ + /usr/include/c++/4.0.2/bits/ios_base.h \ + /usr/include/c++/4.0.2/bits/locale_classes.h \ + /usr/include/c++/4.0.2/streambuf \ + /usr/include/c++/4.0.2/bits/streambuf.tcc \ + /usr/include/c++/4.0.2/bits/basic_ios.h \ + /usr/include/c++/4.0.2/bits/streambuf_iterator.h \ + /usr/include/c++/4.0.2/bits/locale_facets.h \ + /usr/include/c++/4.0.2/cwctype /usr/include/wctype.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/ctype_base.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/ctype_inline.h \ + /usr/include/c++/4.0.2/bits/codecvt.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/time_members.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/messages_members.h \ + /usr/include/c++/4.0.2/bits/basic_ios.tcc \ + /usr/include/c++/4.0.2/bits/ostream.tcc /usr/include/c++/4.0.2/locale \ + /usr/include/c++/4.0.2/bits/locale_facets.tcc \ + /usr/include/c++/4.0.2/typeinfo /usr/include/c++/4.0.2/istream \ + /usr/include/c++/4.0.2/bits/istream.tcc /usr/include/c++/4.0.2/fstream \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/basic_file.h \ + /usr/include/c++/4.0.2/bits/fstream.tcc \ + /usr/include/c++/4.0.2/backward/strstream \ + /usr/include/c++/4.0.2/backward/backward_warning.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/VisItException.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/misc_exports.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/vectortypes.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/Subject.h +H5PartRandomSampleAttributes.o: H5PartRandomSampleAttributes.C \ + H5PartRandomSampleAttributes.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/AttributeSubject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/state_exports.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/AttributeGroup.h \ + /usr/include/c++/4.0.2/vector /usr/include/c++/4.0.2/bits/functexcept.h \ + /usr/include/c++/4.0.2/exception_defines.h \ + /usr/include/c++/4.0.2/bits/stl_algobase.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++config.h \ + /usr/include/bits/wordsize.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/os_defines.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/gnu/stubs.h /usr/include/c++/4.0.2/cstring \ + /usr/include/c++/4.0.2/cstddef \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/stddef.h \ + /usr/include/string.h /usr/include/xlocale.h \ + /usr/include/c++/4.0.2/climits \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/limits.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ + /usr/include/bits/stdio_lim.h /usr/include/c++/4.0.2/cstdlib \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/sys/types.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/bits/sched.h \ + /usr/include/alloca.h /usr/include/c++/4.0.2/iosfwd \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++locale.h \ + /usr/include/c++/4.0.2/cstdio /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h /usr/include/bits/wchar.h \ + /usr/include/gconv.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/stdarg.h \ + /usr/include/bits/sys_errlist.h /usr/include/bits/stdio.h \ + /usr/include/c++/4.0.2/clocale /usr/include/locale.h \ + /usr/include/bits/locale.h /usr/include/langinfo.h \ + /usr/include/nl_types.h /usr/include/iconv.h /usr/include/libintl.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++io.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/gthr.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/gthr-default.h \ + /usr/include/pthread.h /usr/include/sched.h /usr/include/signal.h \ + /usr/include/bits/initspin.h /usr/include/bits/sigthread.h \ + /usr/include/unistd.h /usr/include/bits/posix_opt.h \ + /usr/include/bits/environments.h /usr/include/bits/confname.h \ + /usr/include/getopt.h /usr/include/c++/4.0.2/cctype \ + /usr/include/ctype.h /usr/include/c++/4.0.2/bits/stringfwd.h \ + /usr/include/c++/4.0.2/bits/postypes.h /usr/include/c++/4.0.2/cwchar \ + /usr/include/c++/4.0.2/ctime /usr/include/stdint.h \ + /usr/include/c++/4.0.2/bits/stl_pair.h \ + /usr/include/c++/4.0.2/bits/cpp_type_traits.h \ + /usr/include/c++/4.0.2/bits/stl_iterator_base_types.h \ + /usr/include/c++/4.0.2/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/4.0.2/bits/concept_check.h \ + /usr/include/c++/4.0.2/bits/stl_iterator.h \ + /usr/include/c++/4.0.2/debug/debug.h /usr/include/c++/4.0.2/cassert \ + /usr/include/assert.h /usr/include/c++/4.0.2/bits/allocator.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++allocator.h \ + /usr/include/c++/4.0.2/ext/new_allocator.h /usr/include/c++/4.0.2/new \ + /usr/include/c++/4.0.2/exception \ + /usr/include/c++/4.0.2/bits/stl_construct.h \ + /usr/include/c++/4.0.2/bits/stl_uninitialized.h \ + /usr/include/c++/4.0.2/bits/stl_vector.h \ + /usr/include/c++/4.0.2/bits/stl_bvector.h \ + /usr/include/c++/4.0.2/bits/vector.tcc /usr/include/c++/4.0.2/string \ + /usr/include/c++/4.0.2/bits/char_traits.h /usr/include/c++/4.0.2/memory \ + /usr/include/c++/4.0.2/bits/stl_raw_storage_iter.h \ + /usr/include/c++/4.0.2/limits \ + /usr/include/c++/4.0.2/bits/stl_function.h \ + /usr/include/c++/4.0.2/bits/basic_string.h \ + /usr/include/c++/4.0.2/bits/atomicity.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/atomic_word.h \ + /usr/include/c++/4.0.2/algorithm /usr/include/c++/4.0.2/bits/stl_algo.h \ + /usr/include/c++/4.0.2/bits/stl_heap.h \ + /usr/include/c++/4.0.2/bits/stl_tempbuf.h \ + /usr/include/c++/4.0.2/bits/basic_string.tcc \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/visitstream.h \ + /usr/include/c++/4.0.2/iostream /usr/include/c++/4.0.2/ostream \ + /usr/include/c++/4.0.2/ios /usr/include/c++/4.0.2/bits/localefwd.h \ + /usr/include/c++/4.0.2/bits/ios_base.h \ + /usr/include/c++/4.0.2/bits/locale_classes.h \ + /usr/include/c++/4.0.2/streambuf \ + /usr/include/c++/4.0.2/bits/streambuf.tcc \ + /usr/include/c++/4.0.2/bits/basic_ios.h \ + /usr/include/c++/4.0.2/bits/streambuf_iterator.h \ + /usr/include/c++/4.0.2/bits/locale_facets.h \ + /usr/include/c++/4.0.2/cwctype /usr/include/wctype.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/ctype_base.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/ctype_inline.h \ + /usr/include/c++/4.0.2/bits/codecvt.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/time_members.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/messages_members.h \ + /usr/include/c++/4.0.2/bits/basic_ios.tcc \ + /usr/include/c++/4.0.2/bits/ostream.tcc /usr/include/c++/4.0.2/locale \ + /usr/include/c++/4.0.2/bits/locale_facets.tcc \ + /usr/include/c++/4.0.2/typeinfo /usr/include/c++/4.0.2/istream \ + /usr/include/c++/4.0.2/bits/istream.tcc /usr/include/c++/4.0.2/fstream \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/basic_file.h \ + /usr/include/c++/4.0.2/bits/fstream.tcc \ + /usr/include/c++/4.0.2/backward/strstream \ + /usr/include/c++/4.0.2/backward/backward_warning.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/VisItException.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/misc_exports.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/vectortypes.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/Subject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/DataNode.h +H5PartRandomSampleGUIPluginInfo.o: H5PartRandomSampleGUIPluginInfo.C \ + H5PartRandomSamplePluginInfo.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/OperatorPluginInfo.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/plugin_exports.h \ + /usr/include/stdio.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/gnu/stubs.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/wordsize.h \ + /usr/include/bits/typesizes.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h /usr/include/bits/wchar.h \ + /usr/include/gconv.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/operator_plugin_exports.h \ + H5PartRandomSampleAttributes.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/AttributeSubject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/state_exports.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/AttributeGroup.h \ + /usr/include/c++/4.0.2/vector /usr/include/c++/4.0.2/bits/functexcept.h \ + /usr/include/c++/4.0.2/exception_defines.h \ + /usr/include/c++/4.0.2/bits/stl_algobase.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++config.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/os_defines.h \ + /usr/include/c++/4.0.2/cstring /usr/include/c++/4.0.2/cstddef \ + /usr/include/string.h /usr/include/xlocale.h \ + /usr/include/c++/4.0.2/climits \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/limits.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ + /usr/include/c++/4.0.2/cstdlib /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/bits/sched.h \ + /usr/include/alloca.h /usr/include/c++/4.0.2/iosfwd \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++locale.h \ + /usr/include/c++/4.0.2/cstdio /usr/include/c++/4.0.2/clocale \ + /usr/include/locale.h /usr/include/bits/locale.h \ + /usr/include/langinfo.h /usr/include/nl_types.h /usr/include/iconv.h \ + /usr/include/libintl.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++io.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/gthr.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/gthr-default.h \ + /usr/include/pthread.h /usr/include/sched.h /usr/include/signal.h \ + /usr/include/bits/initspin.h /usr/include/bits/sigthread.h \ + /usr/include/unistd.h /usr/include/bits/posix_opt.h \ + /usr/include/bits/environments.h /usr/include/bits/confname.h \ + /usr/include/getopt.h /usr/include/c++/4.0.2/cctype \ + /usr/include/ctype.h /usr/include/c++/4.0.2/bits/stringfwd.h \ + /usr/include/c++/4.0.2/bits/postypes.h /usr/include/c++/4.0.2/cwchar \ + /usr/include/c++/4.0.2/ctime /usr/include/stdint.h \ + /usr/include/c++/4.0.2/bits/stl_pair.h \ + /usr/include/c++/4.0.2/bits/cpp_type_traits.h \ + /usr/include/c++/4.0.2/bits/stl_iterator_base_types.h \ + /usr/include/c++/4.0.2/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/4.0.2/bits/concept_check.h \ + /usr/include/c++/4.0.2/bits/stl_iterator.h \ + /usr/include/c++/4.0.2/debug/debug.h /usr/include/c++/4.0.2/cassert \ + /usr/include/assert.h /usr/include/c++/4.0.2/bits/allocator.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++allocator.h \ + /usr/include/c++/4.0.2/ext/new_allocator.h /usr/include/c++/4.0.2/new \ + /usr/include/c++/4.0.2/exception \ + /usr/include/c++/4.0.2/bits/stl_construct.h \ + /usr/include/c++/4.0.2/bits/stl_uninitialized.h \ + /usr/include/c++/4.0.2/bits/stl_vector.h \ + /usr/include/c++/4.0.2/bits/stl_bvector.h \ + /usr/include/c++/4.0.2/bits/vector.tcc /usr/include/c++/4.0.2/string \ + /usr/include/c++/4.0.2/bits/char_traits.h /usr/include/c++/4.0.2/memory \ + /usr/include/c++/4.0.2/bits/stl_raw_storage_iter.h \ + /usr/include/c++/4.0.2/limits \ + /usr/include/c++/4.0.2/bits/stl_function.h \ + /usr/include/c++/4.0.2/bits/basic_string.h \ + /usr/include/c++/4.0.2/bits/atomicity.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/atomic_word.h \ + /usr/include/c++/4.0.2/algorithm /usr/include/c++/4.0.2/bits/stl_algo.h \ + /usr/include/c++/4.0.2/bits/stl_heap.h \ + /usr/include/c++/4.0.2/bits/stl_tempbuf.h \ + /usr/include/c++/4.0.2/bits/basic_string.tcc \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/visitstream.h \ + /usr/include/c++/4.0.2/iostream /usr/include/c++/4.0.2/ostream \ + /usr/include/c++/4.0.2/ios /usr/include/c++/4.0.2/bits/localefwd.h \ + /usr/include/c++/4.0.2/bits/ios_base.h \ + /usr/include/c++/4.0.2/bits/locale_classes.h \ + /usr/include/c++/4.0.2/streambuf \ + /usr/include/c++/4.0.2/bits/streambuf.tcc \ + /usr/include/c++/4.0.2/bits/basic_ios.h \ + /usr/include/c++/4.0.2/bits/streambuf_iterator.h \ + /usr/include/c++/4.0.2/bits/locale_facets.h \ + /usr/include/c++/4.0.2/cwctype /usr/include/wctype.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/ctype_base.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/ctype_inline.h \ + /usr/include/c++/4.0.2/bits/codecvt.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/time_members.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/messages_members.h \ + /usr/include/c++/4.0.2/bits/basic_ios.tcc \ + /usr/include/c++/4.0.2/bits/ostream.tcc /usr/include/c++/4.0.2/locale \ + /usr/include/c++/4.0.2/bits/locale_facets.tcc \ + /usr/include/c++/4.0.2/typeinfo /usr/include/c++/4.0.2/istream \ + /usr/include/c++/4.0.2/bits/istream.tcc /usr/include/c++/4.0.2/fstream \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/basic_file.h \ + /usr/include/c++/4.0.2/bits/fstream.tcc \ + /usr/include/c++/4.0.2/backward/strstream \ + /usr/include/c++/4.0.2/backward/backward_warning.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/VisItException.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/misc_exports.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/vectortypes.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/Subject.h \ + QvisH5PartRandomSampleWindow.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/QvisOperatorWindow.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/gui_exports.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/QvisPostableWindowObserver.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/QvisPostableWindowSimpleObserver.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/QvisPostableWindow.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qstring.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qcstring.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qmemarray.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qgarray.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qshared.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qglobal.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qconfig.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qmodules.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qfeatures.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qwinexport.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/QvisWindowBase.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qmainwindow.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qwidget.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qwindowdefs.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qobjectdefs.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qstring.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qnamespace.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qobject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qevent.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qregion.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qrect.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qsize.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qpoint.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qmime.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qmap.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qdatastream.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qiodevice.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qpair.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qvaluelist.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qtl.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qtextstream.h \ + /usr/include/c++/4.0.2/iterator \ + /usr/include/c++/4.0.2/bits/stream_iterator.h \ + /usr/include/c++/4.0.2/list /usr/include/c++/4.0.2/bits/stl_list.h \ + /usr/include/c++/4.0.2/bits/list.tcc /usr/include/c++/4.0.2/map \ + /usr/include/c++/4.0.2/bits/stl_tree.h \ + /usr/include/c++/4.0.2/bits/stl_map.h \ + /usr/include/c++/4.0.2/bits/stl_multimap.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qpaintdevice.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qpalette.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qcolor.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qstringlist.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qstrlist.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qptrlist.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qglist.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qptrcollection.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qbrush.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qfont.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qfontmetrics.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qfontinfo.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qsizepolicy.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qtoolbar.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qdockwindow.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qframe.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/GUIBase.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/SimpleObserver.h +QvisH5PartRandomSampleWindow.o: QvisH5PartRandomSampleWindow.C \ + QvisH5PartRandomSampleWindow.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/QvisOperatorWindow.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/gui_exports.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/QvisPostableWindowObserver.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/QvisPostableWindowSimpleObserver.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/QvisPostableWindow.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qstring.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qcstring.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qmemarray.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qgarray.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qshared.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qglobal.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qconfig.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qmodules.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qfeatures.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qwinexport.h \ + /usr/include/string.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/gnu/stubs.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/stddef.h \ + /usr/include/xlocale.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/limits.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ + /usr/include/bits/stdio_lim.h /usr/include/c++/4.0.2/string \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++config.h \ + /usr/include/bits/wordsize.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/os_defines.h \ + /usr/include/c++/4.0.2/bits/stringfwd.h \ + /usr/include/c++/4.0.2/bits/char_traits.h \ + /usr/include/c++/4.0.2/cstring /usr/include/c++/4.0.2/cstddef \ + /usr/include/c++/4.0.2/bits/stl_algobase.h \ + /usr/include/c++/4.0.2/climits /usr/include/c++/4.0.2/cstdlib \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/sys/types.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/bits/sched.h \ + /usr/include/alloca.h /usr/include/c++/4.0.2/iosfwd \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++locale.h \ + /usr/include/c++/4.0.2/cstdio /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h /usr/include/bits/wchar.h \ + /usr/include/gconv.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/stdarg.h \ + /usr/include/bits/sys_errlist.h /usr/include/bits/stdio.h \ + /usr/include/c++/4.0.2/clocale /usr/include/locale.h \ + /usr/include/bits/locale.h /usr/include/langinfo.h \ + /usr/include/nl_types.h /usr/include/iconv.h /usr/include/libintl.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++io.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/gthr.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/gthr-default.h \ + /usr/include/pthread.h /usr/include/sched.h /usr/include/signal.h \ + /usr/include/bits/initspin.h /usr/include/bits/sigthread.h \ + /usr/include/unistd.h /usr/include/bits/posix_opt.h \ + /usr/include/bits/environments.h /usr/include/bits/confname.h \ + /usr/include/getopt.h /usr/include/c++/4.0.2/cctype \ + /usr/include/ctype.h /usr/include/c++/4.0.2/bits/postypes.h \ + /usr/include/c++/4.0.2/cwchar /usr/include/c++/4.0.2/ctime \ + /usr/include/stdint.h /usr/include/c++/4.0.2/bits/functexcept.h \ + /usr/include/c++/4.0.2/exception_defines.h \ + /usr/include/c++/4.0.2/bits/stl_pair.h \ + /usr/include/c++/4.0.2/bits/cpp_type_traits.h \ + /usr/include/c++/4.0.2/bits/stl_iterator_base_types.h \ + /usr/include/c++/4.0.2/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/4.0.2/bits/concept_check.h \ + /usr/include/c++/4.0.2/bits/stl_iterator.h \ + /usr/include/c++/4.0.2/debug/debug.h /usr/include/c++/4.0.2/cassert \ + /usr/include/assert.h /usr/include/c++/4.0.2/memory \ + /usr/include/c++/4.0.2/bits/allocator.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++allocator.h \ + /usr/include/c++/4.0.2/ext/new_allocator.h /usr/include/c++/4.0.2/new \ + /usr/include/c++/4.0.2/exception \ + /usr/include/c++/4.0.2/bits/stl_construct.h \ + /usr/include/c++/4.0.2/bits/stl_uninitialized.h \ + /usr/include/c++/4.0.2/bits/stl_raw_storage_iter.h \ + /usr/include/c++/4.0.2/limits \ + /usr/include/c++/4.0.2/bits/stl_function.h \ + /usr/include/c++/4.0.2/bits/basic_string.h \ + /usr/include/c++/4.0.2/bits/atomicity.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/atomic_word.h \ + /usr/include/c++/4.0.2/algorithm /usr/include/c++/4.0.2/bits/stl_algo.h \ + /usr/include/c++/4.0.2/bits/stl_heap.h \ + /usr/include/c++/4.0.2/bits/stl_tempbuf.h \ + /usr/include/c++/4.0.2/bits/basic_string.tcc \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/QvisWindowBase.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qmainwindow.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qwidget.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qwindowdefs.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qobjectdefs.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qstring.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qnamespace.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qobject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qevent.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qregion.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qrect.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qsize.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qpoint.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qmime.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qmap.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qdatastream.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qiodevice.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qpair.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qvaluelist.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qtl.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qtextstream.h \ + /usr/include/c++/4.0.2/iterator /usr/include/c++/4.0.2/ostream \ + /usr/include/c++/4.0.2/ios /usr/include/c++/4.0.2/bits/localefwd.h \ + /usr/include/c++/4.0.2/bits/ios_base.h \ + /usr/include/c++/4.0.2/bits/locale_classes.h \ + /usr/include/c++/4.0.2/streambuf \ + /usr/include/c++/4.0.2/bits/streambuf.tcc \ + /usr/include/c++/4.0.2/bits/basic_ios.h \ + /usr/include/c++/4.0.2/bits/streambuf_iterator.h \ + /usr/include/c++/4.0.2/bits/locale_facets.h \ + /usr/include/c++/4.0.2/cwctype /usr/include/wctype.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/ctype_base.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/ctype_inline.h \ + /usr/include/c++/4.0.2/bits/codecvt.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/time_members.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/messages_members.h \ + /usr/include/c++/4.0.2/bits/basic_ios.tcc \ + /usr/include/c++/4.0.2/bits/ostream.tcc /usr/include/c++/4.0.2/locale \ + /usr/include/c++/4.0.2/bits/locale_facets.tcc \ + /usr/include/c++/4.0.2/typeinfo /usr/include/c++/4.0.2/istream \ + /usr/include/c++/4.0.2/bits/istream.tcc \ + /usr/include/c++/4.0.2/bits/stream_iterator.h \ + /usr/include/c++/4.0.2/list /usr/include/c++/4.0.2/bits/stl_list.h \ + /usr/include/c++/4.0.2/bits/list.tcc /usr/include/c++/4.0.2/map \ + /usr/include/c++/4.0.2/bits/stl_tree.h \ + /usr/include/c++/4.0.2/bits/stl_map.h \ + /usr/include/c++/4.0.2/bits/stl_multimap.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qpaintdevice.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qpalette.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qcolor.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qstringlist.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qstrlist.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qptrlist.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qglist.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qptrcollection.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qbrush.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qfont.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qfontmetrics.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qfontinfo.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qsizepolicy.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qtoolbar.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qdockwindow.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qframe.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/GUIBase.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/vectortypes.h \ + /usr/include/c++/4.0.2/vector /usr/include/c++/4.0.2/bits/stl_vector.h \ + /usr/include/c++/4.0.2/bits/stl_bvector.h \ + /usr/include/c++/4.0.2/bits/vector.tcc \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/SimpleObserver.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/state_exports.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/AttributeSubject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/AttributeGroup.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/visitstream.h \ + /usr/include/c++/4.0.2/iostream /usr/include/c++/4.0.2/fstream \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/basic_file.h \ + /usr/include/c++/4.0.2/bits/fstream.tcc \ + /usr/include/c++/4.0.2/backward/strstream \ + /usr/include/c++/4.0.2/backward/backward_warning.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/VisItException.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/misc_exports.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/Subject.h \ + H5PartRandomSampleAttributes.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/ViewerProxy.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/viewerproxy_exports.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/avtSILRestriction.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/dbatts_exports.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/ref_ptr.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/avtSIL.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/avtSILCollection.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/avtSILMatrix.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/avtTypes.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/avtSILSet.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qcheckbox.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qbutton.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qkeysequence.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qlabel.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qlayout.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qlineedit.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qspinbox.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qrangecontrol.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qvbox.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qhbox.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qbuttongroup.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qgroupbox.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qradiobutton.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/QvisColorTableButton.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qpushbutton.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qiconset.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qpixmap.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/QvisOpacitySlider.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qwidget.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qrangecontrol.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/QvisColorButton.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qcolor.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qbutton.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/QvisLineStyleWidget.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qwidget.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/QvisLineWidthWidget.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/QvisVariableButton.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/qt/qobjectlist.h +H5PartRandomSampleViewerPluginInfo.o: \ + H5PartRandomSampleViewerPluginInfo.C H5PartRandomSamplePluginInfo.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/OperatorPluginInfo.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/plugin_exports.h \ + /usr/include/stdio.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/gnu/stubs.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/wordsize.h \ + /usr/include/bits/typesizes.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h /usr/include/bits/wchar.h \ + /usr/include/gconv.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/operator_plugin_exports.h \ + H5PartRandomSampleAttributes.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/AttributeSubject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/state_exports.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/AttributeGroup.h \ + /usr/include/c++/4.0.2/vector /usr/include/c++/4.0.2/bits/functexcept.h \ + /usr/include/c++/4.0.2/exception_defines.h \ + /usr/include/c++/4.0.2/bits/stl_algobase.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++config.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/os_defines.h \ + /usr/include/c++/4.0.2/cstring /usr/include/c++/4.0.2/cstddef \ + /usr/include/string.h /usr/include/xlocale.h \ + /usr/include/c++/4.0.2/climits \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/limits.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ + /usr/include/c++/4.0.2/cstdlib /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/bits/sched.h \ + /usr/include/alloca.h /usr/include/c++/4.0.2/iosfwd \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++locale.h \ + /usr/include/c++/4.0.2/cstdio /usr/include/c++/4.0.2/clocale \ + /usr/include/locale.h /usr/include/bits/locale.h \ + /usr/include/langinfo.h /usr/include/nl_types.h /usr/include/iconv.h \ + /usr/include/libintl.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++io.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/gthr.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/gthr-default.h \ + /usr/include/pthread.h /usr/include/sched.h /usr/include/signal.h \ + /usr/include/bits/initspin.h /usr/include/bits/sigthread.h \ + /usr/include/unistd.h /usr/include/bits/posix_opt.h \ + /usr/include/bits/environments.h /usr/include/bits/confname.h \ + /usr/include/getopt.h /usr/include/c++/4.0.2/cctype \ + /usr/include/ctype.h /usr/include/c++/4.0.2/bits/stringfwd.h \ + /usr/include/c++/4.0.2/bits/postypes.h /usr/include/c++/4.0.2/cwchar \ + /usr/include/c++/4.0.2/ctime /usr/include/stdint.h \ + /usr/include/c++/4.0.2/bits/stl_pair.h \ + /usr/include/c++/4.0.2/bits/cpp_type_traits.h \ + /usr/include/c++/4.0.2/bits/stl_iterator_base_types.h \ + /usr/include/c++/4.0.2/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/4.0.2/bits/concept_check.h \ + /usr/include/c++/4.0.2/bits/stl_iterator.h \ + /usr/include/c++/4.0.2/debug/debug.h /usr/include/c++/4.0.2/cassert \ + /usr/include/assert.h /usr/include/c++/4.0.2/bits/allocator.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++allocator.h \ + /usr/include/c++/4.0.2/ext/new_allocator.h /usr/include/c++/4.0.2/new \ + /usr/include/c++/4.0.2/exception \ + /usr/include/c++/4.0.2/bits/stl_construct.h \ + /usr/include/c++/4.0.2/bits/stl_uninitialized.h \ + /usr/include/c++/4.0.2/bits/stl_vector.h \ + /usr/include/c++/4.0.2/bits/stl_bvector.h \ + /usr/include/c++/4.0.2/bits/vector.tcc /usr/include/c++/4.0.2/string \ + /usr/include/c++/4.0.2/bits/char_traits.h /usr/include/c++/4.0.2/memory \ + /usr/include/c++/4.0.2/bits/stl_raw_storage_iter.h \ + /usr/include/c++/4.0.2/limits \ + /usr/include/c++/4.0.2/bits/stl_function.h \ + /usr/include/c++/4.0.2/bits/basic_string.h \ + /usr/include/c++/4.0.2/bits/atomicity.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/atomic_word.h \ + /usr/include/c++/4.0.2/algorithm /usr/include/c++/4.0.2/bits/stl_algo.h \ + /usr/include/c++/4.0.2/bits/stl_heap.h \ + /usr/include/c++/4.0.2/bits/stl_tempbuf.h \ + /usr/include/c++/4.0.2/bits/basic_string.tcc \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/visitstream.h \ + /usr/include/c++/4.0.2/iostream /usr/include/c++/4.0.2/ostream \ + /usr/include/c++/4.0.2/ios /usr/include/c++/4.0.2/bits/localefwd.h \ + /usr/include/c++/4.0.2/bits/ios_base.h \ + /usr/include/c++/4.0.2/bits/locale_classes.h \ + /usr/include/c++/4.0.2/streambuf \ + /usr/include/c++/4.0.2/bits/streambuf.tcc \ + /usr/include/c++/4.0.2/bits/basic_ios.h \ + /usr/include/c++/4.0.2/bits/streambuf_iterator.h \ + /usr/include/c++/4.0.2/bits/locale_facets.h \ + /usr/include/c++/4.0.2/cwctype /usr/include/wctype.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/ctype_base.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/ctype_inline.h \ + /usr/include/c++/4.0.2/bits/codecvt.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/time_members.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/messages_members.h \ + /usr/include/c++/4.0.2/bits/basic_ios.tcc \ + /usr/include/c++/4.0.2/bits/ostream.tcc /usr/include/c++/4.0.2/locale \ + /usr/include/c++/4.0.2/bits/locale_facets.tcc \ + /usr/include/c++/4.0.2/typeinfo /usr/include/c++/4.0.2/istream \ + /usr/include/c++/4.0.2/bits/istream.tcc /usr/include/c++/4.0.2/fstream \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/basic_file.h \ + /usr/include/c++/4.0.2/bits/fstream.tcc \ + /usr/include/c++/4.0.2/backward/strstream \ + /usr/include/c++/4.0.2/backward/backward_warning.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/VisItException.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/misc_exports.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/vectortypes.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/Subject.h +H5PartRandomSampleEnginePluginInfo.o: \ + H5PartRandomSampleEnginePluginInfo.C H5PartRandomSamplePluginInfo.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/OperatorPluginInfo.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/plugin_exports.h \ + /usr/include/stdio.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/gnu/stubs.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/wordsize.h \ + /usr/include/bits/typesizes.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h /usr/include/bits/wchar.h \ + /usr/include/gconv.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/operator_plugin_exports.h \ + avtH5PartRandomSampleFilter.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/avtPluginStreamer.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/pipeline_exports.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/avtStreamer.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/avtDataTreeStreamer.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/avtDatasetToDatasetFilter.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/avtDatasetToDataObjectFilter.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/avtFilter.h \ + /usr/include/c++/4.0.2/vector /usr/include/c++/4.0.2/bits/functexcept.h \ + /usr/include/c++/4.0.2/exception_defines.h \ + /usr/include/c++/4.0.2/bits/stl_algobase.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++config.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/os_defines.h \ + /usr/include/c++/4.0.2/cstring /usr/include/c++/4.0.2/cstddef \ + /usr/include/string.h /usr/include/xlocale.h \ + /usr/include/c++/4.0.2/climits \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/limits.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ + /usr/include/c++/4.0.2/cstdlib /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/bits/sched.h \ + /usr/include/alloca.h /usr/include/c++/4.0.2/iosfwd \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++locale.h \ + /usr/include/c++/4.0.2/cstdio /usr/include/c++/4.0.2/clocale \ + /usr/include/locale.h /usr/include/bits/locale.h \ + /usr/include/langinfo.h /usr/include/nl_types.h /usr/include/iconv.h \ + /usr/include/libintl.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++io.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/gthr.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/gthr-default.h \ + /usr/include/pthread.h /usr/include/sched.h /usr/include/signal.h \ + /usr/include/bits/initspin.h /usr/include/bits/sigthread.h \ + /usr/include/unistd.h /usr/include/bits/posix_opt.h \ + /usr/include/bits/environments.h /usr/include/bits/confname.h \ + /usr/include/getopt.h /usr/include/c++/4.0.2/cctype \ + /usr/include/ctype.h /usr/include/c++/4.0.2/bits/stringfwd.h \ + /usr/include/c++/4.0.2/bits/postypes.h /usr/include/c++/4.0.2/cwchar \ + /usr/include/c++/4.0.2/ctime /usr/include/stdint.h \ + /usr/include/c++/4.0.2/bits/stl_pair.h \ + /usr/include/c++/4.0.2/bits/cpp_type_traits.h \ + /usr/include/c++/4.0.2/bits/stl_iterator_base_types.h \ + /usr/include/c++/4.0.2/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/4.0.2/bits/concept_check.h \ + /usr/include/c++/4.0.2/bits/stl_iterator.h \ + /usr/include/c++/4.0.2/debug/debug.h /usr/include/c++/4.0.2/cassert \ + /usr/include/assert.h /usr/include/c++/4.0.2/bits/allocator.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++allocator.h \ + /usr/include/c++/4.0.2/ext/new_allocator.h /usr/include/c++/4.0.2/new \ + /usr/include/c++/4.0.2/exception \ + /usr/include/c++/4.0.2/bits/stl_construct.h \ + /usr/include/c++/4.0.2/bits/stl_uninitialized.h \ + /usr/include/c++/4.0.2/bits/stl_vector.h \ + /usr/include/c++/4.0.2/bits/stl_bvector.h \ + /usr/include/c++/4.0.2/bits/vector.tcc \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/avtDataObjectSource.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/avtDataObject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/ref_ptr.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/visitstream.h \ + /usr/include/c++/4.0.2/iostream /usr/include/c++/4.0.2/ostream \ + /usr/include/c++/4.0.2/ios /usr/include/c++/4.0.2/bits/char_traits.h \ + /usr/include/c++/4.0.2/bits/localefwd.h \ + /usr/include/c++/4.0.2/bits/ios_base.h \ + /usr/include/c++/4.0.2/bits/atomicity.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/atomic_word.h \ + /usr/include/c++/4.0.2/bits/locale_classes.h \ + /usr/include/c++/4.0.2/string /usr/include/c++/4.0.2/memory \ + /usr/include/c++/4.0.2/bits/stl_raw_storage_iter.h \ + /usr/include/c++/4.0.2/limits \ + /usr/include/c++/4.0.2/bits/stl_function.h \ + /usr/include/c++/4.0.2/bits/basic_string.h \ + /usr/include/c++/4.0.2/algorithm /usr/include/c++/4.0.2/bits/stl_algo.h \ + /usr/include/c++/4.0.2/bits/stl_heap.h \ + /usr/include/c++/4.0.2/bits/stl_tempbuf.h \ + /usr/include/c++/4.0.2/bits/basic_string.tcc \ + /usr/include/c++/4.0.2/streambuf \ + /usr/include/c++/4.0.2/bits/streambuf.tcc \ + /usr/include/c++/4.0.2/bits/basic_ios.h \ + /usr/include/c++/4.0.2/bits/streambuf_iterator.h \ + /usr/include/c++/4.0.2/bits/locale_facets.h \ + /usr/include/c++/4.0.2/cwctype /usr/include/wctype.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/ctype_base.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/ctype_inline.h \ + /usr/include/c++/4.0.2/bits/codecvt.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/time_members.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/messages_members.h \ + /usr/include/c++/4.0.2/bits/basic_ios.tcc \ + /usr/include/c++/4.0.2/bits/ostream.tcc /usr/include/c++/4.0.2/locale \ + /usr/include/c++/4.0.2/bits/locale_facets.tcc \ + /usr/include/c++/4.0.2/typeinfo /usr/include/c++/4.0.2/istream \ + /usr/include/c++/4.0.2/bits/istream.tcc /usr/include/c++/4.0.2/fstream \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/basic_file.h \ + /usr/include/c++/4.0.2/bits/fstream.tcc \ + /usr/include/c++/4.0.2/backward/strstream \ + /usr/include/c++/4.0.2/backward/backward_warning.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/avtDataObjectInformation.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/avtDataAttributes.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/VisWindowTypes.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/avtVector.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/math_exports.h \ + /usr/include/math.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/viswindow_exports.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/avtTypes.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/dbatts_exports.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/avtMatrix.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/avtDataValidity.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/avtPipelineSpecification.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/avtDataSpecification.h \ + /usr/include/c++/4.0.2/map /usr/include/c++/4.0.2/bits/stl_tree.h \ + /usr/include/c++/4.0.2/bits/stl_map.h \ + /usr/include/c++/4.0.2/bits/stl_multimap.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/array_ref_ptr.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/avtSILRestriction.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/avtSIL.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/avtSILCollection.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/avtSILMatrix.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/avtSILSet.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/avtGhostData.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/avtDataSelection.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/ImproperUseException.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/avtexception_exports.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/PipelineException.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/VisItException.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/misc_exports.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/avtDataObjectSink.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/avtDatasetSink.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/avtDataset.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/avtCommonDataFunctions.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/avtDataRepresentation.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/avtDataTree.h \ + /usr/include/c++/4.0.2/set /usr/include/c++/4.0.2/bits/stl_set.h \ + /usr/include/c++/4.0.2/bits/stl_multiset.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/avtDataObjectToDatasetFilter.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/avtDatasetSource.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/avtPluginFilter.h \ + H5PartRandomSampleAttributes.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/AttributeSubject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/state_exports.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/AttributeGroup.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/vectortypes.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/Subject.h +H5PartRandomSampleScriptingPluginInfo.o: \ + H5PartRandomSampleScriptingPluginInfo.C H5PartRandomSamplePluginInfo.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/OperatorPluginInfo.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/plugin_exports.h \ + /usr/include/stdio.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/gnu/stubs.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/wordsize.h \ + /usr/include/bits/typesizes.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h /usr/include/bits/wchar.h \ + /usr/include/gconv.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/bits/stdio.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/operator_plugin_exports.h \ + PyH5PartRandomSampleAttributes.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/python/Python.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/python/patchlevel.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/python/config.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/limits.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ + /usr/include/string.h /usr/include/xlocale.h /usr/include/errno.h \ + /usr/include/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/asm/errno.h /usr/include/asm-x86_64/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/sys/types.h /usr/include/time.h \ + /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/sched.h /usr/include/alloca.h /usr/include/assert.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/python/pyport.h \ + /usr/include/math.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h /usr/include/sys/time.h \ + /usr/include/sys/stat.h /usr/include/bits/stat.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/python/pymem.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/python/object.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/python/objimpl.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/python/pydebug.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/python/unicodeobject.h \ + /usr/include/ctype.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/python/intobject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/python/longobject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/python/floatobject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/python/complexobject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/python/rangeobject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/python/stringobject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/python/bufferobject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/python/tupleobject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/python/listobject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/python/dictobject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/python/methodobject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/python/moduleobject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/python/funcobject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/python/classobject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/python/fileobject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/python/cobject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/python/traceback.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/python/sliceobject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/python/cellobject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/python/codecs.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/python/pyerrors.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/python/pystate.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/python/modsupport.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/python/ceval.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/python/pythonrun.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/python/sysmodule.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/python/intrcheck.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/python/import.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/python/abstract.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/python/pyfpe.h \ + H5PartRandomSampleAttributes.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/AttributeSubject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/state_exports.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/AttributeGroup.h \ + /usr/include/c++/4.0.2/vector /usr/include/c++/4.0.2/bits/functexcept.h \ + /usr/include/c++/4.0.2/exception_defines.h \ + /usr/include/c++/4.0.2/bits/stl_algobase.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++config.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/os_defines.h \ + /usr/include/c++/4.0.2/cstring /usr/include/c++/4.0.2/cstddef \ + /usr/include/c++/4.0.2/climits /usr/include/c++/4.0.2/cstdlib \ + /usr/include/c++/4.0.2/iosfwd \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++locale.h \ + /usr/include/c++/4.0.2/cstdio /usr/include/c++/4.0.2/clocale \ + /usr/include/locale.h /usr/include/bits/locale.h \ + /usr/include/langinfo.h /usr/include/nl_types.h /usr/include/iconv.h \ + /usr/include/libintl.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++io.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/gthr.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/gthr-default.h \ + /usr/include/pthread.h /usr/include/sched.h /usr/include/signal.h \ + /usr/include/bits/initspin.h /usr/include/bits/sigthread.h \ + /usr/include/unistd.h /usr/include/bits/posix_opt.h \ + /usr/include/bits/environments.h /usr/include/bits/confname.h \ + /usr/include/getopt.h /usr/include/c++/4.0.2/cctype \ + /usr/include/ctype.h /usr/include/c++/4.0.2/bits/stringfwd.h \ + /usr/include/c++/4.0.2/bits/postypes.h /usr/include/c++/4.0.2/cwchar \ + /usr/include/c++/4.0.2/ctime /usr/include/stdint.h \ + /usr/include/c++/4.0.2/bits/stl_pair.h \ + /usr/include/c++/4.0.2/bits/cpp_type_traits.h \ + /usr/include/c++/4.0.2/bits/stl_iterator_base_types.h \ + /usr/include/c++/4.0.2/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/4.0.2/bits/concept_check.h \ + /usr/include/c++/4.0.2/bits/stl_iterator.h \ + /usr/include/c++/4.0.2/debug/debug.h /usr/include/c++/4.0.2/cassert \ + /usr/include/c++/4.0.2/bits/allocator.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++allocator.h \ + /usr/include/c++/4.0.2/ext/new_allocator.h /usr/include/c++/4.0.2/new \ + /usr/include/c++/4.0.2/exception \ + /usr/include/c++/4.0.2/bits/stl_construct.h \ + /usr/include/c++/4.0.2/bits/stl_uninitialized.h \ + /usr/include/c++/4.0.2/bits/stl_vector.h \ + /usr/include/c++/4.0.2/bits/stl_bvector.h \ + /usr/include/c++/4.0.2/bits/vector.tcc /usr/include/c++/4.0.2/string \ + /usr/include/c++/4.0.2/bits/char_traits.h /usr/include/c++/4.0.2/memory \ + /usr/include/c++/4.0.2/bits/stl_raw_storage_iter.h \ + /usr/include/c++/4.0.2/limits \ + /usr/include/c++/4.0.2/bits/stl_function.h \ + /usr/include/c++/4.0.2/bits/basic_string.h \ + /usr/include/c++/4.0.2/bits/atomicity.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/atomic_word.h \ + /usr/include/c++/4.0.2/algorithm /usr/include/c++/4.0.2/bits/stl_algo.h \ + /usr/include/c++/4.0.2/bits/stl_heap.h \ + /usr/include/c++/4.0.2/bits/stl_tempbuf.h \ + /usr/include/c++/4.0.2/bits/basic_string.tcc \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/visitstream.h \ + /usr/include/c++/4.0.2/iostream /usr/include/c++/4.0.2/ostream \ + /usr/include/c++/4.0.2/ios /usr/include/c++/4.0.2/bits/localefwd.h \ + /usr/include/c++/4.0.2/bits/ios_base.h \ + /usr/include/c++/4.0.2/bits/locale_classes.h \ + /usr/include/c++/4.0.2/streambuf \ + /usr/include/c++/4.0.2/bits/streambuf.tcc \ + /usr/include/c++/4.0.2/bits/basic_ios.h \ + /usr/include/c++/4.0.2/bits/streambuf_iterator.h \ + /usr/include/c++/4.0.2/bits/locale_facets.h \ + /usr/include/c++/4.0.2/cwctype /usr/include/wctype.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/ctype_base.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/ctype_inline.h \ + /usr/include/c++/4.0.2/bits/codecvt.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/time_members.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/messages_members.h \ + /usr/include/c++/4.0.2/bits/basic_ios.tcc \ + /usr/include/c++/4.0.2/bits/ostream.tcc /usr/include/c++/4.0.2/locale \ + /usr/include/c++/4.0.2/bits/locale_facets.tcc \ + /usr/include/c++/4.0.2/typeinfo /usr/include/c++/4.0.2/istream \ + /usr/include/c++/4.0.2/bits/istream.tcc /usr/include/c++/4.0.2/fstream \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/basic_file.h \ + /usr/include/c++/4.0.2/bits/fstream.tcc \ + /usr/include/c++/4.0.2/backward/strstream \ + /usr/include/c++/4.0.2/backward/backward_warning.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/VisItException.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/misc_exports.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/vectortypes.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/Subject.h +PyH5PartRandomSampleAttributes.o: PyH5PartRandomSampleAttributes.C \ + PyH5PartRandomSampleAttributes.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/python/Python.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/python/patchlevel.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/python/config.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/limits.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/syslimits.h \ + /usr/include/limits.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/gnu/stubs.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ + /usr/include/bits/stdio_lim.h /usr/include/stdio.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/wordsize.h \ + /usr/include/bits/typesizes.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h /usr/include/bits/wchar.h \ + /usr/include/gconv.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/stdarg.h \ + /usr/include/bits/sys_errlist.h /usr/include/bits/stdio.h \ + /usr/include/string.h /usr/include/xlocale.h /usr/include/errno.h \ + /usr/include/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/asm/errno.h /usr/include/asm-x86_64/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/sys/types.h /usr/include/time.h \ + /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/bits/sched.h /usr/include/alloca.h /usr/include/assert.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/python/pyport.h \ + /usr/include/math.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h /usr/include/sys/time.h \ + /usr/include/sys/stat.h /usr/include/bits/stat.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/python/pymem.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/python/object.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/python/objimpl.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/python/pydebug.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/python/unicodeobject.h \ + /usr/include/ctype.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/python/intobject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/python/longobject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/python/floatobject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/python/complexobject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/python/rangeobject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/python/stringobject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/python/bufferobject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/python/tupleobject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/python/listobject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/python/dictobject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/python/methodobject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/python/moduleobject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/python/funcobject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/python/classobject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/python/fileobject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/python/cobject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/python/traceback.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/python/sliceobject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/python/cellobject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/python/codecs.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/python/pyerrors.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/python/pystate.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/python/modsupport.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/python/ceval.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/python/pythonrun.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/python/sysmodule.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/python/intrcheck.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/python/import.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/python/abstract.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/python/pyfpe.h \ + H5PartRandomSampleAttributes.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/AttributeSubject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/state_exports.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/AttributeGroup.h \ + /usr/include/c++/4.0.2/vector /usr/include/c++/4.0.2/bits/functexcept.h \ + /usr/include/c++/4.0.2/exception_defines.h \ + /usr/include/c++/4.0.2/bits/stl_algobase.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++config.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/os_defines.h \ + /usr/include/c++/4.0.2/cstring /usr/include/c++/4.0.2/cstddef \ + /usr/include/c++/4.0.2/climits /usr/include/c++/4.0.2/cstdlib \ + /usr/include/c++/4.0.2/iosfwd \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++locale.h \ + /usr/include/c++/4.0.2/cstdio /usr/include/c++/4.0.2/clocale \ + /usr/include/locale.h /usr/include/bits/locale.h \ + /usr/include/langinfo.h /usr/include/nl_types.h /usr/include/iconv.h \ + /usr/include/libintl.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++io.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/gthr.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/gthr-default.h \ + /usr/include/pthread.h /usr/include/sched.h /usr/include/signal.h \ + /usr/include/bits/initspin.h /usr/include/bits/sigthread.h \ + /usr/include/unistd.h /usr/include/bits/posix_opt.h \ + /usr/include/bits/environments.h /usr/include/bits/confname.h \ + /usr/include/getopt.h /usr/include/c++/4.0.2/cctype \ + /usr/include/ctype.h /usr/include/c++/4.0.2/bits/stringfwd.h \ + /usr/include/c++/4.0.2/bits/postypes.h /usr/include/c++/4.0.2/cwchar \ + /usr/include/c++/4.0.2/ctime /usr/include/stdint.h \ + /usr/include/c++/4.0.2/bits/stl_pair.h \ + /usr/include/c++/4.0.2/bits/cpp_type_traits.h \ + /usr/include/c++/4.0.2/bits/stl_iterator_base_types.h \ + /usr/include/c++/4.0.2/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/4.0.2/bits/concept_check.h \ + /usr/include/c++/4.0.2/bits/stl_iterator.h \ + /usr/include/c++/4.0.2/debug/debug.h /usr/include/c++/4.0.2/cassert \ + /usr/include/c++/4.0.2/bits/allocator.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++allocator.h \ + /usr/include/c++/4.0.2/ext/new_allocator.h /usr/include/c++/4.0.2/new \ + /usr/include/c++/4.0.2/exception \ + /usr/include/c++/4.0.2/bits/stl_construct.h \ + /usr/include/c++/4.0.2/bits/stl_uninitialized.h \ + /usr/include/c++/4.0.2/bits/stl_vector.h \ + /usr/include/c++/4.0.2/bits/stl_bvector.h \ + /usr/include/c++/4.0.2/bits/vector.tcc /usr/include/c++/4.0.2/string \ + /usr/include/c++/4.0.2/bits/char_traits.h /usr/include/c++/4.0.2/memory \ + /usr/include/c++/4.0.2/bits/stl_raw_storage_iter.h \ + /usr/include/c++/4.0.2/limits \ + /usr/include/c++/4.0.2/bits/stl_function.h \ + /usr/include/c++/4.0.2/bits/basic_string.h \ + /usr/include/c++/4.0.2/bits/atomicity.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/atomic_word.h \ + /usr/include/c++/4.0.2/algorithm /usr/include/c++/4.0.2/bits/stl_algo.h \ + /usr/include/c++/4.0.2/bits/stl_heap.h \ + /usr/include/c++/4.0.2/bits/stl_tempbuf.h \ + /usr/include/c++/4.0.2/bits/basic_string.tcc \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/visitstream.h \ + /usr/include/c++/4.0.2/iostream /usr/include/c++/4.0.2/ostream \ + /usr/include/c++/4.0.2/ios /usr/include/c++/4.0.2/bits/localefwd.h \ + /usr/include/c++/4.0.2/bits/ios_base.h \ + /usr/include/c++/4.0.2/bits/locale_classes.h \ + /usr/include/c++/4.0.2/streambuf \ + /usr/include/c++/4.0.2/bits/streambuf.tcc \ + /usr/include/c++/4.0.2/bits/basic_ios.h \ + /usr/include/c++/4.0.2/bits/streambuf_iterator.h \ + /usr/include/c++/4.0.2/bits/locale_facets.h \ + /usr/include/c++/4.0.2/cwctype /usr/include/wctype.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/ctype_base.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/ctype_inline.h \ + /usr/include/c++/4.0.2/bits/codecvt.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/time_members.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/messages_members.h \ + /usr/include/c++/4.0.2/bits/basic_ios.tcc \ + /usr/include/c++/4.0.2/bits/ostream.tcc /usr/include/c++/4.0.2/locale \ + /usr/include/c++/4.0.2/bits/locale_facets.tcc \ + /usr/include/c++/4.0.2/typeinfo /usr/include/c++/4.0.2/istream \ + /usr/include/c++/4.0.2/bits/istream.tcc /usr/include/c++/4.0.2/fstream \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/basic_file.h \ + /usr/include/c++/4.0.2/bits/fstream.tcc \ + /usr/include/c++/4.0.2/backward/strstream \ + /usr/include/c++/4.0.2/backward/backward_warning.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/VisItException.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/misc_exports.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/vectortypes.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/Subject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/ObserverToCallback.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/Observer.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/SimpleObserver.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/ColorAttribute.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/snprintf.h +avtH5PartRandomSampleFilter.o: avtH5PartRandomSampleFilter.C \ + avtH5PartRandomSampleFilter.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/avtPluginStreamer.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/pipeline_exports.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/avtStreamer.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/avtDataTreeStreamer.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/avtDatasetToDatasetFilter.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/avtDatasetToDataObjectFilter.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/avtFilter.h \ + /usr/include/c++/4.0.2/vector /usr/include/c++/4.0.2/bits/functexcept.h \ + /usr/include/c++/4.0.2/exception_defines.h \ + /usr/include/c++/4.0.2/bits/stl_algobase.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++config.h \ + /usr/include/bits/wordsize.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/os_defines.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/gnu/stubs.h /usr/include/c++/4.0.2/cstring \ + /usr/include/c++/4.0.2/cstddef \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/stddef.h \ + /usr/include/string.h /usr/include/xlocale.h \ + /usr/include/c++/4.0.2/climits \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/limits.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ + /usr/include/bits/stdio_lim.h /usr/include/c++/4.0.2/cstdlib \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/sys/types.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/bits/sched.h \ + /usr/include/alloca.h /usr/include/c++/4.0.2/iosfwd \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++locale.h \ + /usr/include/c++/4.0.2/cstdio /usr/include/stdio.h /usr/include/libio.h \ + /usr/include/_G_config.h /usr/include/wchar.h /usr/include/bits/wchar.h \ + /usr/include/gconv.h \ + /usr/lib64/gcc/x86_64-suse-linux/4.0.2/include/stdarg.h \ + /usr/include/bits/sys_errlist.h /usr/include/bits/stdio.h \ + /usr/include/c++/4.0.2/clocale /usr/include/locale.h \ + /usr/include/bits/locale.h /usr/include/langinfo.h \ + /usr/include/nl_types.h /usr/include/iconv.h /usr/include/libintl.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++io.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/gthr.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/gthr-default.h \ + /usr/include/pthread.h /usr/include/sched.h /usr/include/signal.h \ + /usr/include/bits/initspin.h /usr/include/bits/sigthread.h \ + /usr/include/unistd.h /usr/include/bits/posix_opt.h \ + /usr/include/bits/environments.h /usr/include/bits/confname.h \ + /usr/include/getopt.h /usr/include/c++/4.0.2/cctype \ + /usr/include/ctype.h /usr/include/c++/4.0.2/bits/stringfwd.h \ + /usr/include/c++/4.0.2/bits/postypes.h /usr/include/c++/4.0.2/cwchar \ + /usr/include/c++/4.0.2/ctime /usr/include/stdint.h \ + /usr/include/c++/4.0.2/bits/stl_pair.h \ + /usr/include/c++/4.0.2/bits/cpp_type_traits.h \ + /usr/include/c++/4.0.2/bits/stl_iterator_base_types.h \ + /usr/include/c++/4.0.2/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/4.0.2/bits/concept_check.h \ + /usr/include/c++/4.0.2/bits/stl_iterator.h \ + /usr/include/c++/4.0.2/debug/debug.h /usr/include/c++/4.0.2/cassert \ + /usr/include/assert.h /usr/include/c++/4.0.2/bits/allocator.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/c++allocator.h \ + /usr/include/c++/4.0.2/ext/new_allocator.h /usr/include/c++/4.0.2/new \ + /usr/include/c++/4.0.2/exception \ + /usr/include/c++/4.0.2/bits/stl_construct.h \ + /usr/include/c++/4.0.2/bits/stl_uninitialized.h \ + /usr/include/c++/4.0.2/bits/stl_vector.h \ + /usr/include/c++/4.0.2/bits/stl_bvector.h \ + /usr/include/c++/4.0.2/bits/vector.tcc \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/avtDataObjectSource.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/avtDataObject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/ref_ptr.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/visitstream.h \ + /usr/include/c++/4.0.2/iostream /usr/include/c++/4.0.2/ostream \ + /usr/include/c++/4.0.2/ios /usr/include/c++/4.0.2/bits/char_traits.h \ + /usr/include/c++/4.0.2/bits/localefwd.h \ + /usr/include/c++/4.0.2/bits/ios_base.h \ + /usr/include/c++/4.0.2/bits/atomicity.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/atomic_word.h \ + /usr/include/c++/4.0.2/bits/locale_classes.h \ + /usr/include/c++/4.0.2/string /usr/include/c++/4.0.2/memory \ + /usr/include/c++/4.0.2/bits/stl_raw_storage_iter.h \ + /usr/include/c++/4.0.2/limits \ + /usr/include/c++/4.0.2/bits/stl_function.h \ + /usr/include/c++/4.0.2/bits/basic_string.h \ + /usr/include/c++/4.0.2/algorithm /usr/include/c++/4.0.2/bits/stl_algo.h \ + /usr/include/c++/4.0.2/bits/stl_heap.h \ + /usr/include/c++/4.0.2/bits/stl_tempbuf.h \ + /usr/include/c++/4.0.2/bits/basic_string.tcc \ + /usr/include/c++/4.0.2/streambuf \ + /usr/include/c++/4.0.2/bits/streambuf.tcc \ + /usr/include/c++/4.0.2/bits/basic_ios.h \ + /usr/include/c++/4.0.2/bits/streambuf_iterator.h \ + /usr/include/c++/4.0.2/bits/locale_facets.h \ + /usr/include/c++/4.0.2/cwctype /usr/include/wctype.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/ctype_base.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/ctype_inline.h \ + /usr/include/c++/4.0.2/bits/codecvt.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/time_members.h \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/messages_members.h \ + /usr/include/c++/4.0.2/bits/basic_ios.tcc \ + /usr/include/c++/4.0.2/bits/ostream.tcc /usr/include/c++/4.0.2/locale \ + /usr/include/c++/4.0.2/bits/locale_facets.tcc \ + /usr/include/c++/4.0.2/typeinfo /usr/include/c++/4.0.2/istream \ + /usr/include/c++/4.0.2/bits/istream.tcc /usr/include/c++/4.0.2/fstream \ + /usr/include/c++/4.0.2/x86_64-suse-linux/bits/basic_file.h \ + /usr/include/c++/4.0.2/bits/fstream.tcc \ + /usr/include/c++/4.0.2/backward/strstream \ + /usr/include/c++/4.0.2/backward/backward_warning.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/avtDataObjectInformation.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/avtDataAttributes.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/VisWindowTypes.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/avtVector.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/math_exports.h \ + /usr/include/math.h /usr/include/bits/huge_val.h \ + /usr/include/bits/huge_valf.h /usr/include/bits/huge_vall.h \ + /usr/include/bits/inf.h /usr/include/bits/nan.h \ + /usr/include/bits/mathdef.h /usr/include/bits/mathcalls.h \ + /usr/include/bits/mathinline.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/viswindow_exports.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/avtTypes.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/dbatts_exports.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/avtMatrix.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/avtDataValidity.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/avtPipelineSpecification.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/avtDataSpecification.h \ + /usr/include/c++/4.0.2/map /usr/include/c++/4.0.2/bits/stl_tree.h \ + /usr/include/c++/4.0.2/bits/stl_map.h \ + /usr/include/c++/4.0.2/bits/stl_multimap.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/array_ref_ptr.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/avtSILRestriction.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/avtSIL.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/avtSILCollection.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/avtSILMatrix.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/avtSILSet.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/avtGhostData.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/avtDataSelection.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/ImproperUseException.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/avtexception_exports.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/PipelineException.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/VisItException.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/misc_exports.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/avtDataObjectSink.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/avtDatasetSink.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/avtDataset.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/avtCommonDataFunctions.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/avtDataRepresentation.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/avtDataTree.h \ + /usr/include/c++/4.0.2/set /usr/include/c++/4.0.2/bits/stl_set.h \ + /usr/include/c++/4.0.2/bits/stl_multiset.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/avtDataObjectToDatasetFilter.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/avtDatasetSource.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/avtPluginFilter.h \ + H5PartRandomSampleAttributes.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/AttributeSubject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/state_exports.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/AttributeGroup.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/vectortypes.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/Subject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/vtk/Common/vtkDataSet.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/vtk/Common/vtkDataObject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/vtk/Common/vtkObject.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/vtk/Common/vtkObjectBase.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/vtk/Common/vtkIndent.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/vtk/Common/vtkSystemIncludes.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/vtk/Common/vtkWin32Header.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/vtk/vtkConfigure.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/vtk/Common/vtkIOStream.h \ + /usr/include/c++/4.0.2/iomanip /usr/include/c++/4.0.2/functional \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/vtk/Common/vtkIdType.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/vtk/Common/vtkOStreamWrapper.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/vtk/Common/vtkOStrStreamWrapper.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/vtk/Common/vtkSetGet.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/vtk/Common/vtkTimeStamp.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/vtk/Common/vtkPolyData.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/vtk/Common/vtkPointSet.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/vtk/Common/vtkDataSet.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/vtk/Common/vtkPoints.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/vtk/Common/vtkDataArray.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/vtk/Common/vtkCellTypes.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/vtk/Common/vtkIntArray.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/vtk/Common/vtkUnsignedCharArray.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/vtk/Common/vtkCellType.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/vtk/Common/vtkCellLinks.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/vtk/Common/vtkPointData.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/vtk/Common/vtkDataSetAttributes.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/vtk/Common/vtkFieldData.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/vtkVisItUtility.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/visit/visit_vtk_light_exports.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/vtk/Common/vtkIdTypeArray.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/vtk/Common/vtkCell.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/vtk/Common/vtkIdList.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/vtk/Common/vtkCellData.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/vtk/Filtering/vtkCellLocator.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/vtk/Common/vtkLocator.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/vtk/Common/vtkGenericCell.h \ + /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64//include/vtk/Common/vtkCell.h diff --git a/visit_plugins/operators/RandomSample/H5PartRandomSampleAttributes.C b/visit_plugins/operators/RandomSample/H5PartRandomSampleAttributes.C new file mode 100644 index 0000000..5460d7c --- /dev/null +++ b/visit_plugins/operators/RandomSample/H5PartRandomSampleAttributes.C @@ -0,0 +1,470 @@ +#include +#include + +// **************************************************************************** +// Method: H5PartRandomSampleAttributes::H5PartRandomSampleAttributes +// +// Purpose: +// Constructor for the H5PartRandomSampleAttributes class. +// +// Note: Autogenerated by xml2atts. +// +// Programmer: xml2atts +// Creation: Thu Mar 16 10:26:55 PDT 2006 +// +// Modifications: +// +// **************************************************************************** + +H5PartRandomSampleAttributes::H5PartRandomSampleAttributes() : AttributeSubject("f") +{ + factor = 1; +} + +// **************************************************************************** +// Method: H5PartRandomSampleAttributes::H5PartRandomSampleAttributes +// +// Purpose: +// Copy constructor for the H5PartRandomSampleAttributes class. +// +// Note: Autogenerated by xml2atts. +// +// Programmer: xml2atts +// Creation: Thu Mar 16 10:26:55 PDT 2006 +// +// Modifications: +// +// **************************************************************************** + +H5PartRandomSampleAttributes::H5PartRandomSampleAttributes(const H5PartRandomSampleAttributes &obj) : AttributeSubject("f") +{ + factor = obj.factor; + + SelectAll(); +} + +// **************************************************************************** +// Method: H5PartRandomSampleAttributes::~H5PartRandomSampleAttributes +// +// Purpose: +// Destructor for the H5PartRandomSampleAttributes class. +// +// Note: Autogenerated by xml2atts. +// +// Programmer: xml2atts +// Creation: Thu Mar 16 10:26:55 PDT 2006 +// +// Modifications: +// +// **************************************************************************** + +H5PartRandomSampleAttributes::~H5PartRandomSampleAttributes() +{ + // nothing here +} + +// **************************************************************************** +// Method: H5PartRandomSampleAttributes::operator = +// +// Purpose: +// Assignment operator for the H5PartRandomSampleAttributes class. +// +// Note: Autogenerated by xml2atts. +// +// Programmer: xml2atts +// Creation: Thu Mar 16 10:26:55 PDT 2006 +// +// Modifications: +// +// **************************************************************************** + +H5PartRandomSampleAttributes& +H5PartRandomSampleAttributes::operator = (const H5PartRandomSampleAttributes &obj) +{ + if (this == &obj) return *this; + factor = obj.factor; + + SelectAll(); + return *this; +} + +// **************************************************************************** +// Method: H5PartRandomSampleAttributes::operator == +// +// Purpose: +// Comparison operator == for the H5PartRandomSampleAttributes class. +// +// Note: Autogenerated by xml2atts. +// +// Programmer: xml2atts +// Creation: Thu Mar 16 10:26:55 PDT 2006 +// +// Modifications: +// +// **************************************************************************** + +bool +H5PartRandomSampleAttributes::operator == (const H5PartRandomSampleAttributes &obj) const +{ + // Create the return value + return ((factor == obj.factor)); +} + +// **************************************************************************** +// Method: H5PartRandomSampleAttributes::operator != +// +// Purpose: +// Comparison operator != for the H5PartRandomSampleAttributes class. +// +// Note: Autogenerated by xml2atts. +// +// Programmer: xml2atts +// Creation: Thu Mar 16 10:26:55 PDT 2006 +// +// Modifications: +// +// **************************************************************************** + +bool +H5PartRandomSampleAttributes::operator != (const H5PartRandomSampleAttributes &obj) const +{ + return !(this->operator == (obj)); +} + +// **************************************************************************** +// Method: H5PartRandomSampleAttributes::TypeName +// +// Purpose: +// Type name method for the H5PartRandomSampleAttributes class. +// +// Note: Autogenerated by xml2atts. +// +// Programmer: xml2atts +// Creation: Thu Mar 16 10:26:55 PDT 2006 +// +// Modifications: +// +// **************************************************************************** + +const std::string +H5PartRandomSampleAttributes::TypeName() const +{ + return "H5PartRandomSampleAttributes"; +} + +// **************************************************************************** +// Method: H5PartRandomSampleAttributes::CopyAttributes +// +// Purpose: +// CopyAttributes method for the H5PartRandomSampleAttributes class. +// +// Note: Autogenerated by xml2atts. +// +// Programmer: xml2atts +// Creation: Thu Mar 16 10:26:55 PDT 2006 +// +// Modifications: +// +// **************************************************************************** + +bool +H5PartRandomSampleAttributes::CopyAttributes(const AttributeGroup *atts) +{ + if(TypeName() != atts->TypeName()) + return false; + + // Call assignment operator. + const H5PartRandomSampleAttributes *tmp = (const H5PartRandomSampleAttributes *)atts; + *this = *tmp; + + return true; +} + +// **************************************************************************** +// Method: H5PartRandomSampleAttributes::CreateCompatible +// +// Purpose: +// CreateCompatible method for the H5PartRandomSampleAttributes class. +// +// Note: Autogenerated by xml2atts. +// +// Programmer: xml2atts +// Creation: Thu Mar 16 10:26:55 PDT 2006 +// +// Modifications: +// +// **************************************************************************** + +AttributeSubject * +H5PartRandomSampleAttributes::CreateCompatible(const std::string &tname) const +{ + AttributeSubject *retval = 0; + if(TypeName() == tname) + retval = new H5PartRandomSampleAttributes(*this); + // Other cases could go here too. + + return retval; +} + +// **************************************************************************** +// Method: H5PartRandomSampleAttributes::NewInstance +// +// Purpose: +// NewInstance method for the H5PartRandomSampleAttributes class. +// +// Note: Autogenerated by xml2atts. +// +// Programmer: xml2atts +// Creation: Thu Mar 16 10:26:55 PDT 2006 +// +// Modifications: +// +// **************************************************************************** + +AttributeSubject * +H5PartRandomSampleAttributes::NewInstance(bool copy) const +{ + AttributeSubject *retval = 0; + if(copy) + retval = new H5PartRandomSampleAttributes(*this); + else + retval = new H5PartRandomSampleAttributes; + + return retval; +} + +// **************************************************************************** +// Method: H5PartRandomSampleAttributes::SelectAll +// +// Purpose: +// Selects all attributes. +// +// Note: Autogenerated by xml2atts. +// +// Programmer: xml2atts +// Creation: Thu Mar 16 10:26:55 PDT 2006 +// +// Modifications: +// +// **************************************************************************** + +void +H5PartRandomSampleAttributes::SelectAll() +{ + Select(0, (void *)&factor); +} + +/////////////////////////////////////////////////////////////////////////////// +// Persistence methods +/////////////////////////////////////////////////////////////////////////////// + +// **************************************************************************** +// Method: H5PartRandomSampleAttributes::CreateNode +// +// Purpose: +// This method creates a DataNode representation of the object so it can be saved to a config file. +// +// Note: Autogenerated by xml2atts. +// +// Programmer: xml2atts +// Creation: Thu Mar 16 10:26:55 PDT 2006 +// +// Modifications: +// +// **************************************************************************** + +bool +H5PartRandomSampleAttributes::CreateNode(DataNode *parentNode, bool completeSave, bool forceAdd) +{ + if(parentNode == 0) + return false; + + H5PartRandomSampleAttributes defaultObject; + bool addToParent = false; + // Create a node for H5PartRandomSampleAttributes. + DataNode *node = new DataNode("H5PartRandomSampleAttributes"); + + if(completeSave || !FieldsEqual(0, &defaultObject)) + { + addToParent = true; + node->AddNode(new DataNode("factor", factor)); + } + + + // Add the node to the parent node. + if(addToParent || forceAdd) + parentNode->AddNode(node); + else + delete node; + + return (addToParent || forceAdd); +} + +// **************************************************************************** +// Method: H5PartRandomSampleAttributes::SetFromNode +// +// Purpose: +// This method sets attributes in this object from values in a DataNode representation of the object. +// +// Note: Autogenerated by xml2atts. +// +// Programmer: xml2atts +// Creation: Thu Mar 16 10:26:55 PDT 2006 +// +// Modifications: +// +// **************************************************************************** + +void +H5PartRandomSampleAttributes::SetFromNode(DataNode *parentNode) +{ + int i; + if(parentNode == 0) + return; + + DataNode *searchNode = parentNode->GetNode("H5PartRandomSampleAttributes"); + if(searchNode == 0) + return; + + DataNode *node; + if((node = searchNode->GetNode("factor")) != 0) + SetFactor(node->AsFloat()); +} + +/////////////////////////////////////////////////////////////////////////////// +// Set property methods +/////////////////////////////////////////////////////////////////////////////// + +void +H5PartRandomSampleAttributes::SetFactor(float factor_) +{ + factor = factor_; + Select(0, (void *)&factor); +} + +/////////////////////////////////////////////////////////////////////////////// +// Get property methods +/////////////////////////////////////////////////////////////////////////////// + +float +H5PartRandomSampleAttributes::GetFactor() const +{ + return factor; +} + +/////////////////////////////////////////////////////////////////////////////// +// Keyframing methods +/////////////////////////////////////////////////////////////////////////////// + +// **************************************************************************** +// Method: H5PartRandomSampleAttributes::GetFieldName +// +// Purpose: +// This method returns the name of a field given its index. +// +// Note: Autogenerated by xml2atts. +// +// Programmer: xml2atts +// Creation: Thu Mar 16 10:26:55 PDT 2006 +// +// Modifications: +// +// **************************************************************************** + +std::string +H5PartRandomSampleAttributes::GetFieldName(int index) const +{ + switch (index) + { + case 0: return "factor"; + default: return "invalid index"; + } +} + +// **************************************************************************** +// Method: H5PartRandomSampleAttributes::GetFieldType +// +// Purpose: +// This method returns the type of a field given its index. +// +// Note: Autogenerated by xml2atts. +// +// Programmer: xml2atts +// Creation: Thu Mar 16 10:26:55 PDT 2006 +// +// Modifications: +// +// **************************************************************************** + +AttributeGroup::FieldType +H5PartRandomSampleAttributes::GetFieldType(int index) const +{ + switch (index) + { + case 0: return FieldType_float; + default: return FieldType_unknown; + } +} + +// **************************************************************************** +// Method: H5PartRandomSampleAttributes::GetFieldTypeName +// +// Purpose: +// This method returns the name of a field type given its index. +// +// Note: Autogenerated by xml2atts. +// +// Programmer: xml2atts +// Creation: Thu Mar 16 10:26:55 PDT 2006 +// +// Modifications: +// +// **************************************************************************** + +std::string +H5PartRandomSampleAttributes::GetFieldTypeName(int index) const +{ + switch (index) + { + case 0: return "float"; + default: return "invalid index"; + } +} + +// **************************************************************************** +// Method: H5PartRandomSampleAttributes::FieldsEqual +// +// Purpose: +// This method compares two fields and return true if they are equal. +// +// Note: Autogenerated by xml2atts. +// +// Programmer: xml2atts +// Creation: Thu Mar 16 10:26:55 PDT 2006 +// +// Modifications: +// +// **************************************************************************** + +bool +H5PartRandomSampleAttributes::FieldsEqual(int index_, const AttributeGroup *rhs) const +{ + const H5PartRandomSampleAttributes &obj = *((const H5PartRandomSampleAttributes*)rhs); + bool retval = false; + switch (index_) + { + case 0: + { // new scope + retval = (factor == obj.factor); + } + break; + default: retval = false; + } + + return retval; +} + +/////////////////////////////////////////////////////////////////////////////// +// User-defined methods. +/////////////////////////////////////////////////////////////////////////////// + diff --git a/visit_plugins/operators/RandomSample/H5PartRandomSampleAttributes.h b/visit_plugins/operators/RandomSample/H5PartRandomSampleAttributes.h new file mode 100644 index 0000000..e4c29be --- /dev/null +++ b/visit_plugins/operators/RandomSample/H5PartRandomSampleAttributes.h @@ -0,0 +1,60 @@ +#ifndef H5PARTRANDOMSAMPLEATTRIBUTES_H +#define H5PARTRANDOMSAMPLEATTRIBUTES_H +#include + +// **************************************************************************** +// Class: H5PartRandomSampleAttributes +// +// Purpose: +// Randomly reduce an H5Part point mesh +// +// Notes: Autogenerated by xml2atts. +// +// Programmer: xml2atts +// Creation: Thu Mar 16 10:26:55 PDT 2006 +// +// Modifications: +// +// **************************************************************************** + +class H5PartRandomSampleAttributes : public AttributeSubject +{ +public: + H5PartRandomSampleAttributes(); + H5PartRandomSampleAttributes(const H5PartRandomSampleAttributes &obj); + virtual ~H5PartRandomSampleAttributes(); + + virtual H5PartRandomSampleAttributes& operator = (const H5PartRandomSampleAttributes &obj); + virtual bool operator == (const H5PartRandomSampleAttributes &obj) const; + virtual bool operator != (const H5PartRandomSampleAttributes &obj) const; + + virtual const std::string TypeName() const; + virtual bool CopyAttributes(const AttributeGroup *); + virtual AttributeSubject *CreateCompatible(const std::string &) const; + virtual AttributeSubject *NewInstance(bool) const; + + // Property selection methods + virtual void SelectAll(); + + // Property setting methods + void SetFactor(float factor_); + + // Property getting methods + float GetFactor() const; + + // Persistence methods + virtual bool CreateNode(DataNode *node, bool completeSave, bool forceAdd); + virtual void SetFromNode(DataNode *node); + + + // Keyframing methods + virtual std::string GetFieldName(int index) const; + virtual AttributeGroup::FieldType GetFieldType(int index) const; + virtual std::string GetFieldTypeName(int index) const; + virtual bool FieldsEqual(int index, const AttributeGroup *rhs) const; + +private: + float factor; +}; + +#endif diff --git a/visit_plugins/operators/RandomSample/H5PartRandomSampleAttributes.java b/visit_plugins/operators/RandomSample/H5PartRandomSampleAttributes.java new file mode 100644 index 0000000..d2b73d8 --- /dev/null +++ b/visit_plugins/operators/RandomSample/H5PartRandomSampleAttributes.java @@ -0,0 +1,76 @@ +package llnl.visit.operators; + +import llnl.visit.AttributeSubject; +import llnl.visit.CommunicationBuffer; +import llnl.visit.Plugin; + +// **************************************************************************** +// Class: H5PartRandomSampleAttributes +// +// Purpose: +// Randomly reduce an H5Part point mesh +// +// Notes: Autogenerated by xml2java. +// +// Programmer: xml2java +// Creation: Thu Mar 16 10:26:56 PDT 2006 +// +// Modifications: +// +// **************************************************************************** + +public class H5PartRandomSampleAttributes extends AttributeSubject implements Plugin +{ + public H5PartRandomSampleAttributes() + { + super(1); + + factor = 1f; + } + + public H5PartRandomSampleAttributes(H5PartRandomSampleAttributes obj) + { + super(1); + + factor = obj.factor; + + SelectAll(); + } + + public boolean equals(H5PartRandomSampleAttributes obj) + { + // Create the return value + return ((factor == obj.factor)); + } + + public String GetName() { return "H5PartRandomSample"; } + public String GetVersion() { return "1.0"; } + + // Property setting methods + public void SetFactor(float factor_) + { + factor = factor_; + Select(0); + } + + // Property getting methods + public float GetFactor() { return factor; } + + // Write and read methods. + public void WriteAtts(CommunicationBuffer buf) + { + if(WriteSelect(0, buf)) + buf.WriteFloat(factor); + } + + public void ReadAtts(int n, CommunicationBuffer buf) + { + buf.ReadByte(); + SetFactor(buf.ReadFloat()); + } + + + // Attributes + private float factor; +} + diff --git a/visit_plugins/operators/RandomSample/H5PartRandomSampleCommonPluginInfo.C b/visit_plugins/operators/RandomSample/H5PartRandomSampleCommonPluginInfo.C new file mode 100644 index 0000000..25a6873 --- /dev/null +++ b/visit_plugins/operators/RandomSample/H5PartRandomSampleCommonPluginInfo.C @@ -0,0 +1,47 @@ +// ************************************************************************* // +// File: H5PartRandomSampleCommonPluginInfo.C +// ************************************************************************* // + +#include +#include + +// **************************************************************************** +// Method: H5PartRandomSampleCommonPluginInfo::AllocAttributes +// +// Purpose: +// Return a pointer to a newly allocated attribute subject. +// +// Returns: A pointer to the newly allocated attribute subject. +// +// Programmer: cristina -- generated by xml2info +// Creation: Thu Mar 16 10:26:55 PDT 2006 +// +// **************************************************************************** + +AttributeSubject * +H5PartRandomSampleCommonPluginInfo::AllocAttributes() +{ + return new H5PartRandomSampleAttributes; +} + +// **************************************************************************** +// Method: H5PartRandomSampleCommonPluginInfo::CopyAttributes +// +// Purpose: +// Copy a H5PartRandomSample attribute subject. +// +// Arguments: +// to The destination attribute subject. +// from The source attribute subject. +// +// Programmer: cristina -- generated by xml2info +// Creation: Thu Mar 16 10:26:55 PDT 2006 +// +// **************************************************************************** + +void +H5PartRandomSampleCommonPluginInfo::CopyAttributes(AttributeSubject *to, + AttributeSubject *from) +{ + *((H5PartRandomSampleAttributes *) to) = *((H5PartRandomSampleAttributes *) from); +} diff --git a/visit_plugins/operators/RandomSample/H5PartRandomSampleEnginePluginInfo.C b/visit_plugins/operators/RandomSample/H5PartRandomSampleEnginePluginInfo.C new file mode 100644 index 0000000..557345b --- /dev/null +++ b/visit_plugins/operators/RandomSample/H5PartRandomSampleEnginePluginInfo.C @@ -0,0 +1,44 @@ +// ************************************************************************* // +// File: H5PartRandomSampleEnginePluginInfo.C +// ************************************************************************* // + +#include +#include + +#if defined(__APPLE__) +#define GetEngineInfo H5PartRandomSample_GetEngineInfo +#endif + +// **************************************************************************** +// Function: GetEngineInfo +// +// Purpose: +// Return a new EnginePluginInfo for the H5PartRandomSample operator. +// +// Programmer: cristina -- generated by xml2info +// Creation: Thu Mar 16 10:26:55 PDT 2006 +// +// **************************************************************************** +extern "C" EngineOperatorPluginInfo* GetEngineInfo() +{ + return new H5PartRandomSampleEnginePluginInfo; +} + +// **************************************************************************** +// Method: H5PartRandomSampleEnginePluginInfo::AllocAvtPluginFilter +// +// Purpose: +// Return a pointer to a newly allocated avtPluginFilter. +// +// Returns: A pointer to the newly allocated avtPluginFilter. +// +// Programmer: cristina -- generated by xml2info +// Creation: Thu Mar 16 10:26:55 PDT 2006 +// +// **************************************************************************** + +avtPluginFilter * +H5PartRandomSampleEnginePluginInfo::AllocAvtPluginFilter() +{ + return new avtH5PartRandomSampleFilter; +} diff --git a/visit_plugins/operators/RandomSample/H5PartRandomSampleGUIPluginInfo.C b/visit_plugins/operators/RandomSample/H5PartRandomSampleGUIPluginInfo.C new file mode 100644 index 0000000..07ba3bc --- /dev/null +++ b/visit_plugins/operators/RandomSample/H5PartRandomSampleGUIPluginInfo.C @@ -0,0 +1,92 @@ +// ************************************************************************* // +// File: H5PartRandomSampleGUIPluginInfo.C +// ************************************************************************* // + +#include +#include +#include + +#if defined(__APPLE__) +#define GetGUIInfo H5PartRandomSample_GetGUIInfo +#endif + +// **************************************************************************** +// Function: GetGUIInfo +// +// Purpose: +// Return a new GUIPluginInfo for the H5PartRandomSample operator. +// +// Programmer: cristina -- generated by xml2info +// Creation: Thu Mar 16 10:29:14 PDT 2006 +// +// **************************************************************************** +extern "C" GUIOperatorPluginInfo* GetGUIInfo() +{ + return new H5PartRandomSampleGUIPluginInfo; +} + +// **************************************************************************** +// Method: H5PartRandomSampleGUIPluginInfo::GetMenuName +// +// Purpose: +// Return a pointer to the name to use in the GUI menu. +// +// Returns: A pointer to the name to use in the GUI menu. +// +// Programmer: cristina -- generated by xml2info +// Creation: Thu Mar 16 10:29:14 PDT 2006 +// +// **************************************************************************** + +const char * +H5PartRandomSampleGUIPluginInfo::GetMenuName() const +{ + return "H5PartRandomSample"; +} + + +// **************************************************************************** +// Method: H5PartRandomSampleGUIPluginInfo::CreatePluginWindow +// +// Purpose: +// Return a pointer to an operator's attribute window. +// +// Arguments: +// type The type of the operator. +// attr The attribute subject for the operator. +// notepad The notepad to use for posting the window. +// +// Returns: A pointer to the operator's attribute window. +// +// Programmer: cristina -- generated by xml2info +// Creation: Thu Mar 16 10:29:14 PDT 2006 +// +// **************************************************************************** + +QvisPostableWindowObserver * +H5PartRandomSampleGUIPluginInfo::CreatePluginWindow(int type, AttributeSubject *attr, + QvisNotepadArea *notepad) +{ + return new QvisH5PartRandomSampleWindow(type, (H5PartRandomSampleAttributes *)attr, + "H5PartRandomSample operator attributes", "H5PartRandomSample operator", notepad); +} + +// **************************************************************************** +// Method: H5PartRandomSampleGUIPluginInfo::XPMIconData +// +// Purpose: +// Return a pointer to the icon data. +// +// Returns: A pointer to the icon data. +// +// Programmer: cristina -- generated by xml2info +// Creation: Thu Mar 16 10:29:14 PDT 2006 +// +// **************************************************************************** + +#include +const char ** +H5PartRandomSampleGUIPluginInfo::XPMIconData() const +{ + return icon_xpm; +} diff --git a/visit_plugins/operators/RandomSample/H5PartRandomSamplePluginInfo.C b/visit_plugins/operators/RandomSample/H5PartRandomSamplePluginInfo.C new file mode 100644 index 0000000..414f6d6 --- /dev/null +++ b/visit_plugins/operators/RandomSample/H5PartRandomSamplePluginInfo.C @@ -0,0 +1,107 @@ +// ************************************************************************* // +// File: H5PartRandomSamplePluginInfo.C +// ************************************************************************* // + +#include +#include + +#include +#if defined(__APPLE__) +extern "C" const char *H5PartRandomSampleVisItPluginVersion = VERSION; +#else +extern "C" const char *VisItPluginVersion = VERSION; +#endif + +#if defined(__APPLE__) +#define GetGeneralInfo H5PartRandomSample_GetGeneralInfo +#endif + +// **************************************************************************** +// Function: GetGeneralInfo +// +// Purpose: +// Return a new GeneralPluginInfo for the H5PartRandomSample operator. +// +// Programmer: cristina -- generated by xml2info +// Creation: Thu Mar 16 10:26:55 PDT 2006 +// +// **************************************************************************** +extern "C" GeneralOperatorPluginInfo* GetGeneralInfo() +{ + return new H5PartRandomSampleGeneralPluginInfo; +} + +// **************************************************************************** +// Method: H5PartRandomSampleGeneralPluginInfo::GetName +// +// Purpose: +// Return the name of the operator plugin. +// +// Returns: A pointer to the name of the operator plugin. +// +// Programmer: cristina -- generated by xml2info +// Creation: Thu Mar 16 10:26:55 PDT 2006 +// +// **************************************************************************** + +char * +H5PartRandomSampleGeneralPluginInfo::GetName() const +{ + return "H5PartRandomSample"; +} + +// **************************************************************************** +// Method: H5PartRandomSampleGeneralPluginInfo::GetVersion +// +// Purpose: +// Return the version of the operator plugin. +// +// Returns: A pointer to the version of the operator plugin. +// +// Programmer: cristina -- generated by xml2info +// Creation: Thu Mar 16 10:26:55 PDT 2006 +// +// **************************************************************************** + +char * +H5PartRandomSampleGeneralPluginInfo::GetVersion() const +{ + return "1.0"; +} + +// **************************************************************************** +// Method: H5PartRandomSampleGeneralPluginInfo::GetID +// +// Purpose: +// Return the id of the operator plugin. +// +// Returns: A pointer to the id of the operator plugin. +// +// Programmer: cristina -- generated by xml2info +// Creation: Thu Mar 16 10:26:55 PDT 2006 +// +// **************************************************************************** + +char * +H5PartRandomSampleGeneralPluginInfo::GetID() const +{ + return "H5PartRandomSample_1.0"; +} +// **************************************************************************** +// Method: H5PartRandomSampleGeneralPluginInfo::EnabledByDefault +// +// Purpose: +// Return true if this plugin should be enabled by default; false otherwise. +// +// Returns: true/false +// +// Programmer: cristina -- generated by xml2info +// Creation: Thu Mar 16 10:26:55 PDT 2006 +// +// **************************************************************************** + +bool +H5PartRandomSampleGeneralPluginInfo::EnabledByDefault() const +{ + return true; +} diff --git a/visit_plugins/operators/RandomSample/H5PartRandomSamplePluginInfo.h b/visit_plugins/operators/RandomSample/H5PartRandomSamplePluginInfo.h new file mode 100644 index 0000000..def4701 --- /dev/null +++ b/visit_plugins/operators/RandomSample/H5PartRandomSamplePluginInfo.h @@ -0,0 +1,85 @@ +// ************************************************************************* // +// File: H5PartRandomSamplePluginInfo.h +// ************************************************************************* // + +#ifndef H5PARTRANDOMSAMPLE_PLUGIN_INFO_H +#define H5PARTRANDOMSAMPLE_PLUGIN_INFO_H +#include +#include + +class H5PartRandomSampleAttributes; + +// **************************************************************************** +// Class: H5PartRandomSamplePluginInfo +// +// Purpose: +// Five classes that provide all the information about an H5PartRandomSample operator +// +// Programmer: cristina -- generated by xml2info +// Creation: Thu Mar 16 10:26:55 PDT 2006 +// +// Modifications: +// +// **************************************************************************** + +class H5PartRandomSampleGeneralPluginInfo : public virtual GeneralOperatorPluginInfo +{ + public: + virtual char *GetName() const; + virtual char *GetVersion() const; + virtual char *GetID() const; + virtual bool EnabledByDefault() const; +}; + +class H5PartRandomSampleCommonPluginInfo : public virtual CommonOperatorPluginInfo, public virtual H5PartRandomSampleGeneralPluginInfo +{ + public: + virtual AttributeSubject *AllocAttributes(); + virtual void CopyAttributes(AttributeSubject *to, AttributeSubject *from); +}; + +class H5PartRandomSampleGUIPluginInfo : public virtual GUIOperatorPluginInfo, public virtual H5PartRandomSampleCommonPluginInfo +{ + public: + virtual const char *GetMenuName() const; + virtual QvisPostableWindowObserver *CreatePluginWindow(int type, + AttributeSubject *attr, QvisNotepadArea *notepad); + virtual const char **XPMIconData() const; +}; + +class H5PartRandomSampleViewerPluginInfo : public virtual ViewerOperatorPluginInfo, public virtual H5PartRandomSampleCommonPluginInfo +{ + public: + virtual AttributeSubject *GetClientAtts(); + virtual AttributeSubject *GetDefaultAtts(); + virtual void SetClientAtts(AttributeSubject *atts); + virtual void GetClientAtts(AttributeSubject *atts); + + virtual void InitializeOperatorAtts(AttributeSubject *atts, + const ViewerPlot *plot, + const bool fromDefault); + virtual const char **XPMIconData() const; + + static void InitializeGlobalObjects(); + private: + static H5PartRandomSampleAttributes *defaultAtts; + static H5PartRandomSampleAttributes *clientAtts; +}; + +class H5PartRandomSampleEnginePluginInfo : public virtual EngineOperatorPluginInfo, public virtual H5PartRandomSampleCommonPluginInfo +{ + public: + virtual avtPluginFilter *AllocAvtPluginFilter(); +}; + +class H5PartRandomSampleScriptingPluginInfo : public virtual ScriptingOperatorPluginInfo, public virtual H5PartRandomSampleCommonPluginInfo +{ + public: + virtual void InitializePlugin(AttributeSubject *subj, void *data); + virtual void *GetMethodTable(int *nMethods); + virtual bool TypesMatch(void *pyobject); + virtual char *GetLogString(); + virtual void SetDefaults(const AttributeSubject *atts); +}; + +#endif diff --git a/visit_plugins/operators/RandomSample/H5PartRandomSampleScriptingPluginInfo.C b/visit_plugins/operators/RandomSample/H5PartRandomSampleScriptingPluginInfo.C new file mode 100644 index 0000000..fd10ab0 --- /dev/null +++ b/visit_plugins/operators/RandomSample/H5PartRandomSampleScriptingPluginInfo.C @@ -0,0 +1,142 @@ +// ************************************************************************* // +// H5PartRandomSampleScriptingPluginInfo.C +// ************************************************************************* // +#include +#include + +#if defined(__APPLE__) +#define GetScriptingInfo H5PartRandomSample_GetScriptingInfo +#endif + +// **************************************************************************** +// Function: GetScriptingInfo +// +// Purpose: +// Return a new ScriptingPluginInfo for the H5PartRandomSample plot. +// +// Programmer: cristina -- generated by xml2info +// Creation: Thu Mar 16 10:26:55 PDT 2006 +// +// **************************************************************************** +extern "C" ScriptingOperatorPluginInfo* GetScriptingInfo() +{ + return new H5PartRandomSampleScriptingPluginInfo; +} + +// **************************************************************************** +// Method: H5PartRandomSampleScriptingPluginInfo::InitializePlugin +// +// Purpose: +// Calls the initialization function for the plugin. +// +// Arguments: +// subj : A pointer to the plugin's state object. +// data : A pointer to data to be used by the observer function. +// +// Programmer: cristina -- generated by xml2info +// Creation: Thu Mar 16 10:26:55 PDT 2006 +// +// Modifications: +// +// **************************************************************************** + +void +H5PartRandomSampleScriptingPluginInfo::InitializePlugin(AttributeSubject *subj, + void *data) +{ + PyH5PartRandomSampleAttributes_StartUp((H5PartRandomSampleAttributes *)subj, data); +} + +// **************************************************************************** +// Method: H5PartRandomSampleScriptingPluginInfo::GetMethodTable +// +// Purpose: +// Returns a pointer to the plugin's Python method table. These methods are +// added to the top-level visit module's methods. +// +// Arguments: +// nMethods : Returns the number of methods in the method table. +// +// Returns: A pointer to the method table. +// +// Programmer: cristina -- generated by xml2info +// Creation: Thu Mar 16 10:26:55 PDT 2006 +// +// Modifications: +// +// **************************************************************************** + +void * +H5PartRandomSampleScriptingPluginInfo::GetMethodTable(int *nMethods) +{ + return PyH5PartRandomSampleAttributes_GetMethodTable(nMethods); +} + +// **************************************************************************** +// Method: H5PartRandomSampleScriptingPluginInfo::TypesMatch +// +// Purpose: +// Returns whether or not the input PyObject is H5PartRandomSample plot attributes. +// +// Arguments: +// pyobject : A PyObject cast to void*. +// +// Programmer: cristina -- generated by xml2info +// Creation: Thu Mar 16 10:26:55 PDT 2006 +// +// Modifications: +// +// **************************************************************************** + +bool +H5PartRandomSampleScriptingPluginInfo::TypesMatch(void *pyobject) +{ + return PyH5PartRandomSampleAttributes_Check((PyObject *)pyobject); +} + +// **************************************************************************** +// Method: H5PartRandomSampleScriptingPluginInfo::GetLogString +// +// Purpose: +// Gets a string representation of the current attributes. +// +// Arguments: +// val : Whether or not to log state information. +// +// Programmer: cristina -- generated by xml2info +// Creation: Thu Mar 16 10:26:55 PDT 2006 +// +// Modifications: +// +// **************************************************************************** + +char * +H5PartRandomSampleScriptingPluginInfo::GetLogString() +{ + std::string s(PyH5PartRandomSampleAttributes_GetLogString()); + char *v = new char[s.size() + 1]; + strcpy(v, s.c_str()); + return v; +} + +// **************************************************************************** +// Method: H5PartRandomSampleScriptingPluginInfo::SetDefaults +// +// Purpose: +// Used to set the default values for a plugin's state object. +// +// Arguments: +// atts : The new state. +// +// Programmer: cristina -- generated by xml2info +// Creation: Thu Mar 16 10:26:55 PDT 2006 +// +// Modifications: +// +// **************************************************************************** + +void +H5PartRandomSampleScriptingPluginInfo::SetDefaults(const AttributeSubject *atts) +{ + PyH5PartRandomSampleAttributes_SetDefaults((const H5PartRandomSampleAttributes *)atts); +} diff --git a/visit_plugins/operators/RandomSample/H5PartRandomSampleViewerPluginInfo.C b/visit_plugins/operators/RandomSample/H5PartRandomSampleViewerPluginInfo.C new file mode 100644 index 0000000..bc8ce36 --- /dev/null +++ b/visit_plugins/operators/RandomSample/H5PartRandomSampleViewerPluginInfo.C @@ -0,0 +1,175 @@ +// ************************************************************************* // +// File: H5PartRandomSampleViewerPluginInfo.C +// ************************************************************************* // + +#include +#include + +#if defined(__APPLE__) +#define GetViewerInfo H5PartRandomSample_GetViewerInfo +#endif + +// **************************************************************************** +// Function: GetViewerInfo +// +// Purpose: +// Return a new ViewerPluginInfo for the H5PartRandomSample operator. +// +// Programmer: cristina -- generated by xml2info +// Creation: Thu Mar 16 10:26:55 PDT 2006 +// +// **************************************************************************** +extern "C" ViewerOperatorPluginInfo* GetViewerInfo() +{ + H5PartRandomSampleViewerPluginInfo::InitializeGlobalObjects(); + return new H5PartRandomSampleViewerPluginInfo; +} + +// +// Storage for static data elements. +// +H5PartRandomSampleAttributes *H5PartRandomSampleViewerPluginInfo::clientAtts = NULL; +H5PartRandomSampleAttributes *H5PartRandomSampleViewerPluginInfo::defaultAtts = NULL; + +// **************************************************************************** +// Method: H5PartRandomSampleViewerPluginInfo::InitializeGlobalObjects +// +// Purpose: +// Initialize the operator atts. +// +// Programmer: cristina -- generated by xml2info +// Creation: Thu Mar 16 10:26:55 PDT 2006 +// +// **************************************************************************** +void +H5PartRandomSampleViewerPluginInfo::InitializeGlobalObjects() +{ + H5PartRandomSampleViewerPluginInfo::clientAtts = new H5PartRandomSampleAttributes; + H5PartRandomSampleViewerPluginInfo::defaultAtts = new H5PartRandomSampleAttributes; +} + +// **************************************************************************** +// Method: H5PartRandomSampleViewerPluginInfo::GetClientAtts +// +// Purpose: +// Return a pointer to the viewer client attributes. +// +// Returns: A pointer to the viewer client attributes. +// +// Programmer: cristina -- generated by xml2info +// Creation: Thu Mar 16 10:26:55 PDT 2006 +// +// **************************************************************************** + +AttributeSubject * +H5PartRandomSampleViewerPluginInfo::GetClientAtts() +{ + return clientAtts; +} + +// **************************************************************************** +// Method: H5PartRandomSampleViewerPluginInfo::GetDefaultAtts +// +// Purpose: +// Return a pointer to the viewer default attributes. +// +// Returns: A pointer to the viewer default attributes. +// +// Programmer: cristina -- generated by xml2info +// Creation: Thu Mar 16 10:26:55 PDT 2006 +// +// **************************************************************************** + +AttributeSubject * +H5PartRandomSampleViewerPluginInfo::GetDefaultAtts() +{ + return defaultAtts; +} + +// **************************************************************************** +// Method: H5PartRandomSampleViewerPluginInfo::SetClientAtts +// +// Purpose: +// Set the viewer client attributes. +// +// Arguments: +// atts A pointer to the new client attributes. +// +// Programmer: cristina -- generated by xml2info +// Creation: Thu Mar 16 10:26:55 PDT 2006 +// +// **************************************************************************** + +void +H5PartRandomSampleViewerPluginInfo::SetClientAtts(AttributeSubject *atts) +{ + *clientAtts = *(H5PartRandomSampleAttributes *)atts; + clientAtts->Notify(); +} + +// **************************************************************************** +// Method: H5PartRandomSampleViewerPluginInfo::GetClientAtts +// +// Purpose: +// Get the viewer client attributes. +// +// Arguments: +// atts A pointer to return the client default attributes in. +// +// Programmer: cristina -- generated by xml2info +// Creation: Thu Mar 16 10:26:55 PDT 2006 +// +// **************************************************************************** + +void +H5PartRandomSampleViewerPluginInfo::GetClientAtts(AttributeSubject *atts) +{ + *(H5PartRandomSampleAttributes *)atts = *clientAtts; +} + +// **************************************************************************** +// Method: H5PartRandomSampleViewerPluginInfo::InitializeOperatorAtts +// +// Purpose: +// Initialize the operator attributes to the default attributes. +// +// Arguments: +// atts The attribute subject to initialize. +// md The metadata used to initialize. +// atts The variable name used to initialize. +// +// Programmer: cristina -- generated by xml2info +// Creation: Thu Mar 16 10:26:55 PDT 2006 +// +// **************************************************************************** + +void +H5PartRandomSampleViewerPluginInfo::InitializeOperatorAtts(AttributeSubject *atts, + const ViewerPlot *plot, + const bool fromDefault) +{ + if (fromDefault) + *(H5PartRandomSampleAttributes*)atts = *defaultAtts; + else + *(H5PartRandomSampleAttributes*)atts = *clientAtts; +} + +// **************************************************************************** +// Method: H5PartRandomSampleViewerPluginInfo::XPMIconData +// +// Purpose: +// Return a pointer to the icon data. +// +// Returns: A pointer to the icon data. +// +// Programmer: cristina -- generated by xml2info +// Creation: Thu Mar 16 10:26:55 PDT 2006 +// +// **************************************************************************** + +#include +const char ** +H5PartRandomSampleViewerPluginInfo::XPMIconData() const +{ + return icon_xpm; +} diff --git a/visit_plugins/operators/RandomSample/Makefile b/visit_plugins/operators/RandomSample/Makefile new file mode 100644 index 0000000..4a858c6 --- /dev/null +++ b/visit_plugins/operators/RandomSample/Makefile @@ -0,0 +1,113 @@ +## +## Programs and options... +## +include /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/make-variables +TOPDIR=/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64 + + +## +## Libraries and includes... +## +VTK_INCLUDE= \ + -I/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk \ + -I/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Common \ + -I/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Filtering \ + -I/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Graphics \ + -I/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Hybrid \ + -I/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/IO \ + -I/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Imaging \ + -I/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/vtk/Rendering +MOC=/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/bin/moc +CXXFLAGS=$(CXXFLAGSORIG) $(QT_CXXFLAGS) $(PY_CXXFLAGS) +CPPFLAGS=$(CPPFLAGSORIG) $(VTK_INCLUDE) -I. -I/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include -I/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/visit +LDFLAGS=$(LDFLAGSORIG) $(PY_LDFLAGS) -L/d/visusers/cristina/.visit/linux-x86_64/plugins/operators + +## +## Files... +## +PLUGINDIR=operators +PLUGINNAME=H5PartRandomSampleOperator + +WIDGETS=QvisH5PartRandomSampleWindow.h +ISRC=H5PartRandomSamplePluginInfo.C +COMMONSRC=H5PartRandomSamplePluginInfo.C H5PartRandomSampleCommonPluginInfo.C H5PartRandomSampleAttributes.C +GSRC=H5PartRandomSampleGUIPluginInfo.C QvisH5PartRandomSampleWindow.C +VSRC=H5PartRandomSampleViewerPluginInfo.C +ESRC=H5PartRandomSampleEnginePluginInfo.C avtH5PartRandomSampleFilter.C +SSRC=H5PartRandomSampleScriptingPluginInfo.C PyH5PartRandomSampleAttributes.C + +SRC=$(ISRC) $(COMMONSRC) $(GSRC) $(VSRC) $(ESRC) $(SSRC) + + +JAVASRC=H5PartRandomSampleAttributes.java +JAVAOBJ=/usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/java/llnl/visit/operators/H5PartRandomSampleAttributes.class +JAVAPLUGINFLAGS=-d /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/java -classpath /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/java + +SHLIB_FORCED= + +ELIBS_FOR_MACOSX_PREBINDING=$(BZIP2_LIBS) +VLIBS_FOR_MACOSX_PREBINDING=$(BZIP2_LIBS) +ILIBS= +GLIBS=-lgui -lmdserverproxy -lviewerproxy -lproxybase -lmdserverrpc -lviewerrpc -lwinutil -ldbatts -lavtexceptions -lstate -lcomm -lmisc -lplugin -lexpr -lparser -lutility -lI$(PLUGINNAME) $(QT_LDFLAGS) $(QT_LIBS) $(QUI_LIBS) $(X_LIBS) +SLIBS=-lstate -lmisc -lcomm -lutility $(PY_LIB) -lI$(PLUGINNAME) +VLIBS=-lpipeline_ser -lplotter_ser -lavtfilters_ser -lavtmath_ser -lavtview -ldbatts -lavtexceptions -lstate -lmisc -lcomm -lexpr -lparser -lutility -lvisit_vtk -llightweight_visit_vtk -lparallel_visit_vtk_ser $(VLIBS_FOR_MACOSX_PREBINDING) -lI$(PLUGINNAME) $(VTK_LIBS) +ESERLIBS=-lpipeline_ser -lplotter_ser -lavtfilters_ser -lavtmath_ser -lavtview -ldbatts -lavtexceptions -lstate -lmisc -lcomm -lexpr -lparser -lutility -lvisit_vtk -llightweight_visit_vtk -lparallel_visit_vtk_ser -lI$(PLUGINNAME) $(ELIBS_FOR_MACOSX_PREBINDING) $(VTK_LIBS) +EPARLIBS=-lpipeline_par -lplotter_par -lavtfilters_par -lavtmath_par -lavtview -ldbatts -lavtexceptions -lstate -lmisc -lcomm -lexpr -lparser -lutility -lvisit_vtk -llightweight_visit_vtk -lparallel_visit_vtk_par -lI$(PLUGINNAME) $(ELIBS_FOR_MACOSX_PREBINDING) $(VTK_LIBS) $(SHLIB_MPI_LIBS) + +IDSO=/d/visusers/cristina/.visit/linux-x86_64/plugins/operators/libIH5PartRandomSampleOperator.so +GDSO=/d/visusers/cristina/.visit/linux-x86_64/plugins/operators/libGH5PartRandomSampleOperator.so +SDSO=/d/visusers/cristina/.visit/linux-x86_64/plugins/operators/libSH5PartRandomSampleOperator.so +VDSO=/d/visusers/cristina/.visit/linux-x86_64/plugins/operators/libVH5PartRandomSampleOperator.so +ESERDSO=/d/visusers/cristina/.visit/linux-x86_64/plugins/operators/libEH5PartRandomSampleOperator_ser.so +EPARDSO=/d/visusers/cristina/.visit/linux-x86_64/plugins/operators/libEH5PartRandomSampleOperator_par.so + + +DISTRIB= + +## +## Derived objects +## +IOBJ=$(ISRC:.C=.o) +GOBJ=$(COMMONSRC:.C=.o) $(GSRC:.C=.o) +SOBJ=$(COMMONSRC:.C=.o) $(SSRC:.C=.o) +VOBJ=$(COMMONSRC:.C=.o) $(VSRC:.C=.o) +MOBJ=$(COMMONSRC:.C=.o) $(MSRC:.C=.o) $(MSPECIFICSRC:.C=_mds.o) +ESEROBJ=$(COMMONSRC:.C=.o) $(ESRC:.C=.o) +EPAROBJ=$(COMMONSRC:.C=.o) $(ESRC:.C=_par.o) + +MOCSRC = $(WIDGETS:.h=_moc.C) +MOCOBJ = $(MOCSRC:.C=.o) + +## +## Standard targets... +## +all: message $(IDSO) $(GUILIB) $(VIEWERLIB) $(ENGINELIBSER) $(ENGINELIBPAR) $(SCRIPTINGLIB) $(JAVACLASS) + +clean: + $(RM) $(IOBJ) $(COMMONOBJ) + $(RM) $(GOBJ) $(SOBJ) $(VOBJ) $(MOBJ) $(ESEROBJ) $(EPAROBJ) + $(RM) $(MOCSRC) $(MOCOBJ) + $(RM) $(IDSO) $(GDSO) $(SDSO) $(VDSO) $(MDSO) $(ESERDSO) $(EPARDSO) + $(RM) $(JAVAOBJ) + +## +## Other targets... +## +message: + @echo + @echo "****************************************************************************" + @echo "*** Building H5PartRandomSample Operator Plugin" + @echo "****************************************************************************" + +## +## moc +## +$(MOCSRC) or_no_widgets: $(WIDGETS) + @rm -f $@ + $(MOC) $(@:_moc.C=.h) > $@ + + +## +## Automatic dependency stuff +## +include /usr/local/visit/visit-1.5.1/1.5.1/linux-x86_64/include/make-targets diff --git a/visit_plugins/operators/RandomSample/PyH5PartRandomSampleAttributes.C b/visit_plugins/operators/RandomSample/PyH5PartRandomSampleAttributes.C new file mode 100644 index 0000000..aa11a6e --- /dev/null +++ b/visit_plugins/operators/RandomSample/PyH5PartRandomSampleAttributes.C @@ -0,0 +1,358 @@ +#include +#include +#include +#include + +// **************************************************************************** +// Module: PyH5PartRandomSampleAttributes +// +// Purpose: +// Randomly reduce an H5Part point mesh +// +// Note: Autogenerated by xml2python. Do not modify by hand! +// +// Programmer: xml2python +// Creation: Thu Mar 16 10:26:56 PDT 2006 +// +// **************************************************************************** + +// +// This struct contains the Python type information and a H5PartRandomSampleAttributes. +// +struct H5PartRandomSampleAttributesObject +{ + PyObject_HEAD + H5PartRandomSampleAttributes *data; + bool owns; +}; + +// +// Internal prototypes +// +static PyObject *NewH5PartRandomSampleAttributes(int); + +std::string +PyH5PartRandomSampleAttributes_ToString(const H5PartRandomSampleAttributes *atts, const char *prefix) +{ + std::string str; + char tmpStr[1000]; + + SNPRINTF(tmpStr, 1000, "%sfactor = %g\n", prefix, atts->GetFactor()); + str += tmpStr; + return str; +} + +static PyObject * +H5PartRandomSampleAttributes_Notify(PyObject *self, PyObject *args) +{ + H5PartRandomSampleAttributesObject *obj = (H5PartRandomSampleAttributesObject *)self; + obj->data->Notify(); + Py_INCREF(Py_None); + return Py_None; +} + +static PyObject * +H5PartRandomSampleAttributes_SetFactor(PyObject *self, PyObject *args) +{ + H5PartRandomSampleAttributesObject *obj = (H5PartRandomSampleAttributesObject *)self; + + float fval; + if(!PyArg_ParseTuple(args, "f", &fval)) + return NULL; + + // Set the factor in the object. + obj->data->SetFactor(fval); + + Py_INCREF(Py_None); + return Py_None; +} + +static PyObject * +H5PartRandomSampleAttributes_GetFactor(PyObject *self, PyObject *args) +{ + H5PartRandomSampleAttributesObject *obj = (H5PartRandomSampleAttributesObject *)self; + PyObject *retval = PyFloat_FromDouble(double(obj->data->GetFactor())); + return retval; +} + + + +static struct PyMethodDef H5PartRandomSampleAttributes_methods[] = { + {"Notify", H5PartRandomSampleAttributes_Notify, METH_VARARGS}, + {"SetFactor", H5PartRandomSampleAttributes_SetFactor, METH_VARARGS}, + {"GetFactor", H5PartRandomSampleAttributes_GetFactor, METH_VARARGS}, + {NULL, NULL} +}; + +// +// Type functions +// + +static void +H5PartRandomSampleAttributes_dealloc(PyObject *v) +{ + H5PartRandomSampleAttributesObject *obj = (H5PartRandomSampleAttributesObject *)v; + if(obj->owns) + delete obj->data; +} + +static int +H5PartRandomSampleAttributes_compare(PyObject *v, PyObject *w) +{ + H5PartRandomSampleAttributes *a = ((H5PartRandomSampleAttributesObject *)v)->data; + H5PartRandomSampleAttributes *b = ((H5PartRandomSampleAttributesObject *)w)->data; + return (*a == *b) ? 0 : -1; +} + +static PyObject * +H5PartRandomSampleAttributes_getattr(PyObject *self, char *name) +{ + if(strcmp(name, "factor") == 0) + return H5PartRandomSampleAttributes_GetFactor(self, NULL); + + return Py_FindMethod(H5PartRandomSampleAttributes_methods, self, name); +} + +static int +H5PartRandomSampleAttributes_setattr(PyObject *self, char *name, PyObject *args) +{ + // Create a tuple to contain the arguments since all of the Set + // functions expect a tuple. + PyObject *tuple = PyTuple_New(1); + PyTuple_SET_ITEM(tuple, 0, args); + Py_INCREF(args); + bool retval = false; + + if(strcmp(name, "factor") == 0) + retval = (H5PartRandomSampleAttributes_SetFactor(self, tuple) != NULL); + + Py_DECREF(tuple); + return retval ? 0 : -1; +} + +static int +H5PartRandomSampleAttributes_print(PyObject *v, FILE *fp, int flags) +{ + H5PartRandomSampleAttributesObject *obj = (H5PartRandomSampleAttributesObject *)v; + fprintf(fp, "%s", PyH5PartRandomSampleAttributes_ToString(obj->data, "").c_str()); + return 0; +} + +PyObject * +H5PartRandomSampleAttributes_str(PyObject *v) +{ + H5PartRandomSampleAttributesObject *obj = (H5PartRandomSampleAttributesObject *)v; + return PyString_FromString(PyH5PartRandomSampleAttributes_ToString(obj->data,"").c_str()); +} + +// +// The doc string for the class. +// +static char *H5PartRandomSampleAttributes_Purpose = "Randomly reduce an H5Part point mesh"; + +// +// The type description structure +// +static PyTypeObject H5PartRandomSampleAttributesType = +{ + // + // Type header + // + PyObject_HEAD_INIT(&PyType_Type) + 0, // ob_size + "H5PartRandomSampleAttributes", // tp_name + sizeof(H5PartRandomSampleAttributesObject), // tp_basicsize + 0, // tp_itemsize + // + // Standard methods + // + (destructor)H5PartRandomSampleAttributes_dealloc, // tp_dealloc + (printfunc)H5PartRandomSampleAttributes_print, // tp_print + (getattrfunc)H5PartRandomSampleAttributes_getattr, // tp_getattr + (setattrfunc)H5PartRandomSampleAttributes_setattr, // tp_setattr + (cmpfunc)H5PartRandomSampleAttributes_compare, // tp_compare + (reprfunc)0, // tp_repr + // + // Type categories + // + 0, // tp_as_number + 0, // tp_as_sequence + 0, // tp_as_mapping + // + // More methods + // + 0, // tp_hash + 0, // tp_call + (reprfunc)H5PartRandomSampleAttributes_str, // tp_str + 0, // tp_getattro + 0, // tp_setattro + 0, // tp_as_buffer + Py_TPFLAGS_CHECKTYPES, // tp_flags + H5PartRandomSampleAttributes_Purpose, // tp_doc + 0, // tp_traverse + 0, // tp_clear + 0, // tp_richcompare + 0 // tp_weaklistoffset +}; + +// +// Helper functions for object allocation. +// + +static H5PartRandomSampleAttributes *defaultAtts = 0; +static H5PartRandomSampleAttributes *currentAtts = 0; + +static PyObject * +NewH5PartRandomSampleAttributes(int useCurrent) +{ + H5PartRandomSampleAttributesObject *newObject; + newObject = PyObject_NEW(H5PartRandomSampleAttributesObject, &H5PartRandomSampleAttributesType); + if(newObject == NULL) + return NULL; + if(useCurrent && currentAtts != 0) + newObject->data = new H5PartRandomSampleAttributes(*currentAtts); + else if(defaultAtts != 0) + newObject->data = new H5PartRandomSampleAttributes(*defaultAtts); + else + newObject->data = new H5PartRandomSampleAttributes; + newObject->owns = true; + return (PyObject *)newObject; +} + +static PyObject * +WrapH5PartRandomSampleAttributes(const H5PartRandomSampleAttributes *attr) +{ + H5PartRandomSampleAttributesObject *newObject; + newObject = PyObject_NEW(H5PartRandomSampleAttributesObject, &H5PartRandomSampleAttributesType); + if(newObject == NULL) + return NULL; + newObject->data = (H5PartRandomSampleAttributes *)attr; + newObject->owns = false; + return (PyObject *)newObject; +} + +/////////////////////////////////////////////////////////////////////////////// +// +// Interface that is exposed to the VisIt module. +// +/////////////////////////////////////////////////////////////////////////////// + +PyObject * +H5PartRandomSampleAttributes_new(PyObject *self, PyObject *args) +{ + int useCurrent = 0; + if (!PyArg_ParseTuple(args, "i", &useCurrent)) + { + if (!PyArg_ParseTuple(args, "")) + return NULL; + else + PyErr_Clear(); + } + + return (PyObject *)NewH5PartRandomSampleAttributes(useCurrent); +} + +// +// Plugin method table. These methods are added to the visitmodule's methods. +// +static PyMethodDef H5PartRandomSampleAttributesMethods[] = { + {"H5PartRandomSampleAttributes", H5PartRandomSampleAttributes_new, METH_VARARGS}, + {NULL, NULL} /* Sentinel */ +}; + +static Observer *H5PartRandomSampleAttributesObserver = 0; + +std::string +PyH5PartRandomSampleAttributes_GetLogString() +{ + std::string s("H5PartRandomSampleAtts = H5PartRandomSampleAttributes()\n"); + if(currentAtts != 0) + s += PyH5PartRandomSampleAttributes_ToString(currentAtts, "H5PartRandomSampleAtts."); + return s; +} + +static void +PyH5PartRandomSampleAttributes_CallLogRoutine(Subject *subj, void *data) +{ + H5PartRandomSampleAttributes *atts = (H5PartRandomSampleAttributes *)subj; + typedef void (*logCallback)(const std::string &); + logCallback cb = (logCallback)data; + + if(cb != 0) + { + std::string s("H5PartRandomSampleAtts = H5PartRandomSampleAttributes()\n"); + s += PyH5PartRandomSampleAttributes_ToString(currentAtts, "H5PartRandomSampleAtts."); + cb(s); + } +} + +void +PyH5PartRandomSampleAttributes_StartUp(H5PartRandomSampleAttributes *subj, void *data) +{ + if(subj == 0) + return; + + currentAtts = subj; + PyH5PartRandomSampleAttributes_SetDefaults(subj); + + // + // Create the observer that will be notified when the attributes change. + // + if(H5PartRandomSampleAttributesObserver == 0) + { + H5PartRandomSampleAttributesObserver = new ObserverToCallback(subj, + PyH5PartRandomSampleAttributes_CallLogRoutine, (void *)data); + } + +} + +void +PyH5PartRandomSampleAttributes_CloseDown() +{ + delete defaultAtts; + defaultAtts = 0; + delete H5PartRandomSampleAttributesObserver; + H5PartRandomSampleAttributesObserver = 0; +} + +PyMethodDef * +PyH5PartRandomSampleAttributes_GetMethodTable(int *nMethods) +{ + *nMethods = 1; + return H5PartRandomSampleAttributesMethods; +} + +bool +PyH5PartRandomSampleAttributes_Check(PyObject *obj) +{ + return (obj->ob_type == &H5PartRandomSampleAttributesType); +} + +H5PartRandomSampleAttributes * +PyH5PartRandomSampleAttributes_FromPyObject(PyObject *obj) +{ + H5PartRandomSampleAttributesObject *obj2 = (H5PartRandomSampleAttributesObject *)obj; + return obj2->data; +} + +PyObject * +PyH5PartRandomSampleAttributes_NewPyObject() +{ + return NewH5PartRandomSampleAttributes(0); +} + +PyObject * +PyH5PartRandomSampleAttributes_WrapPyObject(const H5PartRandomSampleAttributes *attr) +{ + return WrapH5PartRandomSampleAttributes(attr); +} + +void +PyH5PartRandomSampleAttributes_SetDefaults(const H5PartRandomSampleAttributes *atts) +{ + if(defaultAtts) + delete defaultAtts; + + defaultAtts = new H5PartRandomSampleAttributes(*atts); +} + diff --git a/visit_plugins/operators/RandomSample/PyH5PartRandomSampleAttributes.h b/visit_plugins/operators/RandomSample/PyH5PartRandomSampleAttributes.h new file mode 100644 index 0000000..332704e --- /dev/null +++ b/visit_plugins/operators/RandomSample/PyH5PartRandomSampleAttributes.h @@ -0,0 +1,21 @@ +#ifndef PY_H5PARTRANDOMSAMPLEATTRIBUTES_H +#define PY_H5PARTRANDOMSAMPLEATTRIBUTES_H +#include +#include + +// +// Functions exposed to the VisIt module. +// +void PyH5PartRandomSampleAttributes_StartUp(H5PartRandomSampleAttributes *subj, void *data); +void PyH5PartRandomSampleAttributes_CloseDown(); +PyMethodDef *PyH5PartRandomSampleAttributes_GetMethodTable(int *nMethods); +bool PyH5PartRandomSampleAttributes_Check(PyObject *obj); +H5PartRandomSampleAttributes *PyH5PartRandomSampleAttributes_FromPyObject(PyObject *obj); +PyObject *PyH5PartRandomSampleAttributes_NewPyObject(); +PyObject *PyH5PartRandomSampleAttributes_WrapPyObject(const H5PartRandomSampleAttributes *attr); +void PyH5PartRandomSampleAttributes_SetDefaults(const H5PartRandomSampleAttributes *atts); +std::string PyH5PartRandomSampleAttributes_GetLogString(); +std::string PyH5PartRandomSampleAttributes_ToString(const H5PartRandomSampleAttributes *, const char *); + +#endif + diff --git a/visit_plugins/operators/RandomSample/QvisH5PartRandomSampleWindow.C b/visit_plugins/operators/RandomSample/QvisH5PartRandomSampleWindow.C new file mode 100644 index 0000000..8ef8350 --- /dev/null +++ b/visit_plugins/operators/RandomSample/QvisH5PartRandomSampleWindow.C @@ -0,0 +1,199 @@ +#include "QvisH5PartRandomSampleWindow.h" + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +using std::string; + +// **************************************************************************** +// Method: QvisH5PartRandomSampleWindow::QvisH5PartRandomSampleWindow +// +// Purpose: +// Constructor +// +// Programmer: xml2window +// Creation: Thu Mar 16 10:26:55 PDT 2006 +// +// Modifications: +// +// **************************************************************************** + +QvisH5PartRandomSampleWindow::QvisH5PartRandomSampleWindow(const int type, + H5PartRandomSampleAttributes *subj, + const char *caption, + const char *shortName, + QvisNotepadArea *notepad) + : QvisOperatorWindow(type,subj, caption, shortName, notepad) +{ + atts = subj; +} + + +// **************************************************************************** +// Method: QvisH5PartRandomSampleWindow::~QvisH5PartRandomSampleWindow +// +// Purpose: +// Destructor +// +// Programmer: xml2window +// Creation: Thu Mar 16 10:26:55 PDT 2006 +// +// Modifications: +// +// **************************************************************************** + +QvisH5PartRandomSampleWindow::~QvisH5PartRandomSampleWindow() +{ +} + + +// **************************************************************************** +// Method: QvisH5PartRandomSampleWindow::CreateWindowContents +// +// Purpose: +// Creates the widgets for the window. +// +// Programmer: xml2window +// Creation: Thu Mar 16 10:26:55 PDT 2006 +// +// Modifications: +// +// **************************************************************************** + +void +QvisH5PartRandomSampleWindow::CreateWindowContents() +{ + QGridLayout *mainLayout = new QGridLayout(topLayout, 1,2, 10, "mainLayout"); + + + factorLabel = new QLabel("factor", central, "factorLabel"); + mainLayout->addWidget(factorLabel,0,0); + factor = new QLineEdit(central, "factor"); + connect(factor, SIGNAL(returnPressed()), + this, SLOT(factorProcessText())); + mainLayout->addWidget(factor, 0,1); + +} + + +// **************************************************************************** +// Method: QvisH5PartRandomSampleWindow::UpdateWindow +// +// Purpose: +// Updates the widgets in the window when the subject changes. +// +// Programmer: xml2window +// Creation: Thu Mar 16 10:26:55 PDT 2006 +// +// Modifications: +// +// **************************************************************************** + +void +QvisH5PartRandomSampleWindow::UpdateWindow(bool doAll) +{ + QString temp; + double r; + + for(int i = 0; i < atts->NumAttributes(); ++i) + { + if(!doAll) + { + if(!atts->IsSelected(i)) + { + continue; + } + } + + const double *dptr; + const float *fptr; + const int *iptr; + const char *cptr; + const unsigned char *uptr; + const string *sptr; + QColor tempcolor; + switch(i) + { + case 0: //factor + temp.setNum(atts->GetFactor()); + factor->setText(temp); + break; + } + } +} + + +// **************************************************************************** +// Method: QvisH5PartRandomSampleWindow::GetCurrentValues +// +// Purpose: +// Gets values from certain widgets and stores them in the subject. +// +// Programmer: xml2window +// Creation: Thu Mar 16 10:26:55 PDT 2006 +// +// Modifications: +// +// **************************************************************************** + +void +QvisH5PartRandomSampleWindow::GetCurrentValues(int which_widget) +{ + bool okay, doAll = (which_widget == -1); + QString msg, temp; + + // Do factor + if(which_widget == 0 || doAll) + { + temp = factor->displayText().simplifyWhiteSpace(); + okay = !temp.isEmpty(); + if(okay) + { + float val = temp.toFloat(&okay); + atts->SetFactor(val); + } + + if(!okay) + { + msg.sprintf("The value of factor was invalid. " + "Resetting to the last good value of %g.", + atts->GetFactor()); + Message(msg); + atts->SetFactor(atts->GetFactor()); + } + } + +} + + +// +// Qt Slot functions +// + + +void +QvisH5PartRandomSampleWindow::factorProcessText() +{ + GetCurrentValues(0); + Apply(); +} + + diff --git a/visit_plugins/operators/RandomSample/QvisH5PartRandomSampleWindow.h b/visit_plugins/operators/RandomSample/QvisH5PartRandomSampleWindow.h new file mode 100644 index 0000000..5bb137f --- /dev/null +++ b/visit_plugins/operators/RandomSample/QvisH5PartRandomSampleWindow.h @@ -0,0 +1,61 @@ +#ifndef QVISH5PARTRANDOMSAMPLEWINDOW_H +#define QVISH5PARTRANDOMSAMPLEWINDOW_H + +#include +#include + +class H5PartRandomSampleAttributes; +class QLabel; +class QCheckBox; +class QLineEdit; +class QSpinBox; +class QVBox; +class QButtonGroup; +class QvisColorTableButton; +class QvisOpacitySlider; +class QvisColorButton; +class QvisLineStyleWidget; +class QvisLineWidthWidget; +class QvisVariableButton; + +// **************************************************************************** +// Class: QvisH5PartRandomSampleWindow +// +// Purpose: +// Defines QvisH5PartRandomSampleWindow class. +// +// Notes: This class was automatically generated! + +// Programmer: xml2window +// Creation: Thu Mar 16 10:26:55 PDT 2006 +// +// Modifications: +// +// **************************************************************************** + +class QvisH5PartRandomSampleWindow : public QvisOperatorWindow +{ + Q_OBJECT + public: + QvisH5PartRandomSampleWindow(const int type, + H5PartRandomSampleAttributes *subj, + const char *caption = 0, + const char *shortName = 0, + QvisNotepadArea *notepad = 0); + virtual ~QvisH5PartRandomSampleWindow(); + virtual void CreateWindowContents(); + protected: + void UpdateWindow(bool doAll); + virtual void GetCurrentValues(int which_widget); + private slots: + void factorProcessText(); + private: + QLineEdit *factor; + QLabel *factorLabel; + + H5PartRandomSampleAttributes *atts; +}; + + + +#endif diff --git a/visit_plugins/operators/RandomSample/RandomSample.xml b/visit_plugins/operators/RandomSample/RandomSample.xml new file mode 100644 index 0000000..55a9e1b --- /dev/null +++ b/visit_plugins/operators/RandomSample/RandomSample.xml @@ -0,0 +1,8 @@ + + + + + 1.0 + + + diff --git a/visit_plugins/operators/RandomSample/avtH5PartRandomSampleFilter.C b/visit_plugins/operators/RandomSample/avtH5PartRandomSampleFilter.C new file mode 100644 index 0000000..76587a9 --- /dev/null +++ b/visit_plugins/operators/RandomSample/avtH5PartRandomSampleFilter.C @@ -0,0 +1,177 @@ +// ************************************************************************* // +// File: avtH5PartRandomSampleFilter.C +// ************************************************************************* // + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + + +// **************************************************************************** +// Method: avtH5PartRandomSampleFilter constructor +// +// Programmer: cristina -- generated by xml2avt +// Creation: Thu Mar 2 13:48:31 PST 2006 +// +// **************************************************************************** + +avtH5PartRandomSampleFilter::avtH5PartRandomSampleFilter() +{ + idList = vtkIdList::New(); + npoints = 0; +} + + +// **************************************************************************** +// Method: avtH5PartRandomSampleFilter destructor +// +// Programmer: cristina -- generated by xml2avt +// Creation: Thu Mar 2 13:48:31 PST 2006 +// +// Modifications: +// +// **************************************************************************** + +avtH5PartRandomSampleFilter::~avtH5PartRandomSampleFilter() +{ +} + + +// **************************************************************************** +// Method: avtH5PartRandomSampleFilter::Create +// +// Programmer: cristina -- generated by xml2avt +// Creation: Thu Mar 2 13:48:31 PST 2006 +// +// **************************************************************************** + +avtFilter * +avtH5PartRandomSampleFilter::Create() +{ + return new avtH5PartRandomSampleFilter(); +} + + +// **************************************************************************** +// Method: avtH5PartRandomSampleFilter::SetAtts +// +// Purpose: +// Sets the state of the filter based on the attribute object. +// +// Arguments: +// a The attributes to use. +// +// Programmer: cristina -- generated by xml2avt +// Creation: Thu Mar 2 13:48:31 PST 2006 +// +// **************************************************************************** + +void +avtH5PartRandomSampleFilter::SetAtts(const AttributeGroup *a) +{ + atts = *(const H5PartRandomSampleAttributes*)a; +} + + +// **************************************************************************** +// Method: avtH5PartRandomSampleFilter::Equivalent +// +// Purpose: +// Returns true if creating a new avtH5PartRandomSampleFilter with the given +// parameters would result in an equivalent avtH5PartRandomSampleFilter. +// +// Programmer: cristina -- generated by xml2avt +// Creation: Thu Mar 2 13:48:31 PST 2006 +// +// **************************************************************************** + +bool +avtH5PartRandomSampleFilter::Equivalent(const AttributeGroup *a) +{ + return (atts == *(H5PartRandomSampleAttributes*)a); +} + + +// **************************************************************************** +// Method: avtH5PartRandomSampleFilter::ExecuteData +// +// Purpose: +// Sends the specified input and output through the H5PartRandomSample filter. +// +// Arguments: +// in_ds The input dataset. +// The domain number. +// The label. +// +// Returns: The output dataset. +// +// Programmer: cristina -- generated by xml2avt +// Creation: Thu Mar 2 13:48:31 PST 2006 +// +// **************************************************************************** + +vtkDataSet * +avtH5PartRandomSampleFilter::ExecuteData(vtkDataSet *in_ds, int, std::string) +{ + + float factor = atts.GetFactor(); + int nspace = 3; + int update = 0; + + + if (factor >= 1.0) { + in_ds->Register(NULL); + return in_ds; + } else if (factor < 0){ + factor = 0.0; + } + vtkIdType nPoints = in_ds->GetNumberOfPoints(); + + vtkPointData *inPD = in_ds->GetPointData(); + vtkPolyData *out_ds = vtkPolyData::New(); + vtkPoints *pts = vtkPoints::New(); + pts->SetNumberOfPoints((vtkIdType) (nPoints*factor)); + out_ds->SetPoints(pts); + out_ds->Allocate(nspace*((vtkIdType) (nPoints*factor))); + + vtkPointData *outPD = out_ds->GetPointData(); + outPD->CopyAllocate(inPD, 0, (vtkIdType) (nPoints*factor)); + + double sfactor = (double) (nPoints-1)/RAND_MAX; + seed=12; + srand(seed); + + vtkIdType i, index; + vtkIdType newId = 0; + vtkIdType onevertex[1]; + for (vtkIdType i = 0; newId < (vtkIdType)(nPoints*factor); i++) { + index = (vtkIdType) (sfactor * rand()); + if (idList->IsId(index) != -1){ + continue; + } else { + idList->InsertNextId(index); + } + outPD->CopyData(inPD, index, newId); + float pt[3]; + in_ds->GetPoint(index, pt); + pts->SetPoint(newId, pt); + onevertex[0] = newId; + out_ds->InsertNextCell(VTK_VERTEX, 1, onevertex); + newId++; + } + idList->Reset(); + idList->Delete(); + pts->Delete(); + + return out_ds; + + +} diff --git a/visit_plugins/operators/RandomSample/avtH5PartRandomSampleFilter.h b/visit_plugins/operators/RandomSample/avtH5PartRandomSampleFilter.h new file mode 100644 index 0000000..cefc00c --- /dev/null +++ b/visit_plugins/operators/RandomSample/avtH5PartRandomSampleFilter.h @@ -0,0 +1,54 @@ +// ************************************************************************* // +// File: avtH5PartRandomSampleFilter.h +// ************************************************************************* // + +#ifndef AVT_H5PartRandomSample_FILTER_H +#define AVT_H5PartRandomSample_FILTER_H + + +#include +#include + +class vtkDataSet; +class vtkIdList; + +// **************************************************************************** +// Class: avtH5PartRandomSampleFilter +// +// Purpose: +// A plugin operator for H5PartRandomSample. +// +// Programmer: cristina -- generated by xml2avt +// Creation: Thu Mar 2 13:48:31 PST 2006 +// +// **************************************************************************** + +class avtH5PartRandomSampleFilter : public avtPluginStreamer +{ + public: + avtH5PartRandomSampleFilter(); + virtual ~avtH5PartRandomSampleFilter(); + + static avtFilter *Create(); + + virtual const char *GetType(void) { return "avtH5PartRandomSampleFilter"; }; + virtual const char *GetDescription(void) + { return "H5PartRandomSample"; }; + + virtual void SetAtts(const AttributeGroup*); + virtual bool Equivalent(const AttributeGroup*); + + protected: + H5PartRandomSampleAttributes atts; + + virtual vtkDataSet *ExecuteData(vtkDataSet *, int, std::string); + + private: + + long int npoints; + unsigned int seed; + vtkIdList *idList; +}; + + +#endif diff --git a/visit_plugins/operators/RandomSample/icon.xpm b/visit_plugins/operators/RandomSample/icon.xpm new file mode 100644 index 0000000..e8b26bf --- /dev/null +++ b/visit_plugins/operators/RandomSample/icon.xpm @@ -0,0 +1,23828 @@ +/* XPM */ +static const char * icon_xpm[] = { +"300 300 23525 3", +" c #003D1E", +". c #005F2E", +"+ c #007E3B", +"@ c #008E42", +"# c #008239", +"$ c #00A953", +"% c #01ED9E", +"& c #02FFB1", +"* c #00FD9D", +"= c #00FF90", +"- c #00FE82", +"; c #08FB83", +"> c #1BFFAD", +", c #0A553A", +"' c #000000", +") c #000402", +"! c #000100", +"~ c #000204", +"{ c #002A40", +"] c #005C8A", +"^ c #0070A8", +"/ c #0073A9", +"( c #0073A8", +"_ c #006C9D", +": c #004B6C", +"< c #000F16", +"[ c #000101", +"} c #008D45", +"| c #008941", +"1 c #00803B", +"2 c #007737", +"3 c #00692B", +"4 c #02BB74", +"5 c #13FFCF", +"6 c #15FDBD", +"7 c #0AFEA4", +"8 c #02FE8B", +"9 c #00FE7E", +"0 c #1DFFA8", +"a c #099254", +"b c #002D12", +"c c #000F17", +"d c #004161", +"e c #006A9B", +"f c #0075AA", +"g c #0076AA", +"h c #0076A8", +"i c #00628B", +"j c #002A3B", +"k c #006E36", +"l c #006731", +"m c #00642F", +"n c #00602C", +"o c #00793B", +"p c #03F5A1", +"q c #0FF7AE", +"r c #13E79F", +"s c #11EF9E", +"t c #0BFF94", +"u c #03FE7C", +"v c #03FF83", +"w c #05F383", +"x c #01A750", +"y c #009B4A", +"z c #006431", +"A c #00140A", +"B c #000001", +"C c #001D2B", +"D c #00547A", +"E c #0073A5", +"F c #0078AA", +"G c #007BAC", +"H c #0076A5", +"I c #00506E", +"J c #00131B", +"K c #000404", +"L c #000303", +"M c #006733", +"N c #007339", +"O c #00813F", +"P c #009E4E", +"Q c #00D672", +"R c #00BA63", +"S c #01AB5F", +"T c #03BC67", +"U c #05FA8B", +"V c #02FF81", +"W c #0FFF91", +"X c #12FD9B", +"Y c #01A955", +"Z c #00A14D", +"` c #00A452", +" . c #008946", +".. c #004021", +"+. c #010000", +"@. c #000201", +"#. c #000102", +"$. c #000508", +"%. c #003247", +"&. c #00668F", +"*. c #0079A9", +"=. c #007BAA", +"-. c #007DAB", +";. c #006C93", +">. c #003345", +",. c #000304", +"'. c #009249", +"). c #008E46", +"!. c #008A42", +"~. c #00823D", +"{. c #00813C", +"]. c #00B259", +"^. c #00C467", +"/. c #01D873", +"(. c #05DD76", +"_. c #0BF68D", +":. c #0CFF90", +"<. c #12FE99", +"[. c #24FDB5", +"}. c #06683D", +"|. c #007436", +"1. c #00A152", +"2. c #00A454", +"3. c #009D52", +"4. c #006D3B", +"5. c #001F11", +"6. c #010100", +"7. c #000202", +"8. c #001017", +"9. c #004864", +"0. c #00739E", +"a. c #007DAA", +"b. c #007FAB", +"c. c #007CA6", +"d. c #005875", +"e. c #001219", +"f. c #001716", +"g. c #006E6D", +"h. c #008081", +"i. c #004D4E", +"j. c #010808", +"k. c #007D3E", +"l. c #00934A", +"m. c #00A251", +"n. c #009D4B", +"o. c #008A40", +"p. c #009348", +"q. c #00BA5B", +"r. c #00E972", +"s. c #0AF687", +"t. c #1DFEA6", +"u. c #22FCAB", +"v. c #24FFBA", +"w. c #20EAAB", +"x. c #008140", +"y. c #005028", +"z. c #00582C", +"A. c #008C49", +"B. c #00A356", +"C. c #00A258", +"D. c #008F50", +"E. c #004A2A", +"F. c #000905", +"G. c #010202", +"H. c #010101", +"I. c #010102", +"J. c #010203", +"K. c #010001", +"L. c #002431", +"M. c #005D7F", +"N. c #0081AA", +"O. c #0083AC", +"P. c #006F93", +"Q. c #00A0B1", +"R. c #03FCFE", +"S. c #01FEFD", +"T. c #00FFFF", +"U. c #00C1CE", +"V. c #012227", +"W. c #009650", +"X. c #00A457", +"Y. c #00A453", +"Z. c #00AE54", +"`. c #00C258", +" + c #00D75F", +".+ c #00E971", +"++ c #00FC79", +"@+ c #0DFF92", +"#+ c #1FFEAC", +"$+ c #27FFC0", +"%+ c #29FAC8", +"&+ c #09B365", +"*+ c #009B50", +"=+ c #006B38", +"-+ c #004524", +";+ c #006938", +">+ c #009954", +",+ c #00A25A", +"'+ c #009E5A", +")+ c #007846", +"!+ c #012918", +"~+ c #020000", +"{+ c #020101", +"]+ c #010303", +"^+ c #020202", +"/+ c #020201", +"(+ c #020303", +"_+ c #01080A", +":+ c #003A4D", +"<+ c #007093", +"[+ c #007EA6", +"}+ c #00B2D8", +"|+ c #03BEE3", +"1+ c #08A7BF", +"2+ c #0ACBDA", +"3+ c #05E1FB", +"4+ c #00F0FF", +"5+ c #00DAE4", +"6+ c #011619", +"7+ c #03BC6D", +"8+ c #0CD17C", +"9+ c #10EA86", +"0+ c #0AFA7E", +"a+ c #02FE6A", +"b+ c #00FF68", +"c+ c #00FA6E", +"d+ c #00D662", +"e+ c #04EE72", +"f+ c #13FB9B", +"g+ c #13EAA8", +"h+ c #054B34", +"i+ c #005927", +"j+ c #009C4F", +"k+ c #008A4B", +"l+ c #00542E", +"m+ c #004A28", +"n+ c #007E46", +"o+ c #009F5C", +"p+ c #00A15E", +"q+ c #009359", +"r+ c #005836", +"s+ c #010F0A", +"t+ c #010304", +"u+ c #01141B", +"v+ c #00566E", +"w+ c #00ACD0", +"x+ c #03CAEC", +"y+ c #09D5EF", +"z+ c #09B9D1", +"A+ c #0AD2E9", +"B+ c #04D9FC", +"C+ c #06F9FF", +"D+ c #038181", +"E+ c #020506", +"F+ c #02ED79", +"G+ c #08D770", +"H+ c #0AC667", +"I+ c #0BEB77", +"J+ c #04FF6F", +"K+ c #06F969", +"L+ c #0BFF7E", +"M+ c #046E34", +"N+ c #010502", +"O+ c #012513", +"P+ c #00140E", +"Q+ c #020102", +"R+ c #012F18", +"S+ c #007A3E", +"T+ c #00A054", +"U+ c #00A358", +"V+ c #009D57", +"W+ c #007543", +"X+ c #004326", +"Y+ c #005832", +"Z+ c #008F54", +"`+ c #00A161", +" @ c #009E61", +".@ c #007F50", +"+@ c #003523", +"@@ c #020304", +"#@ c #020203", +"$@ c #020405", +"%@ c #011F20", +"&@ c #00C4D0", +"*@ c #00B6CE", +"=@ c #01D5EE", +"-@ c #01D1EE", +";@ c #03D8F0", +">@ c #02E6FD", +",@ c #13F8FF", +"'@ c #119B9E", +")@ c #00BC4E", +"!@ c #00B450", +"~@ c #01BA52", +"{@ c #03D85F", +"]@ c #05FF72", +"^@ c #09FA72", +"/@ c #1CFF97", +"(@ c #118651", +"_@ c #030301", +":@ c #030201", +"<@ c #030605", +"[@ c #030303", +"}@ c #030000", +"|@ c #020906", +"1@ c #014927", +"2@ c #008C4B", +"3@ c #00A159", +"4@ c #00A25C", +"5@ c #009356", +"6@ c #005C37", +"7@ c #004026", +"8@ c #006D42", +"9@ c #009A5F", +"0@ c #00A065", +"a@ c #009661", +"b@ c #006241", +"c@ c #021810", +"d@ c #030202", +"e@ c #020404", +"f@ c #020A0A", +"g@ c #00DADA", +"h@ c #00ECF7", +"i@ c #00D0E6", +"j@ c #08DBEF", +"k@ c #11F5FE", +"l@ c #0FECFA", +"m@ c #1AFFFF", +"n@ c #199293", +"o@ c #030606", +"p@ c #00A847", +"q@ c #00CF57", +"r@ c #04E964", +"s@ c #0FF378", +"t@ c #1AFF8C", +"u@ c #17FB87", +"v@ c #25FFA2", +"w@ c #12B766", +"x@ c #004C1D", +"y@ c #03130B", +"z@ c #030001", +"A@ c #030203", +"B@ c #020505", +"C@ c #02190F", +"D@ c #006337", +"E@ c #009856", +"F@ c #00A15D", +"G@ c #009F5F", +"H@ c #00804E", +"I@ c #00462B", +"J@ c #00482D", +"K@ c #008152", +"L@ c #009F67", +"M@ c #009D69", +"N@ c #00875C", +"O@ c #01412E", +"P@ c #020605", +"Q@ c #030304", +"R@ c #020204", +"S@ c #040405", +"T@ c #040809", +"U@ c #018080", +"V@ c #00E2F8", +"W@ c #0EEFFB", +"X@ c #1EF8FC", +"Y@ c #26FBFD", +"Z@ c #2AFFFF", +"`@ c #0C3B3B", +" # c #030506", +".# c #00A543", +"+# c #00E459", +"@# c #05F86A", +"## c #24FB95", +"$# c #2CFFAB", +"%# c #25F2A2", +"&# c #01A646", +"*# c #00A145", +"=# c #00863C", +"-# c #01421F", +";# c #020806", +"># c #030505", +",# c #030405", +"'# c #030102", +")# c #01321D", +"!# c #007B47", +"~# c #009D5D", +"{# c #00A062", +"]# c #009860", +"^# c #006642", +"/# c #013B26", +"(# c #005B3B", +"_# c #009160", +":# c #009F6C", +"<# c #00986A", +"[# c #006D4E", +"}# c #022118", +"|# c #02181A", +"1# c #00CBD8", +"2# c #00EEFF", +"3# c #0AECFD", +"4# c #1FFFFE", +"5# c #24FFFF", +"6# c #16B1BF", +"7# c #01090E", +"8# c #030101", +"9# c #040404", +"0# c #050505", +"a# c #050506", +"b# c #060606", +"c# c #03170C", +"d# c #01A341", +"e# c #01FF6A", +"f# c #14FB88", +"g# c #1EFFA2", +"h# c #16E08F", +"i# c #066E3A", +"j# c #008635", +"k# c #01A447", +"l# c #01A449", +"m# c #009F49", +"n# c #017B3A", +"o# c #02341A", +"p# c #030403", +"q# c #040001", +"r# c #040000", +"s# c #030C08", +"t# c #024C2D", +"u# c #008B54", +"v# c #029F64", +"w# c #03A168", +"x# c #038B5C", +"y# c #044D34", +"z# c #043C28", +"A# c #03724E", +"B# c #039A6C", +"C# c #039E71", +"D# c #018C66", +"E# c #014E3A", +"F# c #030B09", +"G# c #040505", +"H# c #040304", +"I# c #3A3A3A", +"J# c #0D0D0E", +"K# c #0A0A0A", +"L# c #3B3B3B", +"M# c #040506", +"N# c #031D22", +"O# c #01879F", +"P# c #039CBD", +"Q# c #0CAEC0", +"R# c #069EB8", +"S# c #007299", +"T# c #024458", +"U# c #060607", +"V# c #040403", +"W# c #02441B", +"X# c #048036", +"Y# c #065C33", +"Z# c #01170F", +"`# c #03180D", +" $ c #015625", +".$ c #009040", +"+$ c #00A24A", +"@$ c #01A34D", +"#$ c #009B4C", +"$$ c #016E38", +"%$ c #022616", +"&$ c #040102", +"*$ c #040002", +"=$ c #040203", +"-$ c #031D13", +";$ c #00613B", +">$ c #008E58", +",$ c #009B63", +"'$ c #009C67", +")$ c #00734E", +"!$ c #003B27", +"~$ c #004931", +"{$ c #00825A", +"]$ c #009C71", +"^$ c #009972", +"/$ c #01765A", +"($ c #022D24", +"_$ c #030305", +":$ c #787879", +"<$ c #434344", +"[$ c #515152", +"}$ c #747475", +"|$ c #111112", +"1$ c #070708", +"2$ c #727272", +"3$ c #5D5D5E", +"4$ c #4C4C4D", +"5$ c #909090", +"6$ c #1E1E1F", +"7$ c #222223", +"8$ c #686869", +"9$ c #09090A", +"0$ c #141415", +"a$ c #79797A", +"b$ c #737273", +"c$ c #1A1C1D", +"d$ c #050001", +"e$ c #070000", +"f$ c #000710", +"g$ c #4591AA", +"h$ c #4EA5BF", +"i$ c #00698D", +"j$ c #081D25", +"k$ c #000002", +"l$ c #2B2B2C", +"m$ c #404041", +"n$ c #575758", +"o$ c #707070", +"p$ c #777778", +"q$ c #6C6C6C", +"r$ c #545454", +"s$ c #555555", +"t$ c #565657", +"u$ c #4B4B4B", +"v$ c #343435", +"w$ c #363636", +"x$ c #373738", +"y$ c #2C2C2C", +"z$ c #1A1A1B", +"A$ c #1B1B1C", +"B$ c #1D1D1E", +"C$ c #131314", +"D$ c #080809", +"E$ c #040605", +"F$ c #040303", +"G$ c #040707", +"H$ c #040103", +"I$ c #031F10", +"J$ c #01602C", +"K$ c #009345", +"L$ c #00A24F", +"M$ c #01A351", +"N$ c #00954D", +"O$ c #016033", +"P$ c #031B11", +"Q$ c #040706", +"R$ c #050706", +"S$ c #201617", +"T$ c #395946", +"U$ c #338C67", +"V$ c #349A72", +"W$ c #34A179", +"X$ c #349674", +"Y$ c #365F4E", +"Z$ c #32473D", +"`$ c #05644A", +" % c #00926C", +".% c #019D77", +"+% c #008F70", +"@% c #015846", +"#% c #031310", +"$% c #070707", +"%% c #828283", +"&% c #181819", +"*% c #616161", +"=% c #484849", +"-% c #89898A", +";% c #5C5C5C", +">% c #B8B8B8", +",% c #3A3A3B", +"'% c #3E3E3E", +")% c #8A8A8A", +"!% c #858585", +"~% c #1A1A1A", +"{% c #040708", +"]% c #050607", +"^% c #4F5F65", +"/% c #5CB0CA", +"(% c #006D96", +"_% c #044D69", +":% c #050202", +"<% c #242425", +"[% c #39393A", +"}% c #505050", +"|% c #6D6D6D", +"1% c #838384", +"2% c #969697", +"3% c #A5A5A5", +"4% c #B1B1B1", +"5% c #B5B5B5", +"6% c #B6B6B6", +"7% c #B4B4B4", +"8% c #B2B2B2", +"9% c #B3B3B3", +"0% c #B2B2B1", +"a% c #B0B0B0", +"b% c #ADADAD", +"c% c #ACACAC", +"d% c #A7A7A7", +"e% c #A0A0A0", +"f% c #979797", +"g% c #8C8C8C", +"h% c #8C8C8D", +"i% c #8E8E8E", +"j% c #808080", +"k% c #737373", +"l% c #757575", +"m% c #636363", +"n% c #575757", +"o% c #585858", +"p% c #444445", +"q% c #393939", +"r% c #363637", +"s% c #050806", +"t% c #050907", +"u% c #050807", +"v% c #050606", +"w% c #050405", +"x% c #050003", +"y% c #032514", +"z% c #016A33", +"A% c #00974B", +"B% c #00A253", +"C% c #00A156", +"D% c #008E4E", +"E% c #02512E", +"F% c #04130D", +"G% c #080204", +"H% c #000B0A", +"I% c #AD3939", +"J% c #FF0F11", +"K% c #FB1314", +"L% c #FF1314", +"M% c #FF1313", +"N% c #FD1616", +"O% c #FF1312", +"P% c #EE3C3A", +"Q% c #135243", +"R% c #003727", +"S% c #02775B", +"T% c #009A78", +"U% c #00997A", +"V% c #007E67", +"W% c #02372E", +"X% c #050102", +"Y% c #6F6F70", +"Z% c #313132", +"`% c #464646", +" & c #181818", +".& c #848485", +"+& c #0F0F0F", +"@& c #19191A", +"#& c #505051", +"$& c #696969", +"%& c #898989", +"&& c #C0C0C0", +"*& c #535354", +"=& c #8F8F90", +"-& c #525253", +";& c #515151", +">& c #0E0E0F", +",& c #979798", +"'& c #0B0B0C", +")& c #0F0F10", +"!& c #0A0C0D", +"~& c #99908D", +"{& c #4F9FB9", +"]& c #0A7AA0", +"^& c #509FBA", +"/& c #002533", +"(& c #060000", +"_& c #050608", +":& c #4F4F4F", +"<& c #676768", +"[& c #7F7F7F", +"}& c #949494", +"|& c #A6A6A6", +"1& c #B9B9B9", +"2& c #BBBBBB", +"3& c #BABABA", +"4& c #AEAEAE", +"5& c #AAAAAA", +"6& c #A8A8A8", +"7& c #A4A4A4", +"8& c #A3A3A3", +"9& c #A2A2A2", +"0& c #A1A1A1", +"a& c #9F9F9F", +"b& c #A3A3A2", +"c& c #9E9E9E", +"d& c #9D9D9D", +"e& c #929292", +"f& c #7B7B7B", +"g& c #565656", +"h& c #303031", +"i& c #141414", +"j& c #040606", +"k& c #032D18", +"l& c #01713A", +"m& c #009950", +"n& c #00A158", +"o& c #00A05A", +"p& c #00854D", +"q& c #024329", +"r& c #070A08", +"s& c #000305", +"t& c #AF3030", +"u& c #FF0000", +"v& c #FA0000", +"w& c #FD0000", +"x& c #FC0201", +"y& c #ED2D2A", +"z& c #11A380", +"A& c #00634B", +"B& c #033025", +"C& c #024D3C", +"D& c #00896D", +"E& c #009B7E", +"F& c #00927A", +"G& c #016354", +"H& c #031A17", +"I& c #050000", +"J& c #040607", +"K& c #545455", +"L& c #59595A", +"M& c #6A6A6A", +"N& c #424242", +"O& c #666667", +"P& c #29292A", +"Q& c #787878", +"R& c #6D6D6E", +"S& c #6B6B6B", +"T& c #3D3D3E", +"U& c #737374", +"V& c #BCBCBC", +"W& c #717171", +"X& c #828282", +"Y& c #8D8D8D", +"Z& c #ADADAE", +"`& c #ABABAC", +" * c #5E5E5F", +".* c #B6B6B7", +"+* c #9B9B9B", +"@* c #838383", +"#* c #6E6E6E", +"$* c #565758", +"%* c #B4AEAC", +"&* c #48707E", +"** c #569AB1", +"=* c #ADD7E6", +"-* c #21718B", +";* c #000407", +">* c #060405", +",* c #474748", +"'* c #606061", +")* c #959595", +"!* c #BFBFBF", +"~* c #ABABAB", +"{* c #A9A9A9", +"]* c #9C9C9C", +"^* c #9A9A9A", +"/* c #999999", +"(* c #989898", +"_* c #969696", +":* c #939393", +"<* c #8B8B8B", +"[* c #727273", +"}* c #2C2C2D", +"|* c #050707", +"1* c #03371E", +"2* c #017640", +"3* c #009B56", +"4* c #01A15C", +"5* c #047849", +"6* c #003827", +"7* c #AF3732", +"8* c #FF0500", +"9* c #FB0A01", +"0* c #FE0900", +"a* c #FD0B02", +"b* c #ED332A", +"c* c #009A74", +"d* c #02886C", +"e* c #024B3C", +"f* c #032F26", +"g* c #016452", +"h* c #00947B", +"i* c #009982", +"j* c #008372", +"k* c #02433B", +"l* c #383839", +"m* c #7F7F80", +"n* c #686868", +"o* c #7B7B7C", +"p* c #8A8A8B", +"q* c #2E2E2E", +"r* c #858586", +"s* c #2F2F2F", +"t* c #252526", +"u* c #7C7C7C", +"v* c #5D5D5D", +"w* c #5A5A5B", +"x* c #818182", +"y* c #626263", +"z* c #666666", +"A* c #494949", +"B* c #777777", +"C* c #4D4D4D", +"D* c #6B6B6C", +"E* c #767677", +"F* c #919191", +"G* c #676767", +"H* c #4A4B4C", +"I* c #726A68", +"J* c #709CAB", +"K* c #62AFCA", +"L* c #5BA7C2", +"M* c #002F45", +"N* c #090000", +"O* c #0C0C0D", +"P* c #414142", +"Q* c #C4C4C4", +"R* c #C5C5C5", +"S* c #C2C2C2", +"T* c #BEBEBE", +"U* c #AFAFAF", +"V* c #8F8F8F", +"W* c #848484", +"X* c #6A6A6B", +"Y* c #4A4A4A", +"Z* c #060707", +"`* c #060506", +" = c #060003", +".= c #050A08", +"+= c #034125", +"@= c #017E48", +"#= c #009C5B", +"$= c #049F5F", +"%= c #00A167", +"&= c #AE5D49", +"*= c #FF0100", +"== c #FB0E01", +"-= c #FF0B00", +";= c #FD0D01", +">= c #EE2C23", +",= c #13614E", +"'= c #008462", +")= c #029B78", +"!= c #01725D", +"~= c #033229", +"{= c #033A31", +"]= c #017C69", +"^= c #009985", +"/= c #009484", +"(= c #016C61", +"_= c #042522", +":= c #050708", +"<= c #5B5B5B", +"[= c #808081", +"}= c #5F5F60", +"|= c #AAAAAB", +"1= c #595959", +"2= c #7D7D7E", +"3= c #636364", +"4= c #484848", +"5= c #3B3B3C", +"6= c #202021", +"7= c #424243", +"8= c #868586", +"9= c #9BA0A2", +"0= c #88B7C7", +"a= c #288DB2", +"b= c #00648A", +"c= c #061419", +"d= c #060302", +"e= c #060608", +"f= c #C8C8C8", +"g= c #232324", +"h= c #050507", +"i= c #060406", +"j= c #060002", +"k= c #050E0B", +"l= c #02492C", +"m= c #04824D", +"n= c #00A96A", +"o= c #AF694E", +"p= c #FF0300", +"q= c #FB1202", +"r= c #FF0F00", +"s= c #FD1001", +"t= c #FF0900", +"u= c #EE2F23", +"v= c #161619", +"w= c #001C15", +"x= c #02674F", +"y= c #009173", +"z= c #009078", +"A= c #025549", +"B= c #032923", +"C= c #025146", +"D= c #008C7B", +"E= c #00998A", +"F= c #00897E", +"G= c #024D48", +"H= c #050D0D", +"I= c #060708", +"J= c #CBCBCB", +"K= c #2B2B2B", +"L= c #939394", +"M= c #171718", +"N= c #7A7A7B", +"O= c #4D4D4E", +"P= c #DCDCDC", +"Q= c #161617", +"R= c #A5A5A6", +"S= c #C1C1C1", +"T= c #646464", +"U= c #5F5F5F", +"V= c #7C7C7D", +"W= c #646465", +"X= c #464647", +"Y= c #7A7A7A", +"Z= c #69696A", +"`= c #757576", +" - c #1E1E1E", +".- c #808182", +"+- c #6E6A68", +"@- c #001E34", +"#- c #0373A0", +"$- c #0077A2", +"%- c #02465F", +"&- c #070709", +"*- c #CACACA", +"=- c #B7B7B7", +"-- c #888888", +";- c #3C3C3D", +">- c #060808", +",- c #08130D", +"'- c #005D3C", +")- c #AE6148", +"!- c #FB1501", +"~- c #FF1300", +"{- c #FD1401", +"]- c #FF0D00", +"^- c #EE3323", +"/- c #161F20", +"(- c #070607", +"_- c #03372C", +":- c #017961", +"<- c #00967C", +"[- c #009A83", +"}- c #017D6D", +"|- c #033A33", +"1- c #032E29", +"2- c #016B60", +"3- c #009589", +"4- c #01968E", +"5- c #017570", +"6- c #032E2E", +"7- c #070304", +"8- c #09090B", +"9- c #49494A", +"0- c #616162", +"a- c #535355", +"b- c #555556", +"c- c #4F4F51", +"d- c #585859", +"e- c #1E1E20", +"f- c #8D8D8E", +"g- c #AFAFB0", +"h- c #6F6F6F", +"i- c #717172", +"j- c #6C6C6D", +"k- c #707071", +"l- c #656566", +"m- c #514F50", +"n- c #2E86A6", +"o- c #006F9D", +"p- c #026F98", +"q- c #041F29", +"r- c #080202", +"s- c #06080A", +"t- c #0C0C0E", +"u- c #878788", +"v- c #CCCCCC", +"w- c #C6C6C6", +"x- c #BDBDBD", +"y- c #868686", +"z- c #1A1A1C", +"A- c #070808", +"B- c #0A0204", +"C- c #000509", +"D- c #B03F33", +"E- c #FF1400", +"F- c #FB1700", +"G- c #FF1700", +"H- c #FD1801", +"I- c #FF1100", +"J- c #EE3522", +"K- c #171619", +"L- c #08090A", +"M- c #070002", +"N- c #06110F", +"O- c #024F41", +"P- c #008771", +"Q- c #009883", +"R- c #009483", +"S- c #01645A", +"T- c #042925", +"U- c #033F3A", +"V- c #017972", +"W- c #00948E", +"X- c #018E8B", +"Y- c #005655", +"Z- c #162424", +"`- c #1C1717", +" ; c #272728", +".; c #131313", +"+; c #4C4C4C", +"@; c #1C1C1D", +"#; c #474747", +"$; c #0D0D0D", +"%; c #525252", +"&; c #454545", +"*; c #292929", +"=; c #BBBBBC", +"-; c #2D2D2D", +";; c #3F3F40", +">; c #9E9E9F", +",; c #242424", +"'; c #3E4041", +"); c #9A9391", +"!; c #13323D", +"~; c #00729E", +"{; c #0276A4", +"]; c #015271", +"^; c #CCCCCB", +"/; c #B5B5B4", +"(; c #A8A8A7", +"_; c #878787", +":; c #818181", +"<; c #0A0707", +"[; c #000A0D", +"}; c #B03E31", +"|; c #FF1900", +"1; c #FB1B00", +"2; c #FF1A00", +"3; c #FD1C01", +"4; c #FF1200", +"5; c #EE4028", +"6; c #144A40", +"7; c #080104", +"8; c #06090A", +"9; c #070507", +"0; c #070003", +"a; c #04221E", +"b; c #016557", +"c; c #008F7D", +"d; c #009989", +"e; c #03897F", +"f; c #003934", +"g; c #627573", +"h; c #529A97", +"i; c #00817E", +"j; c #019494", +"k; c #7CBFC0", +"l; c #8CA3A4", +"m; c #0C0809", +"n; c #050002", +"o; c #07090A", +"p; c #3D3D3D", +"q; c #0A0A0B", +"r; c #4E4E4E", +"s; c #003E5A", +"t; c #0176A5", +"u; c #01719E", +"v; c #376070", +"w; c #A49D9A", +"x; c #C7C8C9", +"y; c #CFCFCF", +"z; c #3E3E3F", +"A; c #262627", +"B; c #151516", +"C; c #1F1F21", +"D; c #1D1D1F", +"E; c #39393B", +"F; c #353537", +"G; c #989897", +"H; c #7E7E7E", +"I; c #868685", +"J; c #08080A", +"K; c #0A0607", +"L; c #B14132", +"M; c #FF1D00", +"N; c #FB1F00", +"O; c #FF1E00", +"P; c #FD2001", +"Q; c #FF1600", +"R; c #EE462A", +"S; c #12A383", +"T; c #006A52", +"U; c #062C24", +"V; c #070204", +"W; c #070305", +"X; c #070A0B", +"Y; c #070205", +"Z; c #043932", +"`; c #01796B", +" > c #049689", +".> c #008A80", +"+> c #A9DAD8", +"@> c #627272", +"#> c #001F1D", +"$> c #1F7F7E", +"%> c #75C3C5", +"&> c #66BABD", +"*> c #408285", +"=> c #00181A", +"-> c #0A0001", +";> c #07080A", +">> c #0B0B0D", +",> c #120F0F", +"'> c #455258", +")> c #2991BA", +"!> c #2C9FCF", +"~> c #409CC2", +"{> c #BCC2C5", +"]> c #C5C4C3", +"^> c #BEBFBF", +"/> c #989899", +"(> c #333334", +"_> c #1F1F20", +":> c #010103", +"<> c #161618", +"[> c #797979", +"}> c #7D7D7D", +"|> c #040406", +"1> c #0B0707", +"2> c #B14232", +"3> c #FF2100", +"4> c #FB2200", +"5> c #FF2200", +"6> c #FD2401", +"7> c #EE4629", +"8> c #12A180", +"9> c #009B77", +"0> c #029274", +"a> c #03614F", +"b> c #06201C", +"c> c #080002", +"d> c #080607", +"e> c #080103", +"f> c #061412", +"g> c #06524A", +"h> c #007F74", +"i> c #52B6B0", +"j> c #5CB4B2", +"k> c #004543", +"l> c #384847", +"m> c #669B9C", +"n> c #56A1A4", +"o> c #48B5BC", +"p> c #007B85", +"q> c #06464B", +"r> c #070B0C", +"s> c #080102", +"t> c #080708", +"u> c #101011", +"v> c #2A2A2B", +"w> c #353536", +"x> c #B5B6B7", +"y> c #D9D2CF", +"z> c #78A8BC", +"A> c #289CCD", +"B> c #2696C6", +"C> c #649BB2", +"D> c #CDC6C3", +"E> c #C0C2C2", +"F> c #C7C7C7", +"G> c #5B5B5C", +"H> c #282828", +"I> c #373737", +"J> c #767676", +"K> c #7F7F7E", +"L> c #2D2D2E", +"M> c #07070A", +"N> c #0B0708", +"O> c #00090E", +"P> c #B14432", +"Q> c #FF2500", +"R> c #FB2600", +"S> c #FF2600", +"T> c #FD2701", +"U> c #EE4123", +"V> c #154F43", +"W> c #007257", +"X> c #029778", +"Y> c #019C80", +"Z> c #018A73", +"`> c #035448", +" , c #061514", +"., c #080003", +"+, c #080609", +"@, c #0B0306", +"#, c #001C1A", +"$, c #518E8A", +"%, c #5EBBB9", +"&, c #008584", +"*, c #3CA3A3", +"=, c #637B7C", +"-, c #596868", +";, c #49959A", +">, c #00838E", +",, c #0393A1", +"', c #026C78", +"), c #05272C", +"!, c #080507", +"~, c #07090C", +"{, c #0A0A0C", +"], c #212123", +"^, c #A6A6A7", +"/, c #CDCDCD", +"(, c #D3D3D3", +"_, c #C9C9C9", +":, c #4198BD", +"<, c #2DA0D2", +"[, c #2D91BB", +"}, c #A0B1B8", +"|, c #CAC6C5", +"1, c #C0C1C1", +"2, c #A0A0A1", +"3, c #0D0D0F", +"4, c #19191B", +"5, c #0B0808", +"6, c #000A0E", +"7, c #B14732", +"8, c #FF2900", +"9, c #FB2A00", +"0, c #FF2A00", +"a, c #FD2B01", +"b, c #EE4523", +"c, c #19171B", +"d, c #030908", +"e, c #054637", +"f, c #017D65", +"g, c #01987D", +"h, c #019B83", +"i, c #018270", +"j, c #04463F", +"k, c #070D0D", +"l, c #0B0C0D", +"m, c #565051", +"n, c #608B89", +"o, c #00605E", +"p, c #55B9B9", +"q, c #4CAAAD", +"r, c #55A4A7", +"s, c #4D5758", +"t, c #00282B", +"u, c #047783", +"v, c #0193A5", +"w, c #018698", +"x, c #03505C", +"y, c #071013", +"z, c #090101", +"A, c #080B0C", +"B, c #080B0D", +"C, c #121214", +"D, c #D5D5D5", +"E, c #C3C5C5", +"F, c #CFC9C7", +"G, c #93AFBB", +"H, c #2997C7", +"I, c #2C9BCE", +"J, c #4E94B2", +"K, c #C7C3C1", +"L, c #C1C2C3", +"M, c #CBCBCA", +"N, c #A9A9AA", +"O, c #8D8D8C", +"P, c #747474", +"Q, c #000A0F", +"R, c #B14832", +"S, c #FF2D00", +"T, c #FB2D00", +"U, c #FD2E01", +"V, c #FF2800", +"W, c #EE4823", +"X, c #192022", +"Y, c #050204", +"Z, c #0A0205", +"`, c #071513", +" ' c #044C3F", +".' c #01836D", +"+' c #019984", +"@' c #019887", +"#' c #02786C", +"$' c #053935", +"%' c #565859", +"&' c #625D5E", +"*' c #3B7070", +"=' c #63B9BB", +"-' c #56B7BB", +";' c #49A4AA", +">' c #004045", +",' c #091D1F", +"'' c #044B54", +")' c #018699", +"!' c #0192A9", +"~' c #027387", +"{' c #05323B", +"]' c #090506", +"^' c #090A0B", +"/' c #D4D4D4", +"(' c #C4C5C6", +"_' c #CCC6C3", +":' c #599CBA", +"<' c #2A9CD1", +"[' c #2991C1", +"}' c #8BA8B5", +"|' c #CDC7C5", +"1' c #BDBFC0", +"2' c #333333", +"3' c #08080B", +"4' c #00090F", +"5' c #B14A32", +"6' c #FF3100", +"7' c #FB3100", +"8' c #FD3201", +"9' c #FF2C00", +"0' c #EE4B23", +"a' c #191E21", +"b' c #090B0D", +"c' c #090508", +"d' c #090205", +"e' c #071C19", +"f' c #018675", +"g' c #019A8A", +"h' c #019488", +"i' c #057069", +"j' c #001B1A", +"k' c #545354", +"l' c #626163", +"m' c #373131", +"n' c #678788", +"o' c #558688", +"p' c #49B2B9", +"q' c #008B98", +"r' c #04727D", +"s' c #052B30", +"t' c #06252A", +"u' c #026475", +"v' c #018FA9", +"w' c #018CA7", +"x' c #035265", +"y' c #053E44", +"z' c #03A7A8", +"A' c #01B8BD", +"B' c #05646B", +"C' c #080A0C", +"D' c #0B0B0E", +"E' c #DADADA", +"F' c #CECECE", +"G' c #C4C5C5", +"H' c #CAC8C6", +"I' c #ADB8BD", +"J' c #3194C1", +"K' c #2C9BD1", +"L' c #3F90B5", +"M' c #BDBEBE", +"N' c #CECFCF", +"O' c #929293", +"P' c #4F4F50", +"Q' c #323233", +"R' c #010104", +"S' c #0C0909", +"T' c #B14C32", +"U' c #FF3500", +"V' c #FB3500", +"W' c #FD3601", +"X' c #FF3000", +"Y' c #EE4E23", +"Z' c #090B0C", +"`' c #07221F", +" ) c #035D53", +".) c #018A7D", +"+) c #049C92", +"@) c #00837C", +"#) c #539D9B", +"$) c #5B6262", +"%) c #110F10", +"&) c #403D3E", +"*) c #7B7A7A", +"=) c #777273", +"-) c #3C6D70", +";) c #006B75", +">) c #0392A1", +",) c #018C9C", +"') c #03545F", +")) c #071B1F", +"!) c #053842", +"~) c #027992", +"{) c #0096B6", +"]) c #02BED9", +"^) c #07DEED", +"/) c #04F6FE", +"() c #00F6FF", +"_) c #046876", +":) c #090C0D", +"<) c #D2D2D2", +"[) c #C2C4C4", +"}) c #74A2B7", +"|) c #2998CD", +"1) c #2B95C9", +"2) c #739FB3", +"3) c #ABA5A2", +"4) c #666768", +"5) c #0D090A", +"6) c #000A10", +"7) c #B14E32", +"8) c #FF3900", +"9) c #FB3900", +"0) c #FD3901", +"a) c #FF3400", +"b) c #EE5123", +"c) c #1A1F22", +"d) c #0B0A0C", +"e) c #0A0B0C", +"f) c #0A0B0D", +"g) c #0A0508", +"h) c #0A0507", +"i) c #072725", +"j) c #04655E", +"k) c #008A82", +"l) c #30AEAA", +"m) c #299392", +"n) c #3B8E8E", +"o) c #445152", +"p) c #585152", +"q) c #767475", +"r) c #080305", +"s) c #08171A", +"t) c #03525A", +"u) c #018292", +"v) c #0192A7", +"w) c #027C8F", +"x) c #053942", +"y) c #07161B", +"z) c #028093", +"A) c #03C9E5", +"B) c #09C2DA", +"C) c #09C4E1", +"D) c #04E0FF", +"E) c #07DCE9", +"F) c #0A191B", +"G) c #0A0608", +"H) c #D9D9D9", +"I) c #C4C4C5", +"J) c #3F93BA", +"K) c #1887BF", +"L) c #0D6894", +"M) c #081117", +"N) c #030406", +"O) c #747473", +"P) c #0E0E10", +"Q) c #B15032", +"R) c #FF3D00", +"S) c #FB3C00", +"T) c #FD3D01", +"U) c #FF3800", +"V) c #EE5423", +"W) c #1A1E22", +"X) c #050406", +"Y) c #090A0C", +"Z) c #0A0407", +"`) c #09080A", +" ! c #062F2D", +".! c #026662", +"+! c #008F8D", +"@! c #009192", +"#! c #01787C", +"$! c #023E41", +"%! c #030809", +"&! c #090304", +"*! c #090608", +"=! c #06282D", +"-! c #026573", +";! c #018AA1", +">! c #0192AB", +",! c #035567", +"'! c #028B91", +")! c #00E1EB", +"!! c #00DDEE", +"~! c #02E6F6", +"{! c #09ECFF", +"]! c #1CE9F5", +"^! c #0D2627", +"/! c #090305", +"(! c #2A2A2C", +"_! c #99999A", +":! c #D9D9D8", +"~ c #072B32", +",~ c #0B0304", +"'~ c #0A0D0F", +")~ c #DDDDDD", +"!~ c #D7D7D7", +"~~ c #D1D1D1", +"{~ c #2B2B2D", +"]~ c #0D0E10", +"^~ c #0B090A", +"/~ c #091319", +"(~ c #026091", +"_~ c #016DA8", +":~ c #03486D", +"<~ c #606060", +"[~ c #0F0F11", +"}~ c #0A0A0D", +"|~ c #0E0A0B", +"1~ c #B25633", +"2~ c #FF4900", +"3~ c #FB4700", +"4~ c #FF4800", +"5~ c #FD4801", +"6~ c #EE5D23", +"7~ c #0B090C", +"8~ c #091315", +"9~ c #05464B", +"0~ c #017C86", +"a~ c #0195A5", +"b~ c #018E9F", +"c~ c #03616E", +"d~ c #081C22", +"e~ c #083738", +"f~ c #058585", +"g~ c #057574", +"h~ c #02949D", +"i~ c #00C5DA", +"j~ c #04D1E8", +"k~ c #03CAE6", +"l~ c #03DCFB", +"m~ c #10F3FF", +"n~ c #07889A", +"o~ c #09080D", +"p~ c #0B0A0B", +"q~ c #1B1B1D", +"r~ c #8B8B8C", +"s~ c #C3C3C3", +"t~ c #0A0C0F", +"u~ c #0B0403", +"v~ c #063047", +"w~ c #01669D", +"x~ c #072739", +"y~ c #0B0504", +"z~ c #4E4E4F", +"A~ c #1C1C1E", +"B~ c #0E0B0C", +"C~ c #B25833", +"D~ c #FF4D00", +"E~ c #FB4B00", +"F~ c #FF4C00", +"G~ c #FD4C01", +"H~ c #EE6023", +"I~ c #1B2024", +"J~ c #070608", +"K~ c #0B0C0E", +"L~ c #0B0D0F", +"M~ c #0C090B", +"N~ c #0C0506", +"O~ c #091B1D", +"P~ c #054E55", +"Q~ c #028190", +"R~ c #0294A9", +"S~ c #019CB1", +"T~ c #03C6D3", +"U~ c #05F5F9", +"V~ c #01FEFF", +"W~ c #00FBFE", +"X~ c #00EBF4", +"Y~ c #02D6E9", +"Z~ c #0EE9F5", +"`~ c #13F0FE", +" { c #21F7FD", +".{ c #0B98B4", +"+{ c #03485F", +"@{ c #0C0808", +"#{ c #DBDBDB", +"${ c #8E8E8F", +"%{ c #222224", +"&{ c #04517C", +"*{ c #026DAB", +"={ c #03527F", +"-{ c #0B0D11", +";{ c #0C0C0F", +">{ c #0F0C0C", +",{ c #000B12", +"'{ c #B25A33", +"){ c #FF5100", +"!{ c #FB4F00", +"~{ c #FF4F00", +"{{ c #FD5001", +"]{ c #EE6323", +"^{ c #1C2024", +"/{ c #0D0C0E", +"({ c #0C080A", +"_{ c #092024", +":{ c #045763", +"<{ c #00B0C6", +"[{ c #06CEE3", +"}{ c #0ABFCF", +"|{ c #07D5EA", +"1{ c #03E8FF", +"2{ c #02EEFE", +"3{ c #00EFFE", +"4{ c #16FAFD", +"5{ c #28FFFF", +"6{ c #1AC3D0", +"7{ c #016E8F", +"8{ c #027E9F", +"9{ c #073341", +"0{ c #0C0404", +"a{ c #0B0D10", +"b{ c #0C0707", +"c{ c #091F2D", +"d{ c #0266A0", +"e{ c #0268A4", +"f{ c #06334C", +"g{ c #0C0604", +"h{ c #656565", +"i{ c #444444", +"j{ c #0F0C0D", +"k{ c #000A13", +"l{ c #B25C33", +"m{ c #FF5500", +"n{ c #FB5300", +"o{ c #FF5300", +"p{ c #FD5401", +"q{ c #EE6623", +"r{ c #0D0C0F", +"s{ c #0C0608", +"t{ c #0C0A0B", +"u{ c #01B5BB", +"v{ c #00CFDC", +"w{ c #02D7E9", +"x{ c #05E6F4", +"y{ c #08F4FF", +"z{ c #18E3EA", +"A{ c #067992", +"B{ c #0AA1B8", +"C{ c #0AADBE", +"D{ c #017192", +"E{ c #016B89", +"F{ c #03799A", +"G{ c #027291", +"H{ c #091D24", +"I{ c #0C0708", +"J{ c #0D0D10", +"K{ c #111113", +"L{ c #DADAD9", +"M{ c #131316", +"N{ c #0C0605", +"O{ c #054062", +"P{ c #026CAB", +"Q{ c #03598D", +"R{ c #0A151D", +"S{ c #0C090A", +"T{ c #040407", +"U{ c #6D6D6C", +"V{ c #171719", +"W{ c #050508", +"X{ c #000B14", +"Y{ c #B25E33", +"Z{ c #FF5A00", +"`{ c #FB5600", +" ] c #FF5700", +".] c #FD5801", +"+] c #FF5400", +"@] c #EE6923", +"#] c #1C2025", +"$] c #080709", +"%] c #0C1113", +"&] c #0D0000", +"*] c #069393", +"=] c #07E7F1", +"-] c #1AF7FA", +";] c #23FFFF", +">] c #20B5B6", +",] c #072735", +"'] c #027B9D", +")] c #037190", +"!] c #026B89", +"~] c #027EA0", +"{] c #03607A", +"]] c #0C0E10", +"^] c #0F0E10", +"/] c #060709", +"(] c #4B4B4D", +"_] c #E0E0E0", +":] c #DCDCDB", +"<] c #3A3A3C", +"[] c #0F0F12", +"}] c #0C0D0F", +"|] c #0D0A0C", +"1] c #0B1319", +"2] c #035C91", +"3] c #0269A9", +"4] c #053F62", +"5] c #0D0807", +"6] c #0C0D10", +"7] c #100D0D", +"8] c #B26033", +"9] c #FF5D00", +"0] c #FB5A00", +"a] c #FF5B00", +"b] c #FD5B01", +"c] c #EE6C23", +"d] c #1D2125", +"e] c #0E0D0F", +"f] c #0C1617", +"g] c #03AAB8", +"h] c #02F5FF", +"i] c #1AFCFE", +"j] c #1DE4EB", +"k] c #096D7F", +"l] c #0A0F12", +"m] c #0D1012", +"n] c #0D0808", +"o] c #06485C", +"p] c #027EA1", +"q] c #026E8C", +"r] c #0280A3", +"s] c #07485B", +"t] c #222426", +"u] c #DEDEDE", +"v] c #D7D7D6", +"w] c #0C0E11", +"x] c #0D0705", +"y] c #082E47", +"z] c #0269A8", +"A] c #025F98", +"B] c #09202E", +"C] c #0D0A0A", +"D] c #0C1114", +"E] c #0C0C10", +"F] c #100D0E", +"G] c #000A15", +"H] c #B26234", +"I] c #FF6100", +"J] c #FB5E01", +"K] c #FF5E00", +"L] c #FD5F01", +"M] c #EE6F23", +"N] c #0E0D10", +"O] c #0D080A", +"P] c #09414E", +"Q] c #0A444D", +"R] c #016F86", +"S] c #01829E", +"T] c #064B5A", +"U] c #0D0709", +"V] c #0C0E12", +"W] c #03627E", +"X] c #027A9D", +"Y] c #036884", +"Z] c #027392", +"`] c #007496", +" ^ c #446974", +".^ c #D4CDCB", +"+^ c #DBDDDE", +"@^ c #959596", +"#^ c #272729", +"$^ c #044D7C", +"%^ c #026BAD", +"&^ c #044671", +"*^ c #0D0405", +"=^ c #0E0000", +"-^ c #0C0D11", +";^ c #0E0E11", +">^ c #060609", +",^ c #111114", +"'^ c #100E0E", +")^ c #000B15", +"!^ c #B36434", +"~^ c #FF6600", +"{^ c #FB6201", +"]^ c #FF6200", +"^^ c #FD6301", +"/^ c #FF5F00", +"(^ c #EF7223", +"_^ c #0D0F11", +":^ c #0E0304", +"<^ c #09313B", +"[^ c #02829C", +"}^ c #027D96", +"|^ c #092F38", +"1^ c #0E0809", +"2^ c #0E0A0C", +"3^ c #0A2028", +"4^ c #047899", +"5^ c #017292", +"6^ c #0D708C", +"7^ c #29A1C2", +"8^ c #3FACC9", +"9^ c #B8C6CA", +"0^ c #D6D2D1", +"a^ c #CFD1D1", +"b^ c #0D0E11", +"c^ c #0E0909", +"d^ c #0A1F2E", +"e^ c #025F9D", +"f^ c #016DAC", +"g^ c #036B8C", +"h^ c #076A85", +"i^ c #0D0F14", +"j^ c #0E0A0A", +"k^ c #5E5E5E", +"l^ c #202022", +"m^ c #0D1011", +"n^ c #110E0F", +"o^ c #B36634", +"p^ c #FF6A00", +"q^ c #FB6501", +"r^ c #FD6601", +"s^ c #FF6300", +"t^ c #EF7523", +"u^ c #1E2126", +"v^ c #0F0E11", +"w^ c #0D1013", +"x^ c #0D1114", +"y^ c #0E0708", +"z^ c #064A59", +"A^ c #0287A3", +"B^ c #036E85", +"C^ c #0C191E", +"D^ c #0E0C0E", +"E^ c #100B0B", +"F^ c #002D3C", +"G^ c #128CAF", +"H^ c #369FBD", +"I^ c #3499B4", +"J^ c #2AA8CA", +"K^ c #4EA3BA", +"L^ c #D2D0D0", +"M^ c #18181A", +"N^ c #000003", +"O^ c #0E0504", +"P^ c #05577B", +"Q^ c #02A5E8", +"R^ c #02A1DA", +"S^ c #00CAFF", +"T^ c #0383BC", +"U^ c #09090C", +"V^ c #0E070C", +"W^ c #0E040A", +"X^ c #0E0C10", +"Y^ c #0E0D11", +"Z^ c #000B16", +"`^ c #B36834", +" / c #FF6E00", +"./ c #FB6901", +"+/ c #FD6A01", +"@/ c #FF6800", +"#/ c #EF7824", +"$/ c #1D2126", +"%/ c #046579", +"&/ c #0288A4", +"*/ c #045A6C", +"=/ c #0F0D10", +"-/ c #595455", +";/ c #5DABC1", +">/ c #2CA8CB", +",/ c #3496B1", +"'/ c #369FBC", +")/ c #28A7C9", +"!/ c #72ACBC", +"~/ c #DDD6D4", +"{/ c #DFDFDF", +"]/ c #000004", +"^/ c #0D0D11", +"// c #0E0C0F", +"(/ c #0D1415", +"_/ c #04BEC9", +":/ c #06A9D9", +"( c #D5D2D1", +",( c #D4D5D5", +"'( c #9C9C9D", +")( c #2C2C2F", +"!( c #0E1114", +"~( c #0F0404", +"{( c #06819D", +"]( c #00CBFF", +"^( c #08B6F3", +"/( c #1BDAFD", +"(( c #23EBFF", +"_( c #164B4F", +":( c #0D0306", +"<( c #0F1114", +"[( c #101013", +"}( c #434345", +"|( c #07070B", +"1( c #15FFE5", +"2( c #05FEC2", +"3( c #00FDA8", +"4( c #00FC9D", +"5( c #00FFA3", +"6( c #087D4D", +"7( c #0F0009", +"8( c #B36E34", +"9( c #FF7A00", +"0( c #FB7401", +"a( c #FF7500", +"b( c #FD7601", +"c( c #FF7300", +"d( c #EF8124", +"e( c #0E1013", +"f( c #0B0506", +"g( c #347E8E", +"h( c #30B7D2", +"i( c #3FA1B6", +"j( c #C6CBCC", +"k( c #D6D6D6", +"l( c #6FABBC", +"m( c #28A5C9", +"n( c #3C9DB8", +"o( c #409CB5", +"p( c #28A9CC", +"q( c #54A3B8", +"r( c #DEDAD9", +"s( c #565658", +"t( c #121215", +"u( c #0F0A0A", +"v( c #0D1F2A", +"w( c #0098E7", +"x( c #06B6FF", +"y( c #1CE4FF", +"z( c #149CB9", +"A( c #0C0A13", +"B( c #0E0F12", +"C( c #08080C", +"D( c #2F2F31", +"E( c #1BFAD6", +"F( c #13FCC5", +"G( c #0BFFAF", +"H( c #02FB91", +"I( c #01FF97", +"J( c #03E592", +"K( c #0F1918", +"L( c #100C10", +"M( c #0F1214", +"N( c #0F1013", +"O( c #121011", +"P( c #020B17", +"Q( c #B37035", +"R( c #FF7E00", +"S( c #FB7801", +"T( c #FF7900", +"U( c #FD7901", +"V( c #FF7700", +"W( c #EF8424", +"X( c #1F2228", +"Y( c #000104", +"Z( c #7B7A7B", +"`( c #D0D3D4", +" _ c #40A7BB", +"._ c #27ADC8", +"+_ c #60A8B7", +"@_ c #D8D3D2", +"#_ c #D5D5D6", +"$_ c #49A2BB", +"%_ c #2DA8CB", +"&_ c #479BB2", +"*_ c #40A5C0", +"=_ c #2DACCF", +"-_ c #548593", +";_ c #251E1E", +">_ c #000105", +",_ c #100B0C", +"'_ c #0E1922", +")_ c #0C344E", +"!_ c #055A8C", +"~_ c #005A9D", +"{_ c #09304B", +"]_ c #100B0A", +"^_ c #5C5C5D", +"/_ c #6F6F6E", +"(_ c #535353", +"__ c #0F1213", +":_ c #0F1413", +"<_ c #0F1112", +"[_ c #04C185", +"}_ c #06B87E", +"|_ c #09F1A4", +"1_ c #03FF9A", +"2_ c #0AFC9C", +"3_ c #11FFB6", +"4_ c #0D4E3B", +"5_ c #10030A", +"6_ c #100A10", +"7_ c #100C11", +"8_ c #0F1113", +"9_ c #131011", +"0_ c #020B18", +"a_ c #B37235", +"b_ c #FF8200", +"c_ c #FB7B01", +"d_ c #FF7D00", +"e_ c #FD7D01", +"f_ c #FF7B00", +"g_ c #EF8724", +"h_ c #111013", +"i_ c #0F0F13", +"j_ c #E1E3E3", +"k_ c #DDD8D7", +"l_ c #A7C0C4", +"m_ c #31AAC3", +"n_ c #29A8C2", +"o_ c #8AB4BD", +"p_ c #DDD7D6", +"q_ c #D9D6D6", +"r_ c #B4C3C8", +"s_ c #2F9EBE", +"t_ c #36A9C9", +"u_ c #428DA2", +"v_ c #1082A2", +"w_ c #006C8D", +"x_ c #091E27", +"y_ c #130E10", +"z_ c #0F1115", +"A_ c #100E11", +"B_ c #110300", +"C_ c #0A2A45", +"D_ c #0364A6", +"E_ c #044E81", +"F_ c #0F1216", +"G_ c #717170", +"H_ c #232325", +"I_ c #100710", +"J_ c #11000D", +"K_ c #100B12", +"L_ c #100F13", +"M_ c #00B675", +"N_ c #02C379", +"O_ c #04EB94", +"P_ c #06FFA1", +"Q_ c #0DFDA6", +"R_ c #22FFCC", +"S_ c #0BA770", +"T_ c #046E40", +"U_ c #0A442F", +"V_ c #0E1C19", +"W_ c #10080E", +"X_ c #B37435", +"Y_ c #FF8600", +"Z_ c #FB7F01", +"`_ c #FF8100", +" : c #FD8101", +".: c #FF7F00", +"+: c #EF8A24", +"@: c #858587", +"#: c #E1E1E1", +"$: c #D3D2D2", +"%: c #D1D3D4", +"&: c #E1D8D7", +"*: c #82B5BF", +"=: c #28AEC8", +"-: c #34A4BA", +";: c #B3C3C6", +">: c #D9D7D6", +",: c #DAD4D2", +"': c #92BCC7", +"): c #239FC3", +"!: c #066A87", +"~: c #034D63", +"{: c #0682A5", +"]: c #066580", +"^: c #0F1014", +"/: c #054F82", +"(: c #0260A2", +"_: c #0A2A42", +":: c #38383A", +"<: c #363638", +"[: c #09090D", +"}: c #101214", +"|: c #10050F", +"1: c #0D4123", +"2: c #088F35", +"3: c #0D2716", +"4: c #100A11", +"5: c #01D47E", +"6: c #07EC94", +"7: c #16FCB7", +"8: c #1CFCBA", +"9: c #1EFFC7", +"0: c #23F2CF", +"a: c #05A763", +"b: c #03A661", +"c: c #03A261", +"d: c #048E58", +"e: c #066B46", +"f: c #0B3E2D", +"g: c #0F1818", +"h: c #110A0F", +"i: c #11090F", +"j: c #110F13", +"k: c #101215", +"l: c #101114", +"m: c #131112", +"n: c #030C19", +"o: c #B47635", +"p: c #FF8A00", +"q: c #FB8301", +"r: c #FF8400", +"s: c #FD8501", +"t: c #FF8300", +"u: c #EF8D24", +"v: c #202329", +"w: c #E7E7E7", +"x: c #58ABBB", +"y: c #26AFCA", +"z: c #4EA5B7", +"A: c #CECDCD", +"B: c #E4E5E5", +"C: c #A8A3A2", +"D: c #064F65", +"E: c #0181A6", +"F: c #075972", +"G: c #055A72", +"H: c #0285A9", +"I: c #074D61", +"J: c #110B0D", +"K: c #101216", +"L: c #110B0A", +"M: c #0B2B44", +"N: c #0263A5", +"O: c #054B7C", +"P: c #28282A", +"Q: c #49494B", +"R: c #100911", +"S: c #0E2E1B", +"T: c #07EB5C", +"U: c #09FF5E", +"V: c #08A231", +"W: c #120311", +"X: c #101414", +"Y: c #00F588", +"Z: c #09FFA4", +"`: c #1DFEC2", +" < c #26FFD6", +".< c #2BFFEA", +"+< c #178D74", +"@< c #026D3B", +"#< c #039356", +"$< c #039E5E", +"%< c #03A363", +"&< c #03A567", +"*< c #039F65", +"=< c #048859", +"-< c #076244", +";< c #0B382C", +">< c #101416", +",< c #B47835", +"'< c #FF8E00", +")< c #FB8701", +"!< c #FF8800", +"~< c #FD8801", +"{< c #FF8700", +"]< c #EF9024", +"^< c #121114", +"/< c #E5E5E4", +"(< c #D3D4D4", +"_< c #DAD7D7", +":< c #C2C9CB", +"<< c #3EA9BF", +"[< c #23A8C3", +"}< c #7CB7C2", +"|< c #AFA8A7", +"1< c #141417", +"2< c #0B1014", +"3< c #066885", +"4< c #037DA0", +"5< c #074C60", +"6< c #056884", +"7< c #0281A4", +"8< c #0B3441", +"9< c #120A0B", +"0< c #101113", +"a< c #054F83", +"b< c #0260A1", +"c< c #0B2940", +"d< c #110C0C", +"e< c #17171A", +"f< c #525453", +"g< c #0F030F", +"h< c #0D4721", +"i< c #00FF4C", +"j< c #03F53F", +"k< c #09BC36", +"l< c #110E13", +"m< c #101314", +"n< c #05B166", +"o< c #03EE84", +"p< c #13F6A9", +"q< c #19DEB6", +"r< c #135F56", +"s< c #100107", +"t< c #101517", +"u< c #0C2D22", +"v< c #085134", +"w< c #047548", +"x< c #038F58", +"y< c #039C62", +"z< c #03A368", +"A< c #03A46B", +"B< c #039C69", +"C< c #04825A", +"D< c #085A43", +"E< c #0C3129", +"F< c #101115", +"G< c #12080E", +"H< c #140C0F", +"I< c #030C1A", +"J< c #B47B36", +"K< c #FF9200", +"L< c #FB8A01", +"M< c #FF8C00", +"N< c #FD8C01", +"O< c #FF8B00", +"P< c #EF9324", +"Q< c #20232A", +"R< c #101014", +"S< c #131317", +"T< c #D1D1D2", +"U< c #D2D3D4", +"V< c #DFD9D7", +"W< c #9FBCC2", +"X< c #33B1CA", +"Y< c #249EB7", +"Z< c #0E2C34", +"`< c #0D080B", +" [ c #130F11", +".[ c #0C2630", +"+[ c #03799B", +"@[ c #047090", +"#[ c #074558", +"$[ c #037899", +"%[ c #037292", +"&[ c #0E1E25", +"*[ c #110D0F", +"=[ c #120C0B", +"-[ c #0A2F4A", +";[ c #0263A7", +">[ c #064775", +",[ c #110F11", +"'[ c #111115", +")[ c #121216", +"![ c #0E0E12", +"~[ c #424244", +"{[ c #787978", +"][ c #484C4A", +"^[ c #0A000B", +"/[ c #099426", +"([ c #09B132", +"_[ c #069527", +":[ c #049023", +"<[ c #110B13", +"[[ c #111014", +"}[ c #12070F", +"|[ c #101F1A", +"1[ c #0F2C20", +"2[ c #11060B", +"3[ c #121416", +"4[ c #120C12", +"5[ c #120B11", +"6[ c #101516", +"7[ c #0D2D23", +"8[ c #085136", +"9[ c #04744B", +"0[ c #038D5C", +"a[ c #039B66", +"b[ c #03A26D", +"c[ c #03A370", +"d[ c #03996C", +"e[ c #057C5B", +"f[ c #095341", +"g[ c #112D25", +"h[ c #040A19", +"i[ c #B47933", +"j[ c #FF9700", +"k[ c #FB8E01", +"l[ c #FF9000", +"m[ c #FD9001", +"n[ c #FF8F00", +"o[ c #EF9724", +"p[ c #21242A", +"q[ c #131215", +"r[ c #151518", +"s[ c #1B1B1E", +"t[ c #A4A4A5", +"u[ c #E2E2E2", +"v[ c #CFD2D2", +"w[ c #E9E0DE", +"x[ c #56909C", +"y[ c #00809C", +"z[ c #066C82", +"A[ c #11191E", +"B[ c #120B0D", +"C[ c #093F50", +"D[ c #0282A8", +"E[ c #065E78", +"F[ c #08495C", +"G[ c #0284A7", +"H[ c #055F78", +"I[ c #111215", +"J[ c #121115", +"K[ c #121113", +"L[ c #111318", +"M[ c #055288", +"N[ c #025F9F", +"O[ c #0D2538", +"P[ c #120E0D", +"Q[ c #111216", +"R[ c #0A0A0E", +"S[ c #313133", +"T[ c #716D6F", +"U[ c #7C7178", +"V[ c #443F44", +"W[ c #0F6214", +"X[ c #133618", +"Y[ c #100A13", +"Z[ c #058F24", +"`[ c #049F26", +" } c #0F2015", +".} c #130814", +"+} c #111515", +"@} c #111416", +"#} c #120E13", +"$} c #120B12", +"%} c #121417", +"&} c #111315", +"*} c #0D2D24", +"=} c #085038", +"-} c #04724E", +";} c #038C5F", +">} c #039A6B", +",} c #03A173", +"'} c #03A175", +")} c #06966D", +"!} c #007262", +"~} c #B19345", +"{} c #FF9600", +"]} c #FB9301", +"^} c #FF9300", +"/} c #FD9301", +"(} c #EF9924", +"_} c #E5E5E5", +":} c #8D8D8F", +"<} c #100D10", +"[} c #065F72", +"}} c #038DA9", +"|} c #075364", +"1} c #120D0F", +"2} c #111316", +"3} c #065972", +"4} c #0282A7", +"5} c #084B5F", +"6} c #06576E", +"7} c #0286AB", +"8} c #094658", +"9} c #120B0C", +"0} c #111317", +"a} c #130C0B", +"b} c #0B304C", +"c} c #0264A8", +"d} c #064572", +"e} c #120F11", +"f} c #1E1E21", +"g} c #757574", +"h} c #726F71", +"i} c #6C7770", +"j} c #2AD164", +"k} c #1FE657", +"l} c #189123", +"m} c #0E2112", +"n} c #130C16", +"o} c #067E21", +"p} c #03AA28", +"q} c #0E2E17", +"r} c #130713", +"s} c #111415", +"t} c #121316", +"u} c #130D13", +"v} c #111517", +"w} c #0D2C25", +"x} c #084F3A", +"y} c #057151", +"z} c #038B64", +"A} c #06996E", +"B} c #00A384", +"C} c #AFAD56", +"D} c #FF9500", +"E} c #FB9702", +"F} c #FD9701", +"G} c #EF9C24", +"H} c #21252C", +"I} c #0D0F12", +"J} c #151519", +"K} c #0B0B0F", +"L} c #1B1B1F", +"M} c #090B0F", +"N} c #111C21", +"O} c #04758D", +"P} c #0285A1", +"Q} c #0B3944", +"R} c #130C0E", +"S} c #0F1B21", +"T} c #046F90", +"U} c #03789B", +"V} c #093D4E", +"W} c #056B88", +"X} c #0C2E3A", +"Y} c #11161D", +"Z} c #04558E", +"`} c #025D9D", +" | c #0D2335", +".| c #130E0F", +"+| c #4C4C4E", +"@| c #6F7270", +"#| c #786973", +"$| c #4F9C66", +"%| c #00FF4D", +"&| c #00F63F", +"*| c #22C746", +"=| c #2E242D", +"-| c #0A0F0F", +";| c #141317", +">| c #120714", +",| c #086C1F", +"'| c #02B529", +")| c #0C3D1A", +"!| c #130614", +"~| c #131315", +"{| c #130C12", +"]| c #0D2D26", +"^| c #0C4E3A", +"/| c #00715F", +"(| c #AFA64E", +"_| c #FF9B00", +":| c #FB9B02", +"<| c #FD9B01", +"[| c #EFA024", +"}| c #231F26", +"|| c #10070A", +"1| c #141215", +"2| c #1D1D20", +"3| c #D2D2D3", +"4| c #E3E3E3", +"5| c #6F6F71", +"6| c #131619", +"7| c #0D3039", +"8| c #0385A0", +"9| c #037790", +"0| c #0F2228", +"a| c #131013", +"b| c #0C303D", +"c| c #027FA3", +"d| c #056785", +"e| c #0A3948", +"f| c #037C9E", +"g| c #046F8D", +"h| c #101B20", +"i| c #131012", +"j| c #121317", +"k| c #121418", +"l| c #140D0C", +"m| c #0B3554", +"n| c #0264A9", +"o| c #084169", +"p| c #130F0F", +"q| c #707371", +"r| c #766C74", +"s| c #5C8E69", +"t| c #00FC3D", +"u| c #03E735", +"v| c #22B739", +"w| c #69706A", +"x| c #251E26", +"y| c #0C1010", +"z| c #141517", +"A| c #0A591D", +"B| c #01B82A", +"C| c #0B521C", +"D| c #140614", +"E| c #121315", +"F| c #130E13", +"G| c #160D10", +"H| c #03111F", +"I| c #B38939", +"J| c #FFA500", +"K| c #FB9D01", +"L| c #FF9E00", +"M| c #FD9F01", +"N| c #FF9C00", +"O| c #EEAA2A", +"P| c #186E68", +"Q| c #083532", +"R| c #121A1C", +"S| c #130B0F", +"T| c #130C10", +"U| c #16161A", +"V| c #333335", +"W| c #030307", +"X| c #130B0D", +"Y| c #094B5A", +"Z| c #028CA9", +"`| c #066175", +" 1 c #130D0F", +".1 c #084A5F", +"+1 c #0284AA", +"@1 c #085167", +"#1 c #094456", +"$1 c #0286AA", +"%1 c #07586F", +"&1 c #131114", +"*1 c #11171E", +"=1 c #045690", +"-1 c #035C9A", +";1 c #0F202F", +">1 c #130F10", +",1 c #2F2F32", +"'1 c #747274", +")1 c #70756F", +"!1 c #26A638", +"~1 c #349F2D", +"{1 c #28AE32", +"]1 c #23BB44", +"^1 c #5E6960", +"/1 c #1D161F", +"(1 c #0E1112", +"_1 c #141518", +":1 c #0B4B1B", +"<1 c #02B72A", +"[1 c #09651F", +"}1 c #131216", +"|1 c #151616", +"11 c #050B1B", +"21 c #B48435", +"31 c #FFA900", +"41 c #FBA001", +"51 c #FFA100", +"61 c #FDA202", +"71 c #FF9F00", +"81 c #EEAE2B", +"91 c #13A697", +"01 c #009584", +"a1 c #058276", +"b1 c #085B56", +"c1 c #0D3132", +"d1 c #111619", +"e1 c #140B10", +"f1 c #140D12", +"g1 c #333336", +"h1 c #6E6E70", +"i1 c #040408", +"j1 c #066579", +"k1 c #028BA7", +"l1 c #094958", +"m1 c #130D10", +"n1 c #05637F", +"o1 c #0280A5", +"p1 c #0B3C4C", +"q1 c #075870", +"r1 c #0A4051", +"s1 c #140C0E", +"t1 c #121419", +"u1 c #140D0D", +"v1 c #0265AA", +"w1 c #083F67", +"x1 c #131318", +"y1 c #363639", +"z1 c #787877", +"A1 c #727372", +"B1 c #777176", +"C1 c #637F65", +"D1 c #2E922C", +"E1 c #47922C", +"F1 c #6B7C66", +"G1 c #2DA748", +"H1 c #1DC23E", +"I1 c #4A5F4F", +"J1 c #19101B", +"K1 c #131618", +"L1 c #140715", +"M1 c #0D391A", +"N1 c #02B429", +"O1 c #077722", +"P1 c #120E15", +"Q1 c #131017", +"R1 c #121517", +"S1 c #131217", +"T1 c #171515", +"U1 c #060D1C", +"V1 c #B48836", +"W1 c #FFAD00", +"X1 c #FBA401", +"Y1 c #FDA501", +"Z1 c #FFA400", +"`1 c #EEAB27", +" 2 c #17766D", +".2 c #049787", +"+2 c #039D8F", +"@2 c #04948A", +"#2 c #067B76", +"$2 c #095755", +"%2 c #0F2D2E", +"&2 c #140F12", +"*2 c #131518", +"=2 c #131417", +"-2 c #666668", +";2 c #141316", +">2 c #141012", +",2 c #112025", +"'2 c #057A93", +")2 c #03829C", +"!2 c #0E2F38", +"~2 c #140F11", +"{2 c #141113", +"]2 c #10242C", +"^2 c #047799", +"/2 c #057293", +"(2 c #0D2F3B", +"_2 c #056E8C", +":2 c #0F2932", +"<2 c #150E10", +"[2 c #141315", +"}2 c #13171C", +"|2 c #06568E", +"12 c #045A98", +"22 c #111D29", +"32 c #141112", +"42 c #131418", +"52 c #7B7B7A", +"62 c #707270", +"72 c #797279", +"82 c #558656", +"92 c #339826", +"02 c #529336", +"a2 c #787977", +"b2 c #776F75", +"c2 c #2DA444", +"d2 c #1EC840", +"e2 c #415C47", +"f2 c #150A16", +"g2 c #131617", +"h2 c #141617", +"i2 c #0F2D18", +"j2 c #04AA28", +"k2 c #068C24", +"l2 c #121616", +"m2 c #140E16", +"n2 c #161516", +"o2 c #060C1D", +"p2 c #B48A36", +"q2 c #FFB100", +"r2 c #FBA701", +"s2 c #FDA901", +"t2 c #EFAA23", +"u2 c #22252D", +"v2 c #0B2322", +"w2 c #0B4843", +"x2 c #066960", +"y2 c #04857B", +"z2 c #03968D", +"A2 c #039B95", +"B2 c #04908D", +"C2 c #067575", +"D2 c #0A5052", +"E2 c #0F292D", +"F2 c #140B0F", +"G2 c #171216", +"H2 c #090A0E", +"I2 c #313337", +"J2 c #CCCDCE", +"K2 c #505053", +"L2 c #020206", +"M2 c #17171B", +"N2 c #141418", +"O2 c #13151A", +"P2 c #150C0F", +"Q2 c #0D3641", +"R2 c #0389A5", +"S2 c #057087", +"T2 c #121B20", +"U2 c #140E10", +"V2 c #0C3B4C", +"W2 c #0382A9", +"X2 c #085B76", +"Y2 c #0D323F", +"Z2 c #0380A2", +"`2 c #066985", +" 3 c #12181D", +".3 c #150E0E", +"+3 c #0C3453", +"@3 c #0264AA", +"#3 c #0A3A5F", +"$3 c #140F0F", +"%3 c #131419", +"&3 c #515153", +"*3 c #7A7B7A", +"=3 c #767276", +"-3 c #4A8E44", +";3 c #3F9822", +">3 c #618C45", +",3 c #78767B", +"'3 c #7A7078", +")3 c #3AA24E", +"!3 c #1ECC41", +"~3 c #2D5237", +"{3 c #110613", +"]3 c #141718", +"^3 c #150B17", +"/3 c #112218", +"(3 c #049F27", +"_3 c #059C26", +":3 c #112018", +"<3 c #140C17", +"[3 c #171516", +"}3 c #B58C36", +"|3 c #FFB500", +"13 c #FBAB01", +"23 c #FDAD01", +"33 c #EFAE24", +"43 c #24252D", +"53 c #110B0F", +"63 c #160E13", +"73 c #102728", +"83 c #0B4744", +"93 c #066964", +"03 c #048580", +"a3 c #039693", +"b3 c #03999A", +"c3 c #048C90", +"d3 c #076D72", +"e3 c #0D494F", +"f3 c #0A1F24", +"g3 c #2D292C", +"h3 c #D8D0CF", +"i3 c #E6E2E1", +"j3 c #D5D7D7", +"k3 c #D6D7D7", +"l3 c #D8D7D7", +"m3 c #D6D8D8", +"n3 c #D4D8D8", +"o3 c #D3D5D5", +"p3 c #505052", +"q3 c #050509", +"r3 c #18181C", +"s3 c #141519", +"t3 c #150D10", +"u3 c #095262", +"v3 c #038DAA", +"w3 c #08586A", +"x3 c #141013", +"y3 c #08546C", +"z3 c #0284AB", +"A3 c #0B4254", +"B3 c #0288AD", +"C3 c #095167", +"D3 c #13171E", +"E3 c #055691", +"F3 c #045894", +"G3 c #111C27", +"H3 c #141214", +"I3 c #605E61", +"J3 c #797F78", +"K3 c #439234", +"L3 c #4E9822", +"M3 c #6C8658", +"N3 c #7A757D", +"O3 c #777976", +"P3 c #7F727C", +"Q3 c #3D9F51", +"R3 c #15CB3A", +"S3 c #1A4926", +"T3 c #130715", +"U3 c #131718", +"V3 c #150E17", +"W3 c #131717", +"X3 c #069025", +"Y3 c #03AB28", +"Z3 c #0F2E19", +"`3 c #150916", +" 4 c #181617", +".4 c #070D1E", +"+4 c #B58E36", +"@4 c #FFB900", +"#4 c #FBAF01", +"$4 c #FDB001", +"%4 c #EFB124", +"&4 c #24262E", +"*4 c #15171A", +"=4 c #151115", +"-4 c #160E12", +";4 c #102729", +">4 c #0B4647", +",4 c #066869", +"'4 c #048486", +")4 c #03959A", +"!4 c #0599A1", +"~4 c #028690", +"{4 c #3EA0A8", +"]4 c #8CC1C6", +"^4 c #B8C7C9", +"/4 c #E3DBDA", +"(4 c #DEDBDA", +"_4 c #D5D8D8", +":4 c #DFD5D5", +"<4 c #E8D4D4", +"[4 c #E6D3D3", +"}4 c #DADDDD", +"|4 c #19191C", +"14 c #151417", +"24 c #066B81", +"34 c #0C3E4A", +"44 c #160F11", +"54 c #151418", +"64 c #131A20", +"74 c #056C8B", +"84 c #037CA0", +"94 c #0F2E3A", +"04 c #085A72", +"a4 c #0D3947", +"b4 c #160E10", +"c4 c #14161A", +"d4 c #16100F", +"e4 c #0B3B5F", +"f4 c #0265AB", +"g4 c #0B395B", +"h4 c #161010", +"i4 c #1B171F", +"j4 c #60715C", +"k4 c #48982D", +"l4 c #5A9527", +"m4 c #748069", +"n4 c #79777B", +"o4 c #797978", +"p4 c #797A79", +"q4 c #7F737D", +"r4 c #409B52", +"s4 c #17CF3C", +"t4 c #174C24", +"u4 c #140615", +"v4 c #151719", +"w4 c #151118", +"x4 c #087F23", +"y4 c #03B42A", +"z4 c #0E3F1B", +"A4 c #160917", +"B4 c #141618", +"C4 c #141419", +"D4 c #171617", +"E4 c #070C1E", +"F4 c #B59037", +"G4 c #FFBD00", +"H4 c #FBB201", +"I4 c #FFB400", +"J4 c #FDB401", +"K4 c #EFB424", +"L4 c #151419", +"M4 c #10272A", +"N4 c #0C484B", +"O4 c #026066", +"P4 c #14929B", +"Q4 c #2ABCC7", +"R4 c #24B5C4", +"S4 c #35B4C3", +"T4 c #58B2BE", +"U4 c #89B9BF", +"V4 c #BBC8CA", +"W4 c #E3D7D5", +"X4 c #B2E5E3", +"Y4 c #5BF0F0", +"Z4 c #67EFEF", +"`4 c #A9CFD1", +" 5 c #43373A", +".5 c #07090D", +"+5 c #151013", +"@5 c #11242C", +"#5 c #047F99", +"$5 c #047C95", +"%5 c #11252D", +"&5 c #151215", +"*5 c #0F2D39", +"=5 c #037DA2", +"-5 c #066886", +";5 c #10262F", +">5 c #057291", +",5 c #047898", +"'5 c #11242D", +")5 c #151315", +"!5 c #121C27", +"~5 c #055A98", +"{5 c #05558F", +"]5 c #131922", +"^5 c #151316", +"/5 c #161719", +"(5 c #100B17", +"_5 c #26471C", +":5 c #519D27", +"<5 c #669132", +"[5 c #787A76", +"}5 c #797879", +"|5 c #7B7D7C", +"15 c #80747E", +"25 c #419652", +"35 c #15CE3A", +"45 c #125421", +"55 c #140816", +"65 c #141719", +"75 c #151319", +"85 c #150C17", +"95 c #097021", +"05 c #02BB2B", +"a5 c #0C4F1D", +"b5 c #151018", +"c5 c #181717", +"d5 c #B59237", +"e5 c #FFC100", +"f5 c #FBB601", +"g5 c #FFB800", +"h5 c #FDB801", +"i5 c #EFB724", +"j5 c #151619", +"k5 c #15161A", +"l5 c #181317", +"m5 c #0D0509", +"n5 c #3B3B3E", +"o5 c #ACC3C4", +"p5 c #75B0B4", +"q5 c #48A9B2", +"r5 c #2EADBC", +"s5 c #23B4C7", +"t5 c #24B5CA", +"u5 c #39B0C4", +"v5 c #51B5C4", +"w5 c #0CD5DC", +"x5 c #00EDF2", +"y5 c #00EEFC", +"z5 c #075E68", +"A5 c #180C0F", +"B5 c #15171B", +"C5 c #14171B", +"D5 c #0D3D49", +"E5 c #038CA8", +"F5 c #06677D", +"G5 c #14161B", +"H5 c #0B4659", +"I5 c #0285AC", +"J5 c #0A4E63", +"K5 c #0383A7", +"L5 c #06637E", +"M5 c #14191D", +"N5 c #15161B", +"O5 c #0B3C60", +"P5 c #151618", +"Q5 c #14111A", +"R5 c #2A5A15", +"S5 c #4B8C11", +"T5 c #738F45", +"U5 c #7A797E", +"V5 c #7B7C7B", +"W5 c #7D7E7D", +"X5 c #81757E", +"Y5 c #4D945C", +"Z5 c #15D03B", +"`5 c #0F5D21", +" 6 c #150816", +".6 c #0B5C1F", +"+6 c #02BF2B", +"@6 c #0B5E1D", +"#6 c #122119", +"$6 c #12291C", +"%6 c #160A17", +"&6 c #191718", +"*6 c #080D1F", +"=6 c #B59437", +"-6 c #FFC600", +";6 c #FBBA01", +">6 c #FFBC00", +",6 c #FDBC01", +"'6 c #EFBA24", +")6 c #25272F", +"!6 c #131519", +"~6 c #B7B7B8", +"{6 c #EBE6E5", +"]6 c #E1DAD9", +"^6 c #D2D3D3", +"/6 c #AAC1C4", +"(6 c #76B1B8", +"_6 c #48AAB8", +":6 c #2FACC1", +"<6 c #08B6D1", +"[6 c #03C0D7", +"}6 c #0FBCCC", +"|6 c #0AC8E0", +"16 c #03EDFF", +"26 c #07E4E6", +"36 c #152226", +"46 c #161216", +"56 c #16171A", +"66 c #161013", +"76 c #09586A", +"86 c #028EAA", +"96 c #0A4E5D", +"06 c #16171B", +"a6 c #075F7A", +"b6 c #0F3442", +"c6 c #0C4355", +"d6 c #0289AE", +"e6 c #0A4B5E", +"f6 c #17080A", +"g6 c #17060A", +"h6 c #161418", +"i6 c #161519", +"j6 c #161416", +"k6 c #131D27", +"l6 c #055B99", +"m6 c #05548C", +"n6 c #141921", +"o6 c #161518", +"p6 c #171A19", +"q6 c #397215", +"r6 c #4E8209", +"s6 c #566637", +"t6 c #7A7880", +"u6 c #7A7B79", +"v6 c #7C7D7D", +"w6 c #7D807E", +"x6 c #867883", +"y6 c #539360", +"z6 c #13CD38", +"A6 c #0D6220", +"B6 c #160A18", +"C6 c #160B18", +"D6 c #0C4E1C", +"E6 c #03B730", +"F6 c #07EA59", +"G6 c #05FA53", +"H6 c #0D6625", +"I6 c #160B17", +"J6 c #15181A", +"K6 c #181718", +"L6 c #B59637", +"M6 c #FFC900", +"N6 c #FBBD01", +"O6 c #FFC000", +"P6 c #FDBF01", +"Q6 c #EFBD24", +"R6 c #25262F", +"S6 c #19191D", +"T6 c #828284", +"U6 c #E6E7E6", +"V6 c #E2DDDD", +"W6 c #E3DCDB", +"X6 c #AEC1C5", +"Y6 c #25BBC7", +"Z6 c #00C5D7", +"`6 c #04D5EA", +" 7 c #04DAEE", +".7 c #05EAFF", +"+7 c #18EAF5", +"@7 c #173032", +"#7 c #150F13", +"$7 c #14181D", +"%7 c #067188", +"&7 c #0386A1", +"*7 c #0F333E", +"=7 c #161114", +"-7 c #161417", +";7 c #12222A", +">7 c #047496", +",7 c #057395", +"'7 c #12232A", +")7 c #085B74", +"!7 c #0284A8", +"~7 c #068693", +"{7 c #0A888D", +"]7 c #15191E", +"^7 c #161115", +"/7 c #15171C", +"(7 c #171010", +"_7 c #0B3C61", +":7 c #0D314E", +"<7 c #171111", +"[7 c #160F19", +"}7 c #14121A", +"|7 c #1D2718", +"17 c #457E11", +"27 c #5B810F", +"37 c #1C2310", +"47 c #47464D", +"57 c #838482", +"67 c #7E817E", +"77 c #867984", +"87 c #558F60", +"97 c #10C835", +"07 c #096E1F", +"a7 c #160E19", +"b7 c #16151A", +"c7 c #170716", +"d7 c #04C547", +"e7 c #08FF63", +"f7 c #0DFF59", +"g7 c #08E146", +"h7 c #161A1B", +"i7 c #191819", +"j7 c #080D20", +"k7 c #B59837", +"l7 c #FFCD00", +"m7 c #FBC101", +"n7 c #FFC400", +"o7 c #FDC301", +"p7 c #FFC500", +"q7 c #EFC024", +"r7 c #48484B", +"s7 c #D7DBDB", +"t7 c #F0DAD9", +"u7 c #81F2F1", +"v7 c #00F8FF", +"w7 c #08E5F3", +"x7 c #17F5F9", +"y7 c #1EFFFF", +"z7 c #22CFD0", +"A7 c #16171C", +"B7 c #171114", +"C7 c #112C34", +"D7 c #04849F", +"E7 c #05758D", +"F7 c #131F25", +"G7 c #171013", +"H7 c #0E3745", +"I7 c #095872", +"J7 c #113037", +"K7 c #03AFCC", +"L7 c #05C8E4", +"M7 c #06A6B9", +"N7 c #151317", +"O7 c #16161B", +"P7 c #131D28", +"Q7 c #045C9B", +"R7 c #065086", +"S7 c #16141A", +"T7 c #161319", +"U7 c #12331D", +"V7 c #171319", +"W7 c #130D1A", +"X7 c #283E17", +"Y7 c #54890E", +"Z7 c #58720E", +"`7 c #1A1B1B", +" 8 c #0F0F14", +".8 c #858584", +"+8 c #7F8280", +"@8 c #887B85", +"#8 c #558A60", +"$8 c #0CC532", +"%8 c #07751F", +"&8 c #170F1A", +"*8 c #151A1B", +"=8 c #170D18", +"-8 c #07B53C", +";8 c #00FF45", +">8 c #05EF3F", +",8 c #18AC47", +"'8 c #17131A", +")8 c #1A1919", +"!8 c #090D20", +"~8 c #B59A37", +"{8 c #FFD200", +"]8 c #FBC501", +"^8 c #FFC700", +"/8 c #FDC701", +"(8 c #EFC324", +"_8 c #262730", +":8 c #18181B", +"<8 c #212125", +"[8 c #C5C5C6", +"}8 c #E5E6E6", +"|8 c #807B7C", +"18 c #0093A0", +"28 c #02F6FF", +"38 c #18FCFD", +"48 c #21F7FB", +"58 c #117E8E", +"68 c #150F14", +"78 c #17181C", +"88 c #17161A", +"98 c #16181D", +"08 c #180F12", +"a8 c #0D4452", +"b8 c #028DAA", +"c8 c #085D70", +"d8 c #171417", +"e8 c #17181D", +"f8 c #171214", +"g8 c #0A536A", +"h8 c #03779E", +"i8 c #078091", +"j8 c #02E0E4", +"k8 c #07C4D8", +"l8 c #04D4F3", +"m8 c #09F6FF", +"n8 c #175254", +"o8 c #160A0F", +"p8 c #17191D", +"q8 c #181212", +"r8 c #0C3C61", +"s8 c #0263A9", +"t8 c #0E3049", +"u8 c #181415", +"v8 c #16191F", +"w8 c #16181B", +"x8 c #170E18", +"y8 c #0D9738", +"z8 c #08FF4D", +"A8 c #0BA22A", +"B8 c #140B1B", +"C8 c #385914", +"D8 c #618C0C", +"E8 c #516010", +"F8 c #14131C", +"G8 c #808381", +"H8 c #887D86", +"I8 c #5E8967", +"J8 c #0EC133", +"K8 c #067C20", +"L8 c #17141A", +"M8 c #17161B", +"N8 c #15271D", +"O8 c #0B882A", +"P8 c #04D033", +"Q8 c #0E5922", +"R8 c #180A19", +"S8 c #16191B", +"T8 c #191919", +"U8 c #B59C37", +"V8 c #FFD500", +"W8 c #FBC901", +"X8 c #FFCB00", +"Y8 c #FDCA01", +"Z8 c #EFC624", +"`8 c #949495", +" 9 c #E7E7E6", +".9 c #B7B8B9", +"+9 c #151216", +"@9 c #151014", +"#9 c #104E5E", +"$9 c #11606D", +"%9 c #057C94", +"&9 c #017D9D", +"*9 c #0E414F", +"=9 c #171215", +"-9 c #095F72", +";9 c #0C4351", +">9 c #181013", +",9 c #151A1F", +"'9 c #066786", +")9 c #0382A5", +"!9 c #00DBEB", +"~9 c #05F1FE", +"{9 c #15F9FF", +"]9 c #1EECF3", +"^9 c #193337", +"/9 c #161015", +"(9 c #171416", +"_9 c #13202D", +":9 c #045E9F", +"<9 c #064C80", +"[9 c #170F11", +"}9 c #180F10", +"|9 c #17111A", +"19 c #142E1D", +"29 c #01F443", +"39 c #06FF3E", +"49 c #07D130", +"59 c #191A1C", +"69 c #496C10", +"79 c #6B8B0A", +"89 c #404813", +"99 c #100F1C", +"09 c #1D1D21", +"a9 c #818482", +"b9 c #8C8089", +"c9 c #67896E", +"d9 c #0AB92E", +"e9 c #048A20", +"f9 c #171119", +"g9 c #180919", +"h9 c #190017", +"i9 c #0B6B22", +"j9 c #05A028", +"k9 c #1A191A", +"l9 c #090D21", +"m9 c #B69E37", +"n9 c #FFD900", +"o9 c #FBCC01", +"p9 c #FFCF00", +"q9 c #FDCE01", +"r9 c #FFD100", +"s9 c #EFC924", +"t9 c #262731", +"u9 c #1A1A1F", +"v9 c #0A0A0F", +"w9 c #58585B", +"x9 c #37373B", +"y9 c #0E0F14", +"z9 c #191A1E", +"A9 c #180D10", +"B9 c #190406", +"C9 c #0F3E4C", +"D9 c #0488A6", +"E9 c #05738E", +"F9 c #14232B", +"G9 c #181417", +"H9 c #171519", +"I9 c #151D22", +"J9 c #067790", +"K9 c #04809A", +"L9 c #122B34", +"M9 c #181518", +"N9 c #122C37", +"O9 c #057093", +"P9 c #0192B6", +"Q9 c #02E8F9", +"R9 c #18FDFF", +"S9 c #1293A8", +"T9 c #10222E", +"U9 c #181315", +"V9 c #0B3E69", +"W9 c #0075BB", +"X9 c #06729B", +"Y9 c #123B4B", +"Z9 c #181011", +"`9 c #17181B", +" 0 c #18111B", +".0 c #08A228", +"+0 c #04F431", +"@0 c #05C32C", +"#0 c #16691A", +"$0 c #5B730C", +"%0 c #70850A", +"&0 c #2E3117", +"*0 c #12111C", +"=0 c #26262A", +"-0 c #818582", +";0 c #8C828A", +">0 c #67876D", +",0 c #0BAC2A", +"'0 c #05B638", +")0 c #07D84A", +"!0 c #0C7C2B", +"~0 c #180B19", +"{0 c #13331E", +"]0 c #03B42B", +"^0 c #11421F", +"/0 c #180E1B", +"(0 c #17191C", +"_0 c #1B1A1A", +":0 c #0A0D21", +"<0 c #B6A037", +"[0 c #FFDE00", +"}0 c #FBD001", +"|0 c #FFD300", +"10 c #FDD201", +"20 c #EFCC24", +"30 c #272831", +"40 c #29292D", +"50 c #E8E8E8", +"60 c #707072", +"70 c #08080D", +"80 c #171A1F", +"90 c #171B1F", +"00 c #096277", +"a0 c #0489A8", +"b0 c #0A5B6F", +"c0 c #18171B", +"d0 c #191214", +"e0 c #11323B", +"f0 c #0488A3", +"g0 c #076D82", +"h0 c #161B1F", +"i0 c #190F11", +"j0 c #0B5E71", +"k0 c #03B4D7", +"l0 c #04C7E0", +"m0 c #00E3FF", +"n0 c #02A0C2", +"o0 c #095F79", +"p0 c #161C21", +"q0 c #18161A", +"r0 c #190D0E", +"s0 c #0D6E7D", +"t0 c #04A7E2", +"u0 c #03A9E5", +"v0 c #00B5FF", +"w0 c #104362", +"x0 c #19100F", +"y0 c #17191E", +"z0 c #17191B", +"A0 c #19101C", +"B0 c #125A17", +"C0 c #125F1C", +"D0 c #13371D", +"E0 c #01B723", +"F0 c #43A513", +"G0 c #787208", +"H0 c #1B1D1B", +"I0 c #1A1A1D", +"J0 c #313134", +"K0 c #858485", +"L0 c #828783", +"M0 c #91808C", +"N0 c #569768", +"O0 c #00FE56", +"P0 c #12FE63", +"Q0 c #04FF47", +"R0 c #135224", +"S0 c #190419", +"T0 c #089027", +"U0 c #098525", +"V0 c #190E1A", +"W0 c #17171C", +"X0 c #0A0D22", +"Y0 c #B6A238", +"Z0 c #FFE200", +"`0 c #FBD401", +" a c #FFD600", +".a c #FDD601", +"+a c #FFD800", +"@a c #EFCF24", +"#a c #18181D", +"$a c #101015", +"%a c #A3A3A4", +"&a c #E4E4E3", +"*a c #A8A8A9", +"=a c #181418", +"-a c #14252D", +";a c #067B96", +">a c #04829F", +",a c #103A46", +"'a c #191114", +")a c #191013", +"!a c #0D4B5A", +"~a c #038EAB", +"{a c #0B5363", +"]a c #152C2F", +"^a c #1A060A", +"/a c #0A9B9D", +"(a c #03D3E0", +"_a c #08C1DF", +":a c #03D9FF", +"b c #197816", +",b c #19211D", +"'b c #16161D", +")b c #717A0A", +"!b c #BAD803", +"~b c #51F11D", +"{b c #19881F", +"]b c #160C1B", +"^b c #8B8B8A", +"/b c #868786", +"(b c #878887", +"_b c #898588", +":b c #42C35F", +"c c #B5B5B6", +",c c #98989A", +"'c c #0D0D12", +")c c #1B1B20", +"!c c #18191F", +"~c c #15272F", +"{c c #057C98", +"]c c #04809E", +"^c c #123440", +"/c c #181C21", +"(c c #1A080D", +"_c c #00F5F9", +":c c #07DAE5", +"d c #18151E", +",d c #1C2C1C", +"'d c #2B7C12", +")d c #0D1A1E", +"!d c #5F5C15", +"~d c #EDF002", +"{d c #D3D606", +"]d c #686A11", +"^d c #5D6619", +"/d c #19101E", +"(d c #17261D", +"_d c #05A923", +":d c #078F21", +"e c #1B131D", +",e c #124921", +"'e c #03B72B", +")e c #15331F", +"!e c #0B6E43", +"~e c #0D5F3E", +"{e c #104F37", +"]e c #114433", +"^e c #14352C", +"/e c #162A27", +"(e c #182022", +"_e c #1A151C", +":e c #1B131B", +"f c #162C2A", +",f c #182224", +"'f c #1A1B1F", +")f c #1B161B", +"!f c #1B141A", +"~f c #1C1218", +"{f c #1C1319", +"]f c #1E1618", +"^f c #0E0921", +"/f c #B7AE37", +"(f c #FFFE00", +"_f c #FBEE01", +":f c #FFF100", +"g c #0F564D", +",g c #114843", +"'g c #173D37", +")g c #092235", +"!g c #B5B83E", +"~g c #FBF201", +"{g c #FEF500", +"]g c #FDF401", +"^g c #FFF800", +"/g c #F2EA27", +"(g c #1D1D27", +"_g c #605456", +":g c #CCE8E7", +"h c #089A83", +",h c #008C8E", +"'h c #B0D858", +")h c #FBF702", +"!h c #FDF701", +"~h c #FFFD00", +"{h c #EAE822", +"]h c #3B3D47", +"^h c #94CBCB", +"/h c #12FFFF", +"(h c #00FDFD", +"_h c #18F6FA", +":h c #BDDBDD", +"i c #03C8CD", +",i c #11CBCF", +"'i c #0BEFF6", +")i c #3BEFF3", +"!i c #D5D6D6", +"~i c #B3B3B4", +"{i c #1B1D22", +"]i c #1D1417", +"^i c #104C5C", +"/i c #048BAB", +"(i c #0A6379", +"_i c #09657A", +":i c #087E98", +"j c #0B6A7F", +",j c #1A1E23", +"'j c #1C1C22", +")j c #1D171A", +"!j c #133644", +"~j c #067A9F", +"{j c #0E556D", +"]j c #1E1113", +"^j c #113E4F", +"/j c #067EA1", +"(j c #114455", +"_j c #1D1619", +":j c #085189", +"k c #2E351B", +",k c #586F17", +"'k c #202123", +")k c #1B161F", +"!k c #0C7922", +"~k c #04BC26", +"{k c #144420", +"]k c #1F1222", +"^k c #14171A", +"/k c #46484A", +"(k c #969796", +"_k c #8F9290", +":k c #9A8E97", +"l c #1C1F22", +",l c #101028", +"'l c #B1B739", +")l c #EFFB01", +"!l c #F2FF00", +"~l c #F2FE02", +"{l c #F2FC31", +"]l c #D6DAE0", +"^l c #DFD4D3", +"/l c #CBD9D9", +"(l c #84E0E8", +"_l c #8ADFE2", +":l c #40BFC9", +"m c #1D181B", +",m c #067AA0", +"'m c #143949", +")m c #1F1113", +"!m c #10485B", +"~m c #153845", +"{m c #1C1D24", +"]m c #1E1819", +"^m c #133451", +"/m c #035FA5", +"(m c #133049", +"_m c #1E191B", +":m c #161623", +"n c #1C1B24", +",n c #22261E", +"'n c #526A1B", +")n c #292E21", +"!n c #4E6D18", +"~n c #2B3124", +"{n c #1A1922", +"]n c #1D1F23", +"^n c #1E1922", +"/n c #1B2724", +"(n c #02F04A", +"_n c #0EFD54", +":n c #03FF43", +"o c #E3FE02", +",o c #E6FC31", +"'o c #C0C0C1", +")o c #1F1F25", +"!o c #1D181E", +"~o c #0C6975", +"{o c #059AAA", +"]o c #077E8B", +"^o c #192A31", +"/o c #1E1D23", +"(o c #1F181D", +"_o c #173540", +":o c #0586A5", +"p c #1B252D", +",p c #20171A", +"'p c #0F5167", +")p c #07799B", +"!p c #192F39", +"~p c #201A1E", +"{p c #0B4B7D", +"]p c #20181A", +"^p c #1E2026", +"/p c #1F2023", +"(p c #1B1726", +"_p c #344518", +":p c #3F5419", +"

    q c #76AA80", +",q c #8E868D", +"'q c #1D1722", +")q c #174024", +"!q c #04BD2D", +"~q c #164B25", +"{q c #201624", +"]q c #1E1E25", +"^q c #14122B", +"/q c #A5B83A", +"(q c #D5FB01", +"_q c #D8FF00", +":q c #D8FE02", +"r c #1C262E", +",r c #22171A", +"'r c #134354", +")r c #067C9F", +"!r c #173A48", +"~r c #211A1D", +"{r c #201F23", +"]r c #07A9C2", +"^r c #06A4D8", +"/r c #03B0FF", +"(r c #1096C4", +"_r c #21191A", +":r c #202124", +"s c #1F1F26", +",s c #446C19", +"'s c #2D3726", +")s c #34531C", +"!s c #334627", +"~s c #1C1825", +"{s c #211625", +"]s c #0D8425", +"^s c #0AA729", +"/s c #18171E", +"(s c #404044", +"_s c #9E9F9E", +":s c #9A9B9A", +"t c #D1FC31", +",t c #D8D7DD", +"'t c #DADBD9", +")t c #202227", +"!t c #211E23", +"~t c #1D272E", +"{t c #09808E", +"]t c #069AAA", +"^t c #0D626D", +"/t c #211C22", +"(t c #202127", +"_t c #202228", +":t c #221A1E", +"u c #0782A0", +",u c #134E5F", +"'u c #221A1F", +")u c #173846", +"!u c #10536C", +"~u c #124C61", +"{u c #07789B", +"]u c #1B313C", +"^u c #221E22", +"/u c #20252B", +"(u c #202229", +"_u c #1D2936", +":u c #055DA2", +"v c #1B3B27", +",v c #221A26", +"'v c #27223B", +")v c #B7D85A", +"!v c #C0FF00", +"~v c #BCFD02", +"{v c #BDFF00", +"]v c #BDFE02", +"^v c #BBFF00", +"/v c #C5F92E", +"(v c #E6E5EA", +"_v c #909091", +":v c #15161C", +"w c #1F252B", +",w c #222026", +"'w c #23161C", +")w c #0DA0A4", +"!w c #11FAFA", +"~w c #237177", +"{w c #21161C", +"]w c #22242A", +"^w c #231C21", +"/w c #163F4C", +"(w c #154858", +"_w c #231B20", +":w c #21242B", +"x c #273721", +",x c #37621D", +"'x c #221F2A", +")x c #222328", +"!x c #201B29", +"~x c #2F521F", +"{x c #334F26", +"]x c #284421", +"^x c #325B24", +"/x c #1B3826", +"(x c #05BF29", +"_x c #145A26", +":x c #2B1F2F", +"y c #7B7A7D", +",y c #A1A2A2", +"'y c #A4A3A4", +")y c #9D9F9E", +"!y c #2BCA4D", +"~y c #43BF5D", +"{y c #AFA6AD", +"]y c #46494B", +"^y c #1B1520", +"/y c #0D982D", +"(y c #0A9C2C", +"_y c #17171D", +":y c #979896", +"z c #ACFE03", +",z c #ABFF00", +"'z c #ABFE01", +")z c #ADF025", +"!z c #33313E", +"~z c #251B21", +"{z c #154D57", +"]z c #078594", +"^z c #1C333A", +"/z c #241E25", +"(z c #241D22", +"_z c #135163", +":z c #067D9A", +"A c #125D72", +",A c #251F24", +"'A c #23242B", +")A c #252127", +"!A c #1F2B33", +"~A c #105F74", +"{A c #241F23", +"]A c #23252C", +"^A c #21272E", +"/A c #0790AE", +"(A c #05C5E3", +"_A c #00DCF9", +":A c #185D6D", +"B c #04D3D8", +",B c #0BC9DC", +"'B c #13B9C6", +")B c #261A1F", +"!B c #22262D", +"~B c #0B6E94", +"{B c #098698", +"]B c #1F4034", +"^B c #261624", +"/B c #261B25", +"(B c #261C24", +"_B c #251F26", +":B c #26151B", +"C c #08B38C", +",C c #156848", +"'C c #16574B", +")C c #1A4A47", +"!C c #1E363A", +"~C c #1E444B", +"{C c #15767C", +"]C c #212B32", +"^C c #242229", +"/C c #23242C", +"(C c #23242F", +"_C c #0A59A5", +":C c #1A304E", +"D c #135950", +",D c #185242", +"'D c #136258", +")D c #135C59", +"!D c #099DA2", +"~D c #1F6368", +"{D c #26181E", +"]D c #24272D", +"^D c #262426", +"/D c #0C3983", +"(D c #153668", +"_D c #272323", +":D c #24262B", +"E c #1A5560", +",E c #261B21", +"'E c #24272E", +")E c #27171E", +"!E c #272324", +"~E c #113272", +"{E c #113475", +"]E c #28221D", +"^E c #24252E", +"/E c #25222B", +"(E c #233030", +"_E c #232B2E", +":E c #203F33", +"F c #21323A", +",F c #262127", +"'F c #25262D", +")F c #261C23", +"!F c #27171F", +"~F c #1A6B6F", +"{F c #21333A", +"]F c #252228", +"^F c #272423", +"/F c #13367B", +"(F c #0240C4", +"_F c #1E294A", +":F c #262425", +"G c #106979", +",G c #271F25", +"'G c #25272E", +")G c #252A30", +"!G c #261F27", +"~G c #1F555A", +"{G c #1A6E71", +"]G c #281A21", +"^G c #185864", +"/G c #00FCFF", +"(G c #13ADB5", +"_G c #29181C", +":G c #242B32", +"H c #164B60", +",H c #253227", +"'H c #1E5238", +")H c #0F574A", +"!H c #184A3D", +"~H c #135981", +"{H c #096D96", +"]H c #242430", +"^H c #281E26", +"/H c #233F44", +"(H c #13596D", +"_H c #0679A0", +":H c #20313D", +"I c #098A98", +",I c #0790A0", +"'I c #136069", +")I c #1B6468", +"!I c #272128", +"~I c #26272E", +"{I c #0D6D85", +"]I c #26242A", +"^I c #281E23", +"/I c #155665", +"(I c #0676A4", +"_I c #0DB063", +":I c #01D759", +"J c #252D30", +",J c #28202B", +"'J c #262A2F", +")J c #303238", +"!J c #C3C4C4", +"~J c #CFD0D0", +"{J c #CFD2CD", +"]J c #D7CFE1", +"^J c #B3F071", +"/J c #7FFF00", +"(J c #87FE03", +"_J c #85FF00", +":J c #85FE01", +"K c #206426", +",K c #2A3631", +"'K c #291C2E", +")K c #127D29", +"!K c #2AD64A", +"~K c #AAACAA", +"{K c #B3ABB1", +"]K c #89AC91", +"^K c #1CD743", +"/K c #66B477", +"(K c #3D3241", +"_K c #09A82E", +":K c #0D952D", +"L c #232737", +",L c #272527", +"'L c #252C2F", +")L c #24352F", +"!L c #1F5032", +"~L c #204A31", +"{L c #24342F", +"]L c #224231", +"^L c #224132", +"/L c #233A30", +"(L c #204A32", +"_L c #213433", +":L c #304028", +"M c #0F787E", +",M c #233237", +"'M c #0F8899", +")M c #00D0EF", +"!M c #02E2FE", +"~M c #0B7692", +"{M c #06B2CA", +"]M c #038FC6", +"^M c #026898", +"/M c #292429", +"(M c #27262C", +"_M c #252934", +":M c #134B6A", +"N c #79FE02", +",N c #7AFF00", +"'N c #7AFE01", +")N c #85F62A", +"!N c #1E8C7D", +"~N c #06816B", +"{N c #0B8370", +"]N c #0A8371", +"^N c #0B8070", +"/N c #0E766B", +"(N c #0E766C", +"_N c #0E756C", +":N c #0E756D", +"O c #26312F", +",O c #27342D", +"'O c #3C6523", +")O c #385528", +"!O c #4F751F", +"~O c #089122", +"{O c #0CA629", +"]O c #198130", +"^O c #28282E", +"/O c #28252F", +"(O c #26312C", +"_O c #226A22", +":O c #292C30", +"P c #01B3CB", +",P c #06C0D1", +"'P c #06BED5", +")P c #03DDF9", +"!P c #0AF3FF", +"~P c #1E9196", +"{P c #281820", +"]P c #272B32", +"^P c #0C6E88", +"/P c #0E6E87", +"(P c #292733", +"_P c #087A4E", +":P c #136044", +"

    Q c #05FFA8", +",Q c #05FEA1", +"'Q c #13FEB8", +")Q c #24FAD6", +"!Q c #0C9464", +"~Q c #06804D", +"{Q c #098554", +"]Q c #24A06F", +"^Q c #2AA475", +"/Q c #2BA376", +"(Q c #2BA377", +"_Q c #2BA375", +":Q c #299C84", +"R c #132674", +",R c #2B2824", +"'R c #282830", +")R c #263030", +"!R c #243B31", +"~R c #243E31", +"{R c #253831", +"]R c #253731", +"^R c #272E30", +"/R c #253931", +"(R c #234531", +"_R c #243B30", +":R c #243F31", +"S c #15FCFD", +",S c #23F2F7", +"'S c #0F7386", +")S c #252730", +"!S c #2A282E", +"~S c #29282F", +"{S c #2A262C", +"]S c #24323C", +"^S c #087A96", +"/S c #145F74", +"(S c #2A242A", +"_S c #2A2027", +":S c #2D1620", +"T c #2CC14C", +",T c #2D2C33", +"'T c #2B1F30", +")T c #176B2E", +"!T c #06C22F", +"~T c #1F482D", +"{T c #2B2230", +"]T c #282A2F", +"^T c #138156", +"/T c #089D5E", +"(T c #08804C", +"_T c #0A5E3A", +":T c #095E3A", +"U c #1E3264", +",U c #26283B", +"'U c #103EA5", +")U c #054FFF", +"!U c #21397C", +"~U c #262936", +"{U c #242D47", +"]U c #272A39", +"^U c #272A37", +"/U c #272939", +"(U c #292830", +"_U c #263331", +":U c #243D31", +"V c #2A282F", +",V c #292A32", +"'V c #2B242B", +")V c #07809E", +"!V c #1A4F61", +"~V c #2B2329", +"{V c #29222A", +"]V c #0ECACC", +"^V c #00F2FF", +"/V c #178A9E", +"(V c #2C1C22", +"_V c #2A2329", +":V c #106881", +"W c #22953E", +",W c #281E2E", +"'W c #292D31", +")W c #2A2130", +"!W c #11882E", +"~W c #07B62F", +"{W c #24362E", +"]W c #2A2531", +"^W c #0A5D3B", +"/W c #0A5A39", +"(W c #077F4D", +"_W c #0C915A", +":W c #1F5844", +"X c #252C46", +",X c #252F45", +"'X c #272D3C", +")X c #2A292D", +"!X c #2A2931", +"~X c #2A292F", +"{X c #2A2830", +"]X c #283231", +"^X c #254332", +"/X c #292E31", +"(X c #205933", +"_X c #234A32", +":X c #263D31", +"Y c #0592B2", +",Y c #04C3D4", +"'Y c #177D8A", +")Y c #2C272C", +"!Y c #0E7892", +"~Y c #19435E", +"{Y c #1F5260", +"]Y c #0AB7E1", +"^Y c #12FEFF", +"/Y c #14CDD4", +"(Y c #223A53", +"_Y c #1D506C", +":Y c #253849", +"Z c #2C222E", +",Z c #2B2730", +"'Z c #292C32", +")Z c #2A2B32", +"!Z c #2C2C33", +"~Z c #4C4C52", +"{Z c #9EEF70", +"]Z c #53FF00", +"^Z c #5EFE03", +"/Z c #5DFE01", +"(Z c #58FF00", +"_Z c #6FF026", +":Z c #3C3845", +"` c #273A31", +",` c #264031", +"'` c #283731", +")` c #224A31", +"!` c #248028", +"~` c #294730", +"{` c #1D8E22", +"]` c #177B2C", +"^` c #0F9127", +"/` c #167629", +"(` c #293031", +"_` c #2B2530", +":` c #263C39", +"<` c #187D4E", +"[` c #283430", +"}` c #2E1624", +"|` c #2B202D", +"1` c #1A6428", +"2` c #2A3833", +"3` c #2A2631", +"4` c #2B2732", +"5` c #273531", +"6` c #12891E", +"7` c #1F6526", +"8` c #2A2C31", +"9` c #9D989D", +"0` c #A3B7A6", +"a` c #1FD641", +"b` c #5EC472", +"c` c #BCAFBA", +"d` c #B4B3B4", +"e` c #AEAFAE", +"f` c #30C851", +"g` c #099C2C", +"h` c #2A2C32", +"i` c #18692E", +"j` c #1E512F", +"k` c #2C2532", +"l` c #283638", +"m` c #2D222E", +"n` c #2B2A32", +"o` c #2D2D34", +"p` c #1F1F27", +"q` c #6A6A6F", +"r` c #CACDC9", +"s` c #D6CADD", +"t` c #9CEF6F", +"u` c #4FFF00", +"v` c #5AFE03", +"w` c #59FE01", +"x` c #54FF00", +"y` c #6CF026", +"z` c #3D3946", +"A` c #2B2C33", +"B` c #2B2830", +"C` c #10717E", +"D` c #0D818F", +"E` c #135567", +"F` c #0980A0", +"G` c #078BAE", +"H` c #125B70", +"I` c #2B282E", +"J` c #145E74", +"K` c #097A96", +"L` c #26343E", +"M` c #2C282F", +"N` c #2B2A33", +"O` c #0E6356", +"P` c #204740", +"Q` c #1D4B61", +"R` c #11637C", +"S` c #2D252A", +"T` c #2B2931", +"U` c #273942", +"V` c #2A2F36", +"W` c #06D4DA", +"X` c #0CFFFF", +"Y` c #20C9D1", +"Z` c #04AACA", +"`` c #05E5FF", +" . c #18BCCC", +". . c #1F5266", +"+ . c #214B60", +"@ . c #233F58", +"# . c #11717E", +"$ . c #117A90", +"% . c #1F596E", +"& . c #21475E", +"* . c #1D4875", +"= . c #1D4872", +"- . c #204266", +"; . c #1E4565", +"> . c #0A729B", +", . c #194C86", +"' . c #1157AA", +") . c #1A5183", +"! . c #174C7C", +"~ . c #0962AF", +"{ . c #0D62A1", +"] . c #16518F", +"^ . c #144C90", +"/ . c #0C5A9E", +"( . c #1A3783", +"_ . c #183B87", +": . c #173B8E", +"< . c #1B3A7C", +"[ . c #15368E", +"} . c #0D3A8D", +"| . c #18388C", +"1 . c #183B8B", +"2 . c #183A88", +"3 . c #1B387B", +"4 . c #183F8C", +"5 . c #1B3C7B", +"6 . c #1E376F", +"7 . c #223059", +"8 . c #1F3469", +"9 . c #223859", +"0 . c #223A59", +"a . c #233257", +"b . c #25344C", +"c . c #282D40", +"d . c #243553", +"e . c #213961", +"f . c #243551", +"g . c #263249", +"h . c #28313E", +"i . c #233855", +"j . c #292E3B", +"k . c #28303F", +"l . c #2B292E", +"m . c #2A2F32", +"n . c #283833", +"o . c #254633", +"p . c #244B33", +"q . c #244A33", +"r . c #293432", +"s . c #293332", +"t . c #254731", +"u . c #283631", +"v . c #205E30", +"w . c #263B33", +"x . c #256929", +"y . c #294830", +"z . c #1B8B24", +"A . c #1B782B", +"B . c #109229", +"C . c #128327", +"D . c #293132", +"E . c #2B252E", +"F . c #0FC577", +"G . c #05FF8E", +"H . c #0BCA6E", +"I . c #188779", +"J . c #205945", +"K . c #128729", +"L . c #264F35", +"M . c #2C2434", +"N . c #1C6326", +"O . c #188A1D", +"P . c #2B3431", +"Q . c #2B2832", +"R . c #898C8C", +"S . c #C3B7C1", +"T . c #59C06C", +"U . c #23D845", +"V . c #A1B3A4", +"W . c #B8B3B7", +"X . c #B0B4B1", +"Y . c #BFB3BC", +"Z . c #62B574", +"` . c #00BB28", +" .. c #2B2932", +"... c #253830", +"+.. c #08B830", +"@.. c #12862C", +"#.. c #2E162F", +"$.. c #2C2632", +"%.. c #2A2D32", +"&.. c #2A2A33", +"*.. c #2D2D35", +"=.. c #1F1F28", +"-.. c #8A8A8E", +";.. c #9AEF6F", +">.. c #4BFF00", +",.. c #56FE03", +"'.. c #55FE01", +").. c #50FF00", +"!.. c #69F026", +"~.. c #3D3846", +"{.. c #2A2C34", +"].. c #2D252D", +"^.. c #1F454F", +"/.. c #078D9C", +"(.. c #1A5964", +"_.. c #194354", +":.. c #0784A5", +"<.. c #088AAD", +"[.. c #125970", +"}.. c #2A2B34", +"|.. c #2C262D", +"1.. c #213E4C", +"2.. c #1B4F61", +"3.. c #2D252C", +"4.. c #2D2630", +"5.. c #145652", +"6.. c #146059", +"7.. c #301F28", +"8.. c #195263", +"9.. c #11657C", +"0.. c #292F37", +"a.. c #25434B", +"b.. c #25414A", +"c.. c #2A2F37", +"d.. c #1E5E6B", +"e.. c #1B8D9E", +"f.. c #264A55", +"g.. c #1B6173", +"h.. c #18A7B7", +"i.. c #295158", +"j.. c #214558", +"k.. c #234858", +"l.. c #244253", +"m.. c #1B5D79", +"n.. c #0890A2", +"o.. c #1E5267", +"p.. c #195387", +"q.. c #185A88", +"r.. c #185F8B", +"s.. c #115DAB", +"t.. c #19508C", +"u.. c #0F6792", +"v.. c #0D669F", +"w.. c #1B4E84", +"x.. c #1A5182", +"y.. c #164590", +"z.. c #085DAC", +"A.. c #0F5598", +"B.. c #0B5FB0", +"C.. c #18438F", +"D.. c #0E548B", +"E.. c #183C84", +"F.. c #15409C", +"G.. c #1A4080", +"H.. c #173D91", +"I.. c #0B60C6", +"J.. c #0867C6", +"K.. c #174096", +"L.. c #17378F", +"M.. c #1C3779", +"N.. c #1A387F", +"O.. c #164194", +"P.. c #1B397B", +"Q.. c #233158", +"R.. c #193C85", +"S.. c #154297", +"T.. c #1C4175", +"U.. c #1F3767", +"V.. c #25314C", +"W.. c #22385B", +"X.. c #263448", +"Y.. c #203F66", +"Z.. c #25344D", +"`.. c #243851", +" +. c #282E3D", +".+. c #25354B", +"++. c #223E5A", +"@+. c #26344A", +"#+. c #272F41", +"$+. c #2A2B35", +"%+. c #2A2D33", +"&+. c #293133", +"*+. c #254434", +"=+. c #283933", +"-+. c #273A33", +";+. c #234F33", +">+. c #263E32", +",+. c #293333", +"'+. c #264033", +")+. c #234E31", +"!+. c #254831", +"~+. c #22682A", +"{+. c #284E2F", +"]+. c #1B7B28", +"^+. c #1D6E2A", +"/+. c #167B2B", +"(+. c #0D9425", +"_+. c #07DD71", +":+. c #01FF67", +"<+. c #05F9BF", +"[+. c #08FFE0", +"}+. c #02FA98", +"|+. c #07F34B", +"1+. c #10D240", +"2+. c #2B2733", +"3+. c #273D30", +"4+. c #188E1B", +"5+. c #265729", +"6+. c #2B2434", +"7+. c #21212A", +"8+. c #7F8082", +"9+. c #C2BDC1", +"0+. c #9CAF9F", +"a+. c #22D743", +"b+. c #5FC572", +"c+. c #BEB1BB", +"d+. c #BAB4B8", +"e+. c #99AE9E", +"f+. c #08BB31", +"g+. c #13822F", +"h+. c #2D2233", +"i+. c #2A2F33", +"j+. c #2D2032", +"k+. c #148030", +"l+. c #01DE41", +"m+. c #12973F", +"n+. c #264034", +"o+. c #2C2332", +"p+. c #A8A8AA", +"q+. c #D6C9DC", +"r+. c #98EF6F", +"s+. c #47FF00", +"t+. c #53FE03", +"u+. c #51FF00", +"v+. c #52FE01", +"w+. c #4DFF00", +"x+. c #66F026", +"y+. c #2C2930", +"z+. c #10727F", +"A+. c #0C8392", +"B+. c #2A2F35", +"C+. c #194757", +"D+. c #0883A4", +"E+. c #13596E", +"F+. c #2C2B32", +"G+. c #0E6E88", +"H+. c #2E262F", +"I+. c #1E4347", +"J+. c #0F655F", +"K+. c #2C2E36", +"L+. c #2E2329", +"M+. c #1A5362", +"N+. c #12667A", +"O+. c #2E262C", +"P+. c #2B2C34", +"Q+. c #273E44", +"R+. c #26434B", +"S+. c #244E55", +"T+. c #21575E", +"U+. c #244B53", +"V+. c #24444E", +"W+. c #263A45", +"X+. c #244A53", +"Y+. c #1D5B6C", +"Z+. c #1E566B", +"`+. c #1D6073", +" @. c #1E5C6E", +".@. c #214D62", +"+@. c #214C68", +"@@. c #16687A", +"#@. c #0F758F", +"$@. c #1B5181", +"%@. c #204D66", +"&@. c #165C94", +"*@. c #165695", +"=@. c #165B96", +"-@. c #1E496D", +";@. c #0C6B92", +">@. c #155590", +",@. c #1B457D", +"'@. c #1D4477", +")@. c #0F5590", +"!@. c #0D53A0", +"~@. c #0C5CA3", +"{@. c #1C387E", +"]@. c #134D84", +"^@. c #144C82", +"/@. c #18408F", +"(@. c #164693", +"_@. c #1B3D7D", +":@. c #0F62B3", +"<@. c #0E83EF", +"[@. c #1C4289", +"}@. c #163D91", +"|@. c #143FA0", +"1@. c #1347A4", +"2@. c #14409E", +"3@. c #17408F", +"4@. c #1C4079", +"5@. c #1E3B6F", +"6@. c #1E3F70", +"7@. c #1E3D72", +"8@. c #203D69", +"9@. c #1E3C71", +"0@. c #223D5D", +"a@. c #223C5B", +"b@. c #22395C", +"c@. c #213962", +"d@. c #283241", +"e@. c #25384F", +"f@. c #214262", +"g@. c #253A51", +"h@. c #233C5A", +"i@. c #25364D", +"j@. c #28313F", +"k@. c #2B2C35", +"l@. c #2A2C35", +"m@. c #2A303A", +"n@. c #273E33", +"o@. c #283B33", +"p@. c #264333", +"q@. c #244C33", +"r@. c #293533", +"s@. c #244D33", +"t@. c #244C32", +"u@. c #245032", +"v@. c #274233", +"w@. c #264632", +"x@. c #273E32", +"y@. c #24572D", +"z@. c #236A2D", +"A@. c #1D642C", +"B@. c #198328", +"C@. c #1E612E", +"D@. c #0AA123", +"E@. c #273C31", +"F@. c #2A3334", +"G@. c #2A3033", +"H@. c #2C2732", +"I@. c #0F963A", +"J@. c #09C04D", +"K@. c #04DD78", +"L@. c #03DA7D", +"M@. c #0ADF8E", +"N@. c #07F746", +"O@. c #1E9F41", +"P@. c #2C2432", +"Q@. c #2B2E32", +"R@. c #2C2734", +"S@. c #1F7023", +"T@. c #217F1E", +"U@. c #2C2D33", +"V@. c #2B2C32", +"W@. c #717174", +"X@. c #BBBEBB", +"Y@. c #BAAEB8", +"Z@. c #5BC26E", +"`@. c #21D843", +" #. c #99B09D", +".#. c #B9B4B8", +"+#. c #B2B5B3", +"@#. c #B5ACB3", +"##. c #28A144", +"$#. c #04B12B", +"%#. c #283732", +"&#. c #2C2933", +"*#. c #2C2731", +"=#. c #0CBF4D", +"-#. c #07FF69", +";#. c #06FF5F", +">#. c #05E543", +",#. c #273C32", +"'#. c #2C2733", +")#. c #2C2C34", +"!#. c #36363D", +"~#. c #C9CCC8", +"{#. c #D6C9DB", +"]#. c #96EE6F", +"^#. c #43FF00", +"/#. c #4FFE03", +"(#. c #4EFE01", +"_#. c #49FF00", +":#. c #63F126", +"<#. c #3E3A47", +"[#. c #2C2D34", +"}#. c #2B2D35", +"|#. c #2E262D", +"1#. c #204751", +"2#. c #088D9C", +"3#. c #1C5964", +"4#. c #302127", +"5#. c #184A5B", +"6#. c #0982A3", +"7#. c #0989AC", +"8#. c #13586D", +"9#. c #1C4E60", +"0#. c #22414F", +"a#. c #2E272E", +"b#. c #2B2F37", +"c#. c #2D2B32", +"d#. c #26363D", +"e#. c #0C6867", +"f#. c #28393F", +"g#. c #2C2931", +"h#. c #1C525F", +"i#. c #126A7B", +"j#. c #2C2B33", +"k#. c #2C2A32", +"l#. c #2B3037", +"m#. c #2B3038", +"n#. c #273F45", +"o#. c #2A353C", +"p#. c #26484D", +"q#. c #12F4EC", +"r#. c #254150", +"s#. c #225360", +"t#. c #1B4D7E", +"u#. c #1266A8", +"v#. c #1E4675", +"w#. c #147A9E", +"x#. c #13D8D9", +"y#. c #1A417F", +"z#. c #085AAE", +"A#. c #1C3F7E", +"B#. c #1A3C81", +"C#. c #1B3C82", +"D#. c #124291", +"E#. c #173B7F", +"F#. c #1E3474", +"G#. c #15429A", +"H#. c #1F376E", +"I#. c #1B3F7F", +"J#. c #1C3C7A", +"K#. c #1B3D7E", +"L#. c #19438A", +"M#. c #18438C", +"N#. c #1C3B7D", +"O#. c #1B417E", +"P#. c #18478D", +"Q#. c #27334B", +"R#. c #253253", +"S#. c #1A4684", +"T#. c #20406A", +"U#. c #23345B", +"V#. c #273349", +"W#. c #283044", +"X#. c #283146", +"Y#. c #243D55", +"Z#. c #273547", +"`#. c #243E56", +" $. c #283342", +".$. c #293341", +"+$. c #2B2C37", +"@$. c #292F40", +"#$. c #2B2D36", +"$$. c #2B2E38", +"%$. c #2B2F33", +"&$. c #2B2D33", +"*$. c #293934", +"=$. c #2A3234", +"-$. c #2B3133", +";$. c #2A3333", +">$. c #2A3133", +",$. c #273F33", +"'$. c #2A3434", +")$. c #264733", +"!$. c #274032", +"~$. c #283C33", +"{$. c #22592F", +"]$. c #216D2D", +"^$. c #1E652E", +"/$. c #149926", +"($. c #225831", +"_$. c #06B322", +":$. c #224B2F", +"<$. c #2E2434", +"[$. c #2D2534", +"}$. c #22562F", +"|$. c #137325", +"1$. c #2E2230", +"2$. c #128842", +"3$. c #00D750", +"4$. c #03C15C", +"5$. c #1D5937", +"6$. c #2F1C31", +"7$. c #2D2635", +"8$. c #27462E", +"9$. c #209019", +"0$. c #2B4D2C", +"a$. c #2C2535", +"b$. c #2E2E36", +"c$. c #66666B", +"d$. c #BCBEBC", +"e$. c #9EB2A1", +"f$. c #53C067", +"g$. c #BBB0B9", +"h$. c #B2B6B3", +"i$. c #BAB0B8", +"j$. c #3B6F4A", +"k$. c #00BF2A", +"l$. c #1C6831", +"m$. c #301B33", +"n$. c #254C37", +"o$. c #00FB57", +"p$. c #0BFE60", +"q$. c #11EB56", +"r$. c #03FB46", +"s$. c #1F7A3D", +"t$. c #2E1E32", +"u$. c #2B2F34", +"v$. c #24242D", +"w$. c #4D4D53", +"x$. c #D6C8DB", +"y$. c #93EE6F", +"z$. c #3FFF00", +"A$. c #4BFE03", +"B$. c #4AFE01", +"C$. c #45FF00", +"D$. c #60F126", +"E$. c #3E3947", +"F$. c #107381", +"G$. c #29323B", +"H$. c #2E252B", +"I$. c #18485A", +"J$. c #14566B", +"K$. c #2D272E", +"L$. c #28333D", +"M$. c #0A7997", +"N$. c #2D2930", +"O$. c #2B2E36", +"P$. c #2F1D25", +"Q$. c #2C242D", +"R$. c #0E6268", +"S$. c #20494F", +"T$. c #2E252E", +"U$. c #2A2E36", +"V$. c #2E252C", +"W$. c #175E6A", +"X$. c #16616E", +"Y$. c #2A3037", +"Z$. c #283E43", +"`$. c #29363C", +" %. c #2A343B", +".%. c #25494E", +"+%. c #26474C", +"@%. c #26464C", +"#%. c #206365", +"$%. c #1E6E6F", +"%%. c #1C8E8E", +"&%. c #1F8385", +"*%. c #1B687F", +"=%. c #1A6D81", +"-%. c #1F5E6E", +";%. c #20586C", +">%. c #17A1AC", +",%. c #1690AE", +"'%. c #1C537C", +")%. c #1A5B85", +"!%. c #1F466B", +"~%. c #18578D", +"{%. c #17B6BD", +"]%. c #12A6BE", +"^%. c #24345E", +"/%. c #0F5291", +"(%. c #153C88", +"_%. c #1C377B", +":%. c #1B3A86", +"<%. c #0F4096", +"[%. c #193A7A", +"}%. c #174097", +"|%. c #193D89", +"1%. c #1D3978", +"2%. c #1A4386", +"3%. c #19448A", +"4%. c #18488F", +"5%. c #1D4074", +"6%. c #1B4180", +"7%. c #19458A", +"8%. c #194587", +"9%. c #19488A", +"0%. c #1D3B75", +"a%. c #1D3D76", +"b%. c #233958", +"c%. c #1A4C86", +"d%. c #1F416D", +"e%. c #1E446F", +"f%. c #223D5F", +"g%. c #214662", +"h%. c #243F56", +"i%. c #23405B", +"j%. c #273546", +"k%. c #233B59", +"l%. c #22415D", +"m%. c #204668", +"n%. c #273246", +"o%. c #26364B", +"p%. c #2A2F38", +"q%. c #2A2D3A", +"r%. c #2A2D38", +"s%. c #29313E", +"t%. c #29323A", +"u%. c #2A3034", +"v%. c #283B34", +"w%. c #264635", +"x%. c #293735", +"y%. c #293833", +"z%. c #2A3233", +"A%. c #2B2B34", +"B%. c #225833", +"C%. c #283A33", +"D%. c #283E32", +"E%. c #254932", +"F%. c #1F662F", +"G%. c #1E732C", +"H%. c #1F5F2F", +"I%. c #0DAF25", +"J%. c #1F6E31", +"K%. c #09AB24", +"L%. c #1C632C", +"M%. c #2D2735", +"N%. c #2C3134", +"O%. c #177A24", +"P%. c #21512E", +"Q%. c #293B38", +"R%. c #196B38", +"S%. c #128836", +"T%. c #00D146", +"U%. c #0E8E55", +"V%. c #2A2E34", +"W%. c #23791F", +"X%. c #297620", +"Y%. c #2C2935", +"Z%. c #23232C", +"`%. c #56565B", +" &. c #BCBCBB", +".&. c #B1B4B2", +"+&. c #BDB1BB", +"@&. c #5CC26F", +"#&. c #1FD741", +"$&. c #97B09C", +"%&. c #B9B4B9", +"&&. c #565A5C", +"*&. c #03A027", +"=&. c #10A132", +"-&. c #283D34", +";&. c #03F24B", +">&. c #00F946", +",&. c #02EE3C", +"'&. c #04E03B", +")&. c #225937", +"!&. c #2E2133", +"~&. c #2F2F36", +"{&. c #6B6B6F", +"]&. c #C8CBC7", +"^&. c #93F070", +"/&. c #3AFF00", +"(&. c #48FE03", +"_&. c #46FE01", +":&. c #41FF00", +"<&. c #5DF126", +"[&. c #3F3A48", +"}&. c #2C2D35", +"|&. c #214853", +"1&. c #1C5661", +"2&. c #2E272F", +"3&. c #2E2930", +"4&. c #194859", +"5&. c #0882A4", +"6&. c #0889AC", +"7&. c #185164", +"8&. c #2E272D", +"9&. c #165E74", +"0&. c #0A7B98", +"a&. c #2A2E38", +"b&. c #2D2931", +"c&. c #1F787D", +"d&. c #0E878F", +"e&. c #19525C", +"f&. c #2F2830", +"g&. c #2F252D", +"h&. c #146972", +"i&. c #195A64", +"j&. c #2F242C", +"k&. c #2C2B34", +"l&. c #2A363C", +"m&. c #283E42", +"n&. c #235656", +"o&. c #206664", +"p&. c #235657", +"q&. c #254D4D", +"r&. c #254B4D", +"s&. c #23595D", +"t&. c #225A5A", +"u&. c #216164", +"v&. c #197F88", +"w&. c #1B607E", +"x&. c #196C88", +"y&. c #1D6277", +"z&. c #1F5871", +"A&. c #1B6581", +"B&. c #156D7F", +"C&. c #21476D", +"D&. c #1C597B", +"E&. c #1C557D", +"F&. c #1B6287", +"G&. c #12F1E9", +"H&. c #147293", +"I&. c #25345C", +"J&. c #116D9C", +"K&. c #06A5DC", +"L&. c #22406A", +"M&. c #1B4583", +"N&. c #085DC1", +"O&. c #1D3E76", +"P&. c #193E8D", +"Q&. c #1A4087", +"R&. c #1E3873", +"S&. c #1F3A6F", +"T&. c #1C3F7C", +"U&. c #174895", +"V&. c #1C407F", +"W&. c #174A95", +"X&. c #223562", +"Y&. c #203C69", +"Z&. c #1D4476", +"`&. c #1B4782", +" *. c #1D4377", +".*. c #214068", +"+*. c #1F4670", +"@*. c #1F4572", +"#*. c #214067", +"$*. c #224463", +"%*. c #24445A", +"&*. c #244257", +"**. c #283347", +"=*. c #20496A", +"-*. c #214865", +";*. c #263D4E", +">*. c #27354B", +",*. c #293241", +"'*. c #243E57", +")*. c #283647", +"!*. c #293442", +"~*. c #2A313D", +"{*. c #2B303A", +"]*. c #2C2D36", +"^*. c #2A3734", +"/*. c #293C35", +"(*. c #254D31", +"_*. c #293931", +":*. c #2B3435", +"<*. c #264A34", +"[*. c #2A3634", +"}*. c #254D33", +"|*. c #293C33", +"1*. c #293C34", +"2*. c #235532", +"3*. c #225A32", +"4*. c #283F33", +"5*. c #245132", +"6*. c #17822B", +"7*. c #215830", +"8*. c #149627", +"9*. c #265432", +"0*. c #0CA326", +"a*. c #157E2A", +"b*. c #2E2635", +"c*. c #2A3534", +"d*. c #2B3034", +"e*. c #2C2E34", +"f*. c #2E2636", +"g*. c #25562B", +"h*. c #1B7522", +"i*. c #2E2735", +"j*. c #225C34", +"k*. c #1E6D34", +"l*. c #1B6723", +"m*. c #10933A", +"n*. c #00CE50", +"o*. c #16734A", +"p*. c #2F1C33", +"q*. c #29522B", +"r*. c #289018", +"s*. c #2E4230", +"t*. c #2C2735", +"u*. c #2E2E35", +"v*. c #25252E", +"w*. c #B2B4B3", +"x*. c #BAB5B9", +"y*. c #9EB2A2", +"z*. c #23D744", +"A*. c #54C268", +"B*. c #BAAFB8", +"C*. c #BCC1BC", +"D*. c #635766", +"E*. c #0F6827", +"F*. c #08C532", +"G*. c #224D31", +"H*. c #301E34", +"I*. c #1D7238", +"J*. c #07D83C", +"K*. c #07C335", +"L*. c #07D438", +"M*. c #2D2C35", +"N*. c #2F2F37", +"O*. c #D2C4D7", +"P*. c #84E364", +"Q*. c #38FF00", +"R*. c #43FD03", +"S*. c #42FE01", +"T*. c #3CFF00", +"U*. c #5AF126", +"V*. c #3F3B48", +"W*. c #2D2E35", +"X*. c #2D2C34", +"Y*. c #0E7886", +"Z*. c #0F7C8A", +"`*. c #2E292F", +" =. c #1C4555", +".=. c #0981A2", +"+=. c #2F282E", +"@=. c #253B48", +"#=. c #077D9C", +"$=. c #147485", +"%=. c #2A3C42", +"&=. c #2E252D", +"*=. c #2C3139", +"==. c #2F212A", +"-=. c #216369", +";=. c #04FFFF", +">=. c #2A464E", +",=. c #2D262E", +"'=. c #2F262E", +")=. c #15696F", +"!=. c #195D64", +"~=. c #2F2930", +"{=. c #293E41", +"]=. c #254E4D", +"^=. c #293D41", +"/=. c #293E42", +"(=. c #264B4C", +"_=. c #274648", +":=. c #274749", +"<=. c #1F6C66", +"[=. c #1F6A68", +"}=. c #1E7270", +"|=. c #1F6B6B", +"1=. c #235A5D", +"2=. c #1C7479", +"3=. c #167C94", +"4=. c #196E89", +"5=. c #1E6374", +"6=. c #1F556F", +"7=. c #1C557F", +"8=. c #0A8B9F", +"9=. c #22445B", +"0=. c #1D5A7E", +"a=. c #20526E", +"b=. c #1899AF", +"c=. c #189BB0", +"d=. c #1F406E", +"e=. c #0EB5C7", +"f=. c #11A1BF", +"g=. c #1C3F7D", +"h=. c #184983", +"i=. c #135685", +"j=. c #135785", +"k=. c #193C83", +"l=. c #195A8B", +"m=. c #0AABE6", +"n=. c #204577", +"o=. c #17418E", +"p=. c #0873EC", +"q=. c #1C4B95", +"r=. c #203569", +"s=. c #223864", +"t=. c #1E3975", +"u=. c #21366A", +"v=. c #1D3E7C", +"w=. c #1A4189", +"x=. c #16489A", +"y=. c #164B9A", +"z=. c #174694", +"A=. c #1C447E", +"B=. c #194A8B", +"C=. c #145BA3", +"D=. c #1B4D82", +"E=. c #1D477B", +"F=. c #194C8C", +"G=. c #1A548A", +"H=. c #263C53", +"I=. c #223D63", +"J=. c #283A4A", +"K=. c #254156", +"L=. c #273B4C", +"M=. c #253C58", +"N=. c #224764", +"O=. c #244059", +"P=. c #2C3038", +"Q=. c #253B55", +"R=. c #293547", +"S=. c #2B333C", +"T=. c #273C4D", +"U=. c #293643", +"V=. c #2D2C36", +"W=. c #2C3234", +"X=. c #2A3A35", +"Y=. c #284033", +"Z=. c #245A47", +"`=. c #226145", +" -. c #2B3132", +".-. c #2A3B35", +"+-. c #274734", +"@-. c #2A3834", +"#-. c #293D34", +"$-. c #284233", +"%-. c #284234", +"&-. c #284134", +"*-. c #0ADA41", +"=-. c #1A9138", +"--. c #119726", +";-. c #246435", +">-. c #109629", +",-. c #138628", +"'-. c #2F2436", +")-. c #2C3135", +"!-. c #2D2B35", +"~-. c #2D3135", +"{-. c #1E771E", +"]-. c #274C2D", +"^-. c #2D3036", +"/-. c #227130", +"(-. c #1C7626", +"_-. c #23572A", +":-. c #2C2835", +"<-. c #0AA93F", +"[-. c #00C452", +"}-. c #20543F", +"|-. c #2B7C1A", +"1-. c #2F6B24", +"2-. c #2D2737", +"3-. c #3D3D44", +"4-. c #B1B1B2", +"5-. c #B6B5B5", +"6-. c #BDB2BB", +"7-. c #1FD841", +"8-. c #95AF9A", +"9-. c #C5C0C4", +"0-. c #757078", +"a-. c #1C3529", +"b-. c #0AC033", +"c-. c #158230", +"d-. c #2F2334", +"e-. c #2E2634", +"f-. c #2A2E32", +"g-. c #12752B", +"h-. c #06C932", +"i-. c #11782B", +"j-. c #2D2633", +"k-. c #2C2C35", +"l-. c #A7A7A9", +"m-. c #CCD0CB", +"n-. c #C4B5C9", +"o-. c #68C84B", +"p-. c #39FF00", +"q-. c #3FFC02", +"r-. c #3EFF00", +"s-. c #3FFE01", +"t-. c #57F126", +"u-. c #1E4E59", +"v-. c #1F4F5A", +"w-. c #2E262E", +"x-. c #2C2F38", +"y-. c #30272D", +"z-. c #1E4251", +"A-. c #0981A3", +"B-. c #0888AC", +"C-. c #194F62", +"D-. c #2F272E", +"E-. c #2D2A32", +"F-. c #2A383F", +"G-. c #08A2B8", +"H-. c #00CCE5", +"I-. c #03DBED", +"J-. c #254852", +"K-. c #2E2830", +"L-. c #2D2831", +"M-. c #28474D", +"N-. c #06BAC9", +"O-. c #18ADB9", +"P-. c #2E373E", +"Q-. c #2F252E", +"R-. c #156B6E", +"S-. c #195E63", +"T-. c #283E41", +"U-. c #20645B", +"V-. c #25504E", +"W-. c #27484A", +"X-. c #254D4E", +"Y-. c #206962", +"Z-. c #216262", +"`-. c #1E6E69", +" ;. c #188982", +".;. c #206561", +"+;. c #1C717A", +"@;. c #1F5772", +"#;. c #205769", +"$;. c #205269", +"%;. c #205F6D", +"&;. c #1E5B72", +"*;. c #14748C", +"=;. c #127683", +"-;. c #28374D", +";;. c #1B5986", +">;. c #13E4E0", +",;. c #12F0E9", +"';. c #13E1E1", +");. c #14C7D2", +"!;. c #0FAEBD", +"~;. c #166596", +"{;. c #174796", +"];. c #0C63A0", +"^;. c #0599D0", +"/;. c #0894D3", +"(;. c #1B3589", +"_;. c #0D4C9E", +":;. c #134893", +"<;. c #164B98", +"[;. c #0951BB", +"};. c #1C3D83", +"|;. c #183E8E", +"1;. c #173F94", +"2;. c #193D8E", +"3;. c #143FA4", +"4;. c #1342A7", +"5;. c #19408B", +"6;. c #1B4184", +"7;. c #1C4180", +"8;. c #1A4A88", +"9;. c #15539C", +"0;. c #15589C", +"a;. c #175294", +"b;. c #1D4379", +"c;. c #1E4976", +"d;. c #1B4D84", +"e;. c #1C4C7D", +"f;. c #1C4E7E", +"g;. c #1C4C7C", +"h;. c #214466", +"i;. c #20436C", +"j;. c #254055", +"k;. c #28354A", +"l;. c #273D4F", +"m;. c #283546", +"n;. c #263F52", +"o;. c #24415C", +"p;. c #263D53", +"q;. c #254256", +"r;. c #2A3340", +"s;. c #2D2A34", +"t;. c #293B3C", +"u;. c #273D49", +"v;. c #254847", +"w;. c #283E33", +"x;. c #0CCA77", +"y;. c #0FCF6D", +"z;. c #2B3331", +"A;. c #274735", +"B;. c #2A3735", +"C;. c #293B35", +"D;. c #293F34", +"E;. c #274534", +"F;. c #293E34", +"G;. c #284334", +"H;. c #244F32", +"I;. c #1C8A3B", +"J;. c #24673A", +"K;. c #0BB228", +"L;. c #208437", +"M;. c #1B6D2D", +"N;. c #0E9825", +"O;. c #2D2F34", +"P;. c #2E2637", +"Q;. c #275427", +"R;. c #22701D", +"S;. c #2E2537", +"T;. c #2A5030", +"U;. c #228126", +"V;. c #1E7323", +"W;. c #263D33", +"X;. c #03BE47", +"Y;. c #08B848", +"Z;. c #317E1A", +"`;. c #2F3832", +" >. c #2C2A35", +".>. c #38383F", +"+>. c #B4B5B4", +"@>. c #BBB6BA", +"#>. c #9FB3A3", +"$>. c #52C167", +"%>. c #C7BCC4", +"&>. c #7B7E7F", +"*>. c #241D2B", +"=>. c #148F31", +"->. c #0AB12E", +";>. c #273D33", +">>. c #302034", +",>. c #2E2A36", +"'>. c #0E8A2C", +")>. c #07C532", +"!>. c #37373F", +"~>. c #BEBEBF", +"{>. c #D0D3CE", +"]>. c #AD9EB4", +"^>. c #57B93D", +"/>. c #3BFC01", +"(>. c #3BFE01", +"_>. c #35FF00", +":>. c #54F126", +"<>. c #403B49", +"[>. c #2D2D36", +"}>. c #2C2E37", +"|>. c #0E7A88", +"1>. c #107A88", +"2>. c #2C2F37", +"3>. c #30282F", +"4>. c #1F4251", +"5>. c #194E61", +"6>. c #2F282F", +"7>. c #2D2E37", +"8>. c #2D3038", +"9>. c #30212A", +"0>. c #21676D", +"a>. c #04E8EC", +"b>. c #0ABDD5", +"c>. c #01F3FF", +"d>. c #1E969A", +"e>. c #2F1D26", +"f>. c #2C333B", +"g>. c #312028", +"h>. c #166675", +"i>. c #1E515E", +"j>. c #30222A", +"k>. c #2D2F38", +"l>. c #2D2F37", +"m>. c #30252F", +"n>. c #156B6C", +"o>. c #196365", +"p>. c #2F2C32", +"q>. c #274748", +"r>. c #26504C", +"s>. c #21645B", +"t>. c #255350", +"u>. c #264E4C", +"v>. c #245555", +"w>. c #206864", +"x>. c #19897B", +"y>. c #21635E", +"z>. c #216560", +"A>. c #225E5E", +"B>. c #23575A", +"C>. c #234E62", +"D>. c #1F6073", +"E>. c #1C6D7C", +"F>. c #225865", +"G>. c #244F5D", +"H>. c #1C6783", +"I>. c #244761", +"J>. c #0C8C9D", +"K>. c #1E5765", +"L>. c #1C879A", +"M>. c #12F3EB", +"N>. c #18AAB8", +"O>. c #0CA4C6", +"P>. c #0AD6FB", +"Q>. c #11A1D1", +"R>. c #1B3A89", +"S>. c #184A87", +"T>. c #15477C", +"U>. c #0D5DC4", +"V>. c #0985FF", +"W>. c #21427A", +"X>. c #1441A0", +"Y>. c #1B3A88", +"Z>. c #163F9D", +"`>. c #1A3D8C", +" ,. c #16429C", +".,. c #173F95", +"+,. c #1B4286", +"@,. c #1547A1", +"#,. c #174795", +"$,. c #1D497F", +"%,. c #1A4E8A", +"&,. c #1A4A8B", +"*,. c #19528F", +"=,. c #165A9A", +"-,. c #1B5287", +";,. c #1D4E7D", +">,. c #1463A3", +",,. c #175C97", +"',. c #1C5581", +"),. c #273B52", +"!,. c #253E5B", +"~,. c #264055", +"{,. c #264156", +"],. c #293849", +"^,. c #24485E", +"/,. c #28364C", +"(,. c #234B62", +"_,. c #264154", +":,. c #2C2E38", +"<,. c #2A3442", +"[,. c #293746", +"},. c #2A3B3B", +"|,. c #293B41", +"1,. c #2B3440", +"2,. c #1C743F", +"3,. c #16863F", +"4,. c #2B3835", +"5,. c #2A3D36", +"6,. c #293E36", +"7,. c #2A3C35", +"8,. c #274B34", +"9,. c #245534", +"0,. c #235C33", +"a,. c #206A32", +"b,. c #2B3233", +"c,. c #264E33", +"d,. c #0CA52A", +"e,. c #1A8E38", +"f,. c #215F31", +"g,. c #0AA424", +"h,. c #2C2F35", +"i,. c #2E2C36", +"j,. c #2E2F35", +"k,. c #2B2637", +"l,. c #2C3335", +"m,. c #257918", +"n,. c #2B462F", +"o,. c #2E2B38", +"p,. c #2B6F26", +"q,. c #20891E", +"r,. c #29472F", +"s,. c #2E2837", +"t,. c #302335", +"u,. c #205637", +"v,. c #05D940", +"w,. c #198C3A", +"x,. c #2E2737", +"y,. c #2D2F35", +"z,. c #A2A2A3", +"A,. c #B5B4B5", +"B,. c #B4B6B4", +"C,. c #BEB2BC", +"D,. c #5DC270", +"E,. c #1DD740", +"F,. c #A0BBA4", +"G,. c #969398", +"H,. c #281B2E", +"I,. c #1E6A37", +"J,. c #00F04C", +"K,. c #02F04F", +"L,. c #15973D", +"M,. c #2F2C37", +"N,. c #0B9B2D", +"O,. c #07C131", +"P,. c #19592B", +"Q,. c #2F2636", +"R,. c #2D2F36", +"S,. c #4F4F55", +"T,. c #D3D7D2", +"U,. c #918298", +"V,. c #4EB236", +"W,. c #36FF00", +"X,. c #36FC01", +"Y,. c #37FE01", +"Z,. c #31FF00", +"`,. c #51F126", +" '. c #2E2F36", +".'. c #1F505A", +"+'. c #088D9D", +"@'. c #204E59", +"#'. c #30292F", +"$'. c #2E2E37", +"%'. c #2D2E36", +"&'. c #28464E", +"*'. c #01F2F4", +"='. c #08FFFF", +"-'. c #18FFFF", +";'. c #2A6D76", +">'. c #2F222A", +",'. c #2D3139", +"''. c #2F2B32", +")'. c #127783", +"!'. c #234B55", +"~'. c #302930", +"{'. c #302931", +"]'. c #127673", +"^'. c #1D5B5B", +"/'. c #2C3A3C", +"('. c #274C4A", +"_'. c #2D3238", +":'. c #264F4B", +"<'. c #235E56", +"['. c #245A55", +"}'. c #1D796A", +"|'. c #255553", +"1'. c #1E7368", +"2'. c #264F4F", +"3'. c #1E6F6E", +"4'. c #1D6D73", +"5'. c #205C6D", +"6'. c #24515C", +"7'. c #235261", +"8'. c #21576B", +"9'. c #20536F", +"0'. c #224869", +"a'. c #186A8A", +"b'. c #0C809A", +"c'. c #14D2D5", +"d'. c #14CDD6", +"e'. c #1067A7", +"f'. c #0A5BAD", +"g'. c #15449D", +"h'. c #1A3E8E", +"i'. c #0E5F97", +"j'. c #1059AA", +"k'. c #1956B1", +"l'. c #1445A6", +"m'. c #1C3D81", +"n'. c #1D3E80", +"o'. c #1A3A8A", +"p'. c #1A3D8B", +"q'. c #1D3D7F", +"r'. c #21386E", +"s'. c #1D3F7D", +"t'. c #1543A1", +"u'. c #19438F", +"v'. c #1552A1", +"w'. c #174C96", +"x'. c #1A488A", +"y'. c #1361AA", +"z'. c #1557A0", +"A'. c #16579E", +"B'. c #175F99", +"C'. c #1C5584", +"D'. c #1B5787", +"E'. c #17639A", +"F'. c #205171", +"G'. c #1F5176", +"H'. c #234962", +"I'. c #1D557D", +"J'. c #25455B", +"K'. c #2A3947", +"L'. c #264658", +"M'. c #2A3944", +"N'. c #2C323E", +"O'. c #293C4B", +"P'. c #2A3844", +"Q'. c #2B3541", +"R'. c #2C343A", +"S'. c #293F3E", +"T'. c #293E40", +"U'. c #2B3140", +"V'. c #294534", +"W'. c #168A3B", +"X'. c #2C3136", +"Y'. c #2C3436", +"Z'. c #2B3836", +"`'. c #2C3536", +" ). c #284535", +".). c #274A35", +"+). c #245B33", +"@). c #255334", +"#). c #206A33", +"$). c #1E7632", +"%). c #226534", +"&). c #109B2C", +"*). c #15B73D", +"=). c #265233", +"-). c #08AD24", +";). c #2F2A36", +">). c #2E2D35", +",). c #2B2936", +"'). c #353934", +")). c #316E19", +"!). c #2B5F13", +"~). c #301834", +"{). c #31422E", +"]). c #2A891A", +"^). c #266826", +"/). c #2F2937", +"(). c #2D2C38", +"_). c #345D22", +":). c #20A227", +"<). c #00D752", +"[). c #19633F", +"}). c #312434", +"|). c #99999B", +"1). c #9FB2A3", +"2). c #21D543", +"3). c #5ACC6F", +"4). c #9E949E", +"5). c #0CCB51", +"6). c #08FF6B", +"7). c #10F964", +"8). c #00FF4B", +"9). c #1B8339", +"0). c #312035", +"a). c #2C3235", +"b). c #302A37", +"c). c #24392F", +"d). c #0BAA2F", +"e). c #07BA30", +"f). c #1C4C2C", +"g). c #312637", +"h). c #2F2F38", +"i). c #57575D", +"j). c #D0D0CF", +"k). c #71627A", +"l). c #4CB236", +"m). c #32FF00", +"n). c #33FC01", +"o). c #33FE01", +"p). c #2DFF00", +"q). c #4EF126", +"r). c #0E7B8A", +"s). c #127583", +"t). c #2E2C34", +"u). c #0887AB", +"v). c #194D5F", +"w). c #205E6D", +"x). c #19A3B5", +"y). c #14ABBF", +"z). c #125E77", +"A). c #2F2A31", +"B). c #2F2A32", +"C). c #13747E", +"D). c #25444D", +"E). c #2F2831", +"F). c #2F2A33", +"G). c #0F8178", +"H). c #187969", +"I). c #235C54", +"J). c #235D56", +"K). c #245852", +"L). c #1F6F61", +"M). c #1D7968", +"N). c #206B5F", +"O). c #21685D", +"P). c #1E716B", +"Q). c #1F6F68", +"R). c #1C7674", +"S). c #168B8F", +"T). c #224669", +"U). c #204076", +"V). c #107595", +"W). c #0F669C", +"X). c #185399", +"Y). c #17659C", +"Z). c #167DAB", +"`). c #168FB7", +" !. c #14C8D3", +".!. c #0CB2D7", +"+!. c #115793", +"@!. c #164E8A", +"#!. c #1C3386", +"$!. c #0E8CB9", +"%!. c #0C9BE2", +"&!. c #183290", +"*!. c #1A408D", +"=!. c #1F3873", +"-!. c #1242AF", +";!. c #1A3A89", +">!. c #1B3B88", +",!. c #194890", +"'!. c #1A4489", +")!. c #194590", +"!!. c #223B67", +"~!. c #213B6D", +"{!. c #1D487E", +"]!. c #194C8F", +"^!. c #21436C", +"/!. c #1A5289", +"(!. c #0C69C6", +"_!. c #1452A4", +":!. c #204F72", +"~. c #2EFF00", +",~. c #2FFC01", +"'~. c #2FFF00", +")~. c #30FE01", +"!~. c #29FF00", +"~~. c #4BF126", +"{~. c #413C4A", +"]~. c #2E3038", +"^~. c #312830", +"/~. c #1F515D", +"(~. c #098C9C", +"_~. c #234953", +":~. c #2E2F38", +"<~. c #312930", +"[~. c #0787AB", +"}~. c #1C4A5B", +"|~. c #31282F", +"1~. c #30272E", +"2~. c #321B22", +"3~. c #1F4558", +"4~. c #058DB0", +"5~. c #1E4A5B", +"6~. c #2F2B34", +"7~. c #13757C", +"8~. c #25464F", +"9~. c #2E2D36", +"0~. c #2E3037", +"a~. c #2D3639", +"b~. c #0E8677", +"c~. c #197766", +"d~. c #26564B", +"e~. c #25574F", +"f~. c #245A51", +"g~. c #22665C", +"h~. c #245D56", +"i~. c #236156", +"j~. c #284A4B", +"k~. c #245856", +"l~. c #274C4D", +"m~. c #235D5B", +"n~. c #245959", +"o~. c #264E52", +"p~. c #1E7175", +"q~. c #264759", +"r~. c #254F5A", +"s~. c #284251", +"t~. c #225965", +"u~. c #235764", +"v~. c #25495F", +"w~. c #1F5178", +"x~. c #174F99", +"y~. c #195E8F", +"z~. c #0F7E8D", +"A~. c #1B4D7F", +"B~. c #1264B1", +"C~. c #1D4081", +"D~. c #195291", +"E~. c #1C4583", +"F~. c #1969A2", +"G~. c #11D7E1", +"H~. c #11E5E8", +"I~. c #0A5AB4", +"J~. c #0864BE", +"K~. c #143BA3", +"L~. c #0A79DA", +"M~. c #0B8EFC", +"N~. c #143AA6", +"O~. c #1A3F8D", +"P~. c #143DA6", +"Q~. c #0F3EBC", +"R~. c #0F46BE", +"S~. c #1543A3", +"T~. c #173C99", +"U~. c #1C3C86", +"V~. c #1C3C83", +"W~. c #1E347C", +"X~. c #183F96", +"Y~. c #203F74", +"Z~. c #1A498F", +"`~. c #1C4E85", +" {. c #195B93", +".{. c #195391", +"+{. c #1559A3", +"@{. c #1B5489", +"#{. c #1B4F8A", +"${. c #1C5A82", +"%{. c #1C6184", +"&{. c #1A618C", +"*{. c #22466C", +"={. c #244D63", +"-{. c #25455E", +";{. c #25445C", +">{. c #254A5F", +",{. c #284150", +"'{. c #284050", +"){. c #25485E", +"!{. c #264859", +"~{. c #2C333C", +"{{. c #27474B", +"]{. c #255246", +"^{. c #294743", +"/{. c #243E46", +"({. c #3B5E32", +"_{. c #5AE515", +":{. c #1B6F3F", +"<{. c #2F2D35", +"[{. c #2B3B37", +"}{. c #284B36", +"|{. c #2B3E39", +"1{. c #2A3F36", +"2{. c #294535", +"3{. c #255536", +"4{. c #294736", +"5{. c #274F35", +"6{. c #245935", +"7{. c #284C37", +"8{. c #1A6F2C", +"9{. c #17892E", +"0{. c #294B38", +"a{. c #119429", +"b{. c #1C672D", +"c{. c #312438", +"d{. c #2E3036", +"e{. c #2F3036", +"f{. c #2C2838", +"g{. c #374A32", +"h{. c #74F300", +"i{. c #39F24B", +"j{. c #02FEC7", +"k{. c #05FF9B", +"l{. c #1BCD4F", +"m{. c #305722", +"n{. c #2E2A3A", +"o{. c #2E2A38", +"p{. c #37731E", +"q{. c #3D791C", +"r{. c #302B39", +"s{. c #2D2A33", +"t{. c #07B646", +"u{. c #06B64A", +"v{. c #2D2834", +"w{. c #2F2E37", +"x{. c #2E2F37", +"y{. c #808084", +"z{. c #C0C0BF", +"A{. c #B5B7B5", +"B{. c #BCB7BB", +"C{. c #25D947", +"D{. c #4BC262", +"E{. c #422B44", +"F{. c #0EAB3C", +"G{. c #01ED38", +"H{. c #04EF3D", +"I{. c #1A6D32", +"J{. c #312337", +"K{. c #2D3137", +"L{. c #2D3136", +"M{. c #312638", +"N{. c #1C542D", +"O{. c #07C031", +"P{. c #0BA42F", +"Q{. c #56565C", +"R{. c #D1D5D0", +"S{. c #6C5C75", +"T{. c #49B336", +"U{. c #2AFF00", +"V{. c #2BFC01", +"W{. c #2BFF00", +"X{. c #2CFE01", +"Y{. c #25FF00", +"Z{. c #48F126", +"`{. c #2F2E35", +" ]. c #0D7E8D", +".]. c #137481", +"+]. c #312A30", +"@]. c #204250", +"#]. c #0985A8", +"$]. c #204757", +"%]. c #2F2E36", +"&]. c #2E3139", +"*]. c #2E333B", +"=]. c #16667E", +"-]. c #0883A3", +";]. c #293640", +">]. c #322830", +",]. c #12777B", +"']. c #25474E", +")]. c #312932", +"!]. c #2E3238", +"~]. c #2D353A", +"{]. c #284E45", +"]]. c #0F8775", +"^]. c #158B6E", +"/]. c #217057", +"(]. c #226756", +"_]. c #294945", +":]. c #245C51", +"<]. c #206E5D", +"[]. c #26534C", +"}]. c #236457", +"|]. c #22635C", +"1]. c #22665A", +"2]. c #265251", +"3]. c #294749", +"4]. c #26504F", +"5]. c #2A4446", +"6]. c #244E60", +"7]. c #215F6B", +"8]. c #264E59", +"9]. c #235463", +"0]. c #245263", +"a]. c #1F5978", +"b]. c #22406D", +"c]. c #17609A", +"d]. c #204C7A", +"e]. c #136E96", +"f]. c #14617A", +"g]. c #1D3C7F", +"h]. c #1A4E8D", +"i]. c #184596", +"j]. c #1249AE", +"k]. c #1A418F", +"l]. c #1254AC", +"m]. c #10EDEE", +"n]. c #12F2EC", +"o]. c #007BD8", +"p]. c #05CEF6", +"q]. c #0E75D7", +"r]. c #0E41BF", +"s]. c #0E4BC9", +"t]. c #0D3DC3", +"u]. c #0E43C3", +"v]. c #0B3FCE", +"w]. c #0645E5", +"x]. c #0C43CA", +"y]. c #0C43CB", +"z]. c #163FA0", +"A]. c #0F47BC", +"B]. c #0A4AD0", +"C]. c #1149B4", +"D]. c #1C3586", +"E]. c #184197", +"F]. c #213D72", +"G]. c #1C3F85", +"H]. c #185298", +"I]. c #175999", +"J]. c #1F507A", +"K]. c #166B9F", +"L]. c #1A5B8E", +"M]. c #1E4C7E", +"N]. c #1E5B7F", +"O]. c #1F5677", +"P]. c #1A658F", +"Q]. c #1B6288", +"R]. c #215471", +"S]. c #22526A", +"T]. c #264459", +"U]. c #234F68", +"V]. c #274857", +"W]. c #284454", +"X]. c #2A3E4B", +"Y]. c #293F4C", +"Z]. c #254F50", +"`]. c #27474F", +" ^. c #264F46", +".^. c #294143", +"+^. c #2C4342", +"@^. c #459821", +"#^. c #1B8843", +"$^. c #2D2E38", +"%^. c #2D3736", +"&^. c #284B37", +"*^. c #25553C", +"=^. c #294538", +"-^. c #284D35", +";^. c #265536", +">^. c #265336", +",^. c #236036", +"'^. c #255735", +")^. c #275237", +"!^. c #14942E", +"~^. c #18812E", +"{^. c #2F343A", +"]^. c #187F2C", +"^^. c #167C2A", +"/^. c #322338", +"(^. c #2E3136", +"_^. c #2F3136", +":^. c #2C253C", +"<^. c #3C7119", +"[^. c #33CE35", +"}^. c #00F487", +"|^. c #00E177", +"1^. c #48E13D", +"2^. c #44492A", +"3^. c #2A293A", +"4^. c #32472E", +"5^. c #418D13", +"6^. c #364630", +"7^. c #312B36", +"8^. c #283A35", +"9^. c #00D24C", +"0^. c #108E42", +"a^. c #322134", +"b^. c #2E3137", +"c^. c #313139", +"d^. c #C1C1C0", +"e^. c #5CC06F", +"f^. c #23DF46", +"g^. c #304C3C", +"h^. c #2E2835", +"i^. c #169E3A", +"j^. c #12A036", +"k^. c #0BB333", +"l^. c #08B12E", +"m^. c #22452F", +"n^. c #312938", +"o^. c #312537", +"p^. c #0BB433", +"q^. c #303039", +"r^. c #262630", +"s^. c #D1D4CF", +"t^. c #47B336", +"u^. c #26FF00", +"v^. c #28FC01", +"w^. c #27FF00", +"x^. c #28FE01", +"y^. c #21FF00", +"z^. c #45F126", +"A^. c #413C4B", +"B^. c #2E3039", +"C^. c #312931", +"D^. c #1C5763", +"E^. c #098C9D", +"F^. c #244751", +"G^. c #312A31", +"H^. c #204150", +"I^. c #0881A3", +"J^. c #0885A8", +"K^. c #204656", +"L^. c #0C7E9D", +"M^. c #116B85", +"N^. c #2E2D34", +"O^. c #0E8485", +"P^. c #26464D", +"Q^. c #302933", +"R^. c #2B3C3F", +"S^. c #294541", +"T^. c #2B4342", +"U^. c #0B987C", +"V^. c #139572", +"W^. c #255C4E", +"X^. c #245D50", +"Y^. c #226354", +"Z^. c #1D7C62", +"`^. c #236354", +" /. c #26534B", +"./. c #1E7665", +"+/. c #1C7E66", +"@/. c #1E7767", +"#/. c #216765", +"$/. c #294546", +"%/. c #26524F", +"&/. c #235A5F", +"*/. c #22576B", +"=/. c #26505A", +"-/. c #21606D", +";/. c #22556E", +">/. c #264259", +",/. c #214871", +"'/. c #1A538C", +")/. c #1F4F7B", +"!/. c #1B588B", +"~/. c #07BBC4", +"{/. c #0EA9CA", +"]/. c #1B488C", +"^/. c #1657A0", +"//. c #0E53C1", +"(/. c #1048B9", +"_/. c #0A40D1", +":/. c #0E70D5", +"(. c #25252F", +",(. c #65656A", +"'(. c #B6B7B6", +")(. c #BDB8BC", +"!(. c #2ADD4B", +"~(. c #1D9236", +"{(. c #2F2337", +"](. c #312437", +"^(. c #332038", +"/(. c #204B2F", +"((. c #08BC31", +"_(. c #0BA32E", +":(. c #283633", +"<(. c #19632E", +"[(. c #D0D4CF", +"}(. c #45B337", +"|(. c #22FF00", +"1(. c #24FC01", +"2(. c #23FF00", +"3(. c #25FE01", +"4(. c #1DFF00", +"5(. c #42F126", +"6(. c #423D4B", +"7(. c #2F3038", +"8(. c #302E36", +"9(. c #2C343D", +"0(. c #0C8190", +"a(. c #166E7B", +"b(. c #312B33", +"c(. c #2F3139", +"d(. c #322B31", +"e(. c #214150", +"f(. c #214555", +"g(. c #322A31", +"h(. c #2E323A", +"i(. c #2F323A", +"j(. c #2F313A", +"k(. c #312B32", +"l(. c #264250", +"m(. c #0789AC", +"n(. c #1B5667", +"o(. c #127C78", +"p(. c #293F45", +"q(. c #312B34", +"r(. c #2C3D3E", +"s(. c #285045", +"t(. c #294C45", +"u(. c #236453", +"v(. c #0D9372", +"w(. c #206355", +"x(. c #28534A", +"y(. c #284E49", +"z(. c #1E7A5E", +"A(. c #226854", +"B(. c #255E4E", +"C(. c #255D51", +"D(. c #26594F", +"E(. c #246254", +"F(. c #2D3741", +"G(. c #2B4142", +"H(. c #265256", +"I(. c #255958", +"J(. c #2A454C", +"K(. c #2A404E", +"L(. c #2B3F47", +"M(. c #294A50", +"N(. c #24565F", +"O(. c #22606E", +"P(. c #244F64", +"Q(. c #176C9E", +"R(. c #1A5991", +"S(. c #1C4D87", +"T(. c #0CBEDB", +"U(. c #11B9CC", +"V(. c #1A428C", +"W(. c #155DA5", +"X(. c #0E4EC1", +"Y(. c #114CB5", +"Z(. c #0C58CC", +"`(. c #0C45C9", +" _. c #10D8EB", +"._. c #0766EE", +"+_. c #0B4EDC", +"@_. c #013BF1", +"#_. c #0541E8", +"$_. c #0444EC", +"%_. c #0242F6", +"&_. c #0442EC", +"*_. c #063FE2", +"=_. c #0343EF", +"-_. c #0A42D4", +";_. c #0646E3", +">_. c #093CD6", +",_. c #063DE5", +"'_. c #0846D9", +")_. c #0447EB", +"!_. c #0B46D0", +"~_. c #0D43C5", +"{_. c #0F3DBF", +"]_. c #1547A6", +"^_. c #104FB9", +"/_. c #1654A2", +"(_. c #185897", +"__. c #1D4D82", +":_. c #186298", +"<_. c #196994", +"[_. c #156CA4", +"}_. c #1E5B81", +"|_. c #264460", +"1_. c #225670", +"2_. c #1279AF", +"3_. c #1B678A", +"4_. c #205D78", +"5_. c #215872", +"6_. c #244E66", +"7_. c #274A5C", +"8_. c #235069", +"9_. c #284856", +"0_. c #284B4A", +"a_. c #2A3E40", +"b_. c #1A9581", +"c_. c #0FCE93", +"d_. c #2A413E", +"e_. c #245448", +"f_. c #2F4F3D", +"g_. c #219A34", +"h_. c #21593D", +"i_. c #265B37", +"j_. c #2F3137", +"k_. c #284F38", +"l_. c #246138", +"m_. c #246139", +"n_. c #275337", +"o_. c #294D38", +"p_. c #226A36", +"q_. c #265A38", +"r_. c #1A8030", +"s_. c #18802D", +"t_. c #303239", +"u_. c #294734", +"v_. c #0F9A27", +"w_. c #312739", +"x_. c #26622D", +"y_. c #13872C", +"z_. c #2E4F2D", +"A_. c #4B9409", +"B_. c #1DA246", +"C_. c #0C9150", +"D_. c #322B34", +"E_. c #385629", +"F_. c #498B13", +"G_. c #353D34", +"H_. c #2E2C38", +"I_. c #303037", +"J_. c #2F3238", +"K_. c #332235", +"L_. c #16793F", +"M_. c #00DD4F", +"N_. c #244A38", +"O_. c #322737", +"P_. c #5A5A5F", +"Q_. c #B6B8B6", +"R_. c #C0B4BE", +"S_. c #62C274", +"T_. c #0BC72F", +"U_. c #312D39", +"V_. c #2E3437", +"W_. c #322738", +"X_. c #1A622E", +"Y_. c #07C632", +"Z_. c #0F902E", +"`_. c #302F38", +" :. c #2F3037", +".:. c #2F2D37", +"+:. c #31313A", +"@:. c #56565D", +"#:. c #CDCDCC", +"$:. c #CFD3CE", +"%:. c #6D5C75", +"&:. c #44B337", +"*:. c #1EFF00", +"=:. c #20FC01", +"-:. c #20FF00", +";:. c #21FE01", +">:. c #19FF00", +",:. c #3FF126", +"':. c #433D4B", +"):. c #322931", +"!:. c #1D5965", +"~:. c #0A8A9A", +"{:. c #27424C", +"]:. c #322B32", +"^:. c #0A81A3", +"/:. c #0A84A7", +"(:. c #214554", +"_:. c #34252C", +"::. c #32232C", +"<:. c #32262E", +"[:. c #32292F", +"}:. c #1C5A6F", +"|:. c #078BA9", +"1:. c #0E8481", +"2:. c #2E363D", +"3:. c #312835", +"4:. c #294E43", +"5:. c #2A4842", +"6:. c #285246", +"7:. c #22664E", +"8:. c #09AB87", +"9:. c #216755", +"0:. c #255F4C", +"a:. c #26594A", +"b:. c #255C4A", +"c:. c #226953", +"d:. c #207256", +"e:. c #216E58", +"f:. c #294C44", +"g:. c #294A4A", +"h:. c #294C4B", +"i:. c #284E4E", +"j:. c #2A4747", +"k:. c #255956", +"l:. c #206B6B", +"m:. c #2B3C4B", +"n:. c #26545B", +"o:. c #235D67", +"p:. c #255161", +"q:. c #215F73", +"r:. c #225D6E", +"s:. c #1E5982", +"t:. c #1C5289", +"u:. c #1C5A89", +"v:. c #16B4C7", +"w:. c #12EFE9", +"x:. c #11D5DC", +"y:. c #1087BF", +"z:. c #1152BC", +"A:. c #0A48D3", +"B:. c #0940D5", +"C:. c #074ADF", +"D:. c #0662F1", +"E:. c #0BB5F2", +"F:. c #023CF3", +"G:. c #0B3BCE", +"H:. c #093FDA", +"I:. c #0042FE", +"J:. c #013FF9", +"K:. c #053FE7", +"L:. c #0243F4", +"M:. c #0143F7", +"N:. c #0340EF", +"O:. c #0541EA", +"P:. c #0341EE", +"Q:. c #0647E4", +"R:. c #0642E6", +"S:. c #0A40D4", +"T:. c #0C3FCB", +"U:. c #034AF1", +"V:. c #0B42CE", +"W:. c #114AB5", +"X:. c #1646A2", +"Y:. c #194C96", +"Z:. c #204E79", +"`:. c #1A5A91", +" <. c #196694", +".<. c #1F4B7B", +"+<. c #1B568D", +"@<. c #1C6389", +"#<. c #1579A4", +"$<. c #1673A3", +"%<. c #27425B", +"&<. c #1F5A7C", +"*<. c #215773", +"=<. c #215B75", +"-<. c #284457", +";<. c #284A50", +"><. c #2C3B3E", +",<. c #2C3C45", +"'<. c #1F6A5C", +")<. c #119F59", +"!<. c #2A454B", +"~<. c #264E53", +"{<. c #2C493B", +"]<. c #249634", +"^<. c #1E6941", +"/<. c #2C4234", +"(<. c #2B4438", +"_<. c #2D3A38", +":<. c #2A4838", +"<<. c #1F7739", +"[<. c #255B38", +"}<. c #226938", +"|<. c #255C37", +"1<. c #245F38", +"2<. c #28543A", +"3<. c #1F6D33", +"4<. c #12962B", +"5<. c #285139", +"6<. c #2A4837", +"7<. c #109727", +"8<. c #2A3F35", +"9<. c #312C39", +"0<. c #302E38", +"a<. c #303339", +"b<. c #178624", +"c<. c #28752C", +"d<. c #336D21", +"e<. c #3C8119", +"f<. c #3B542F", +"g<. c #0BA052", +"h<. c #1A7947", +"i<. c #332934", +"j<. c #488715", +"k<. c #436325", +"l<. c #2E2A3B", +"m<. c #303137", +"n<. c #303138", +"o<. c #302636", +"p<. c #0AA246", +"q<. c #04C94A", +"r<. c #312C38", +"s<. c #2F3138", +"t<. c #B6B7B7", +"u<. c #BBB7BA", +"v<. c #ACB7AE", +"w<. c #1DCA3E", +"x<. c #0F8B29", +"y<. c #302937", +"z<. c #14792D", +"A<. c #07CA32", +"B<. c #147A2E", +"C<. c #302837", +"D<. c #2F2F39", +"E<. c #272731", +"F<. c #42B337", +"G<. c #1AFF00", +"H<. c #1DFC01", +"I<. c #1CFF00", +"J<. c #1DFE01", +"K<. c #15FF00", +"L<. c #3CF126", +"M<. c #433D4C", +"N<. c #2F3039", +"O<. c #302E37", +"P<. c #2D353E", +"Q<. c #0C8291", +"R<. c #322B33", +"S<. c #0981A4", +"T<. c #0B7FA3", +"U<. c #127F8D", +"V<. c #0FBDC0", +"W<. c #23616C", +"X<. c #302C35", +"Y<. c #11738D", +"Z<. c #059A9B", +"`<. c #2C393D", +" [. c #2D3C3D", +".[. c #2B4340", +"+[. c #275648", +"@[. c #29473C", +"#[. c #1AA0A1", +"$[. c #00FFED", +"%[. c #0EB992", +"&[. c #2A4A40", +"*[. c #255E4B", +"=[. c #226952", +"-[. c #1E7C5A", +";[. c #216D51", +">[. c #236654", +",[. c #294C46", +"'[. c #2A4843", +")[. c #284D4C", +"![. c #27504F", +"~[. c #26515B", +"{[. c #2C4146", +"][. c #1E8F8E", +"^[. c #20868A", +"/[. c #1F6B79", +"([. c #1F6D7A", +"_[. c #216474", +":[. c #215A74", +"<[. c #1C819B", +"[[. c #1B89A3", +"}[. c #1E5A80", +"|[. c #195794", +"1[. c #13E4E3", +"2[. c #0FBFE6", +"3[. c #076DE8", +"4[. c #054FEB", +"5[. c #0968E3", +"6[. c #0DC1F0", +"7[. c #075BE8", +"8[. c #0144F8", +"9[. c #0244F6", +"0[. c #003CFB", +"a[. c #0140F9", +"b[. c #013EF8", +"c[. c #043EED", +"d[. c #043FED", +"e[. c #033FF0", +"f[. c #0040FF", +"g[. c #0040FD", +"h[. c #013BF8", +"i[. c #0248F6", +"j[. c #023EF5", +"k[. c #033DF1", +"l[. c #0744DF", +"m[. c #0742E0", +"n[. c #0A3ED2", +"o[. c #0942D6", +"p[. c #0E49C2", +"q[. c #1247B1", +"r[. c #1054BC", +"s[. c #1A5191", +"t[. c #1457AA", +"u[. c #196596", +"v[. c #1C5189", +"w[. c #17609E", +"x[. c #18649A", +"y[. c #196394", +"z[. c #1E5F82", +"A[. c #1E5A81", +"B[. c #264761", +"C[. c #234E6B", +"D[. c #23576D", +"E[. c #284759", +"F[. c #2C3B49", +"G[. c #2B4145", +"H[. c #2B3D49", +"I[. c #2C3A48", +"J[. c #2D363A", +"K[. c #108B4C", +"L[. c #265254", +"M[. c #294544", +"N[. c #2D6F2F", +"O[. c #198240", +"P[. c #294848", +"Q[. c #284D3C", +"R[. c #2D3C37", +"S[. c #245F39", +"T[. c #20723A", +"U[. c #284E39", +"V[. c #1E793A", +"W[. c #236639", +"X[. c #294C39", +"Y[. c #265838", +"Z[. c #27583A", +"`[. c #235E35", +" }. c #177D2B", +".}. c #2A473A", +"+}. c #302E3A", +"@}. c #138D29", +"#}. c #255032", +"$}. c #32283A", +"%}. c #312B3A", +"&}. c #245B2D", +"*}. c #198C1C", +"=}. c #368D1D", +"-}. c #3B6F22", +";}. c #3D5230", +">}. c #263D3C", +",}. c #06B058", +"'}. c #2F822E", +")}. c #537D12", +"!}. c #323738", +"~}. c #2F2D39", +"{}. c #302F39", +"]}. c #312D38", +"^}. c #2A3639", +"/}. c #01C54C", +"(}. c #0CAA45", +"_}. c #43434B", +":}. c #B5B8B5", +"<}. c #C4B8C2", +"[}. c #57AF69", +"}}. c #00BB22", +"|}. c #32293A", +"1}. c #10902E", +"2}. c #07C732", +"3}. c #1B632F", +"4}. c #322739", +"5}. c #32323A", +"6}. c #282831", +"7}. c #CED2CD", +"8}. c #40B337", +"9}. c #16FF00", +"0}. c #19FC01", +"a}. c #18FF00", +"b}. c #1AFE01", +"c}. c #11FF00", +"d}. c #39F126", +"e}. c #443E4C", +"f}. c #30323A", +"g}. c #332A32", +"h}. c #1D5B67", +"i}. c #2A3F49", +"j}. c #322D34", +"k}. c #303139", +"l}. c #332C33", +"m}. c #223F4D", +"n}. c #0496B7", +"o}. c #00C5E4", +"p}. c #04E7F1", +"q}. c #00EFFF", +"r}. c #215E72", +"s}. c #33272E", +"t}. c #30323B", +"u}. c #332A33", +"v}. c #28434A", +"w}. c #01A3A2", +"x}. c #18666E", +"y}. c #275B43", +"z}. c #285245", +"A}. c #265D49", +"B}. c #295244", +"C}. c #0CC0B2", +"D}. c #01DDBE", +"E}. c #14E1C8", +"F}. c #295144", +"G}. c #255D4B", +"H}. c #265C4B", +"I}. c #2B4840", +"J}. c #2A4A44", +"K}. c #2A4946", +"L}. c #245F5C", +"M}. c #2B4544", +"N}. c #265654", +"O}. c #1C7188", +"P}. c #1D6588", +"Q}. c #1463A9", +"R}. c #196DA0", +"S}. c #13B7D2", +"T}. c #12E0E7", +"U}. c #12F1EC", +"V}. c #11E3ED", +"W}. c #0DCBEC", +"X}. c #0A8EEB", +"Y}. c #0346F2", +"Z}. c #033FF1", +"`}. c #0140F7", +" |. c #0639E5", +".|. c #0339EF", +"+|. c #0244F5", +"@|. c #023DF6", +"#|. c #023AF3", +"$|. c #013AF6", +"%|. c #013DF8", +"&|. c #053CE9", +"*|. c #023CF6", +"=|. c #023FF3", +"-|. c #024BF4", +";|. c #0548E9", +">|. c #064EE4", +",|. c #0C41CC", +"'|. c #0840DC", +")|. c #0B4BD0", +"!|. c #0E52C2", +"~|. c #17579F", +"{|. c #1154B7", +"]|. c #1658A5", +"^|. c #0E6AC2", +"/|. c #1E5D85", +"(|. c #23526E", +"_|. c #24446B", +":|. c #1C6D89", +"<|. c #1C658A", +"[|. c #1C6289", +"}|. c #24566A", +"||. c #225E73", +"1|. c #2D3848", +"2|. c #25565F", +"3|. c #25585B", +"4|. c #2E3A44", +"5|. c #294353", +"6|. c #2F4F42", +"7|. c #1CBF35", +"8|. c #1F654B", +"9|. c #2F3546", +"0|. c #302A3E", +"a|. c #2F6131", +"b|. c #169544", +"c|. c #255444", +"d|. c #28543C", +"e|. c #2B4838", +"f|. c #285438", +"g|. c #2C4438", +"h|. c #226C3A", +"i|. c #265D3A", +"j|. c #255E39", +"k|. c #265C3A", +"l|. c #226E3A", +"m|. c #246439", +"n|. c #226A39", +"o|. c #109D2C", +"p|. c #2D3F38", +"q|. c #351F3A", +"r|. c #1A7B2D", +"s|. c #34263A", +"t|. c #303338", +"u|. c #30253C", +"v|. c #2E3F35", +"w|. c #1C7B1E", +"x|. c #27791F", +"y|. c #388D1C", +"z|. c #323139", +"A|. c #3A7221", +"B|. c #3B5B32", +"C|. c #311E38", +"D|. c #206740", +"E|. c #13D048", +"F|. c #375730", +"G|. c #30283A", +"H|. c #2F3339", +"I|. c #332937", +"J|. c #205540", +"K|. c #00DA50", +"L|. c #14893F", +"M|. c #332637", +"N|. c #393940", +"O|. c #C2BFC1", +"P|. c #86918A", +"Q|. c #02AF25", +"R|. c #15922F", +"S|. c #322D3A", +"T|. c #293933", +"U|. c #0CA62F", +"V|. c #09BF32", +"W|. c #214F30", +"X|. c #33293A", +"Y|. c #32323B", +"Z|. c #CDD1CC", +"`|. c #3FB437", +" 1. c #13FF00", +".1. c #16FC01", +"+1. c #17FE01", +"@1. c #0EFF00", +"#1. c #37F126", +"$1. c #443E4D", +"%1. c #30313A", +"&1. c #312F37", +"*1. c #2D3740", +"=1. c #0C8493", +"-1. c #1A6673", +";1. c #332B34", +">1. c #32333A", +",1. c #0AB0BA", +"'1. c #07C1D7", +")1. c #07C3E2", +"!1. c #00E5FF", +"~1. c #16A5B2", +"{1. c #33282D", +"]1. c #2F373E", +"^1. c #31323A", +"/1. c #2C3E40", +"(1. c #08978B", +"_1. c #0889A7", +":1. c #1D6D5E", +"<1. c #21774E", +"[1. c #255F4B", +"}1. c #217353", +"|1. c #088366", +"11. c #0FBA99", +"21. c #24967F", +"31. c #216A4C", +"41. c #23694E", +"51. c #285547", +"61. c #236B51", +"71. c #27594A", +"81. c #2A4948", +"91. c #2B4945", +"01. c #294F4D", +"a1. c #27564D", +"b1. c #2E393D", +"c1. c #285151", +"d1. c #246157", +"e1. c #255C5C", +"f1. c #2A474C", +"g1. c #265A5C", +"h1. c #216C69", +"i1. c #23636A", +"j1. c #255864", +"k1. c #205D7A", +"l1. c #1D6986", +"m1. c #215A77", +"n1. c #1E5B84", +"o1. c #17689E", +"p1. c #1767A0", +"q1. c #18709B", +"r1. c #1D5C89", +"s1. c #18649D", +"t1. c #18599D", +"u1. c #185A9C", +"v1. c #0766E0", +"w1. c #0B55D2", +"x1. c #0A4AD6", +"y1. c #056FCA", +"z1. c #0555DD", +"A1. c #0358D3", +"B1. c #073DDF", +"C1. c #0242F4", +"D1. c #023BF3", +"E1. c #053BE7", +"F1. c #033EF0", +"G1. c #043CEE", +"H1. c #043AED", +"I1. c #0239F6", +"J1. c #013DF7", +"K1. c #023AF6", +"L1. c #0138F7", +"M1. c #0239F5", +"N1. c #0133FA", +"O1. c #043EEC", +"P1. c #033DF0", +"Q1. c #0047FF", +"R1. c #0143F8", +"S1. c #0344EF", +"T1. c #0448ED", +"U1. c #0549E9", +"V1. c #0946D8", +"W1. c #093FD9", +"X1. c #094BD7", +"Y1. c #0F50C0", +"Z1. c #1059BD", +"`1. c #0C51CD", +" 2. c #115EB8", +".2. c #155DA9", +"+2. c #1F517F", +"@2. c #186C9D", +"#2. c #196697", +"$2. c #1A6B93", +"%2. c #1F5D80", +"&2. c #1B6391", +"*2. c #1E6384", +"=2. c #1F5E81", +"-2. c #2A4357", +";2. c #206A75", +">2. c #255A61", +",2. c #2A4955", +"'2. c #274B5D", +")2. c #2E5E41", +"!2. c #2ED822", +"~2. c #1B7852", +"{2. c #294D4F", +"]2. c #284C44", +"^2. c #2A6637", +"/2. c #1A973F", +"(2. c #1B734B", +"_2. c #2C4638", +":2. c #2A4B3B", +"<2. c #2C4439", +"[2. c #24663C", +"}2. c #179C3F", +"|2. c #28523B", +"12. c #265E3B", +"22. c #1B8A3C", +"32. c #24663B", +"42. c #207139", +"52. c #138D2A", +"62. c #34263B", +"72. c #206530", +"82. c #1A762C", +"92. c #34243B", +"02. c #313039", +"a2. c #313239", +"b2. c #2F293B", +"c2. c #375331", +"d2. c #247D19", +"e2. c #245A28", +"f2. c #31771F", +"g2. c #347528", +"h2. c #30233E", +"i2. c #386F24", +"j2. c #3B5933", +"k2. c #2C263E", +"l2. c #49611D", +"m2. c #28AE37", +"n2. c #0C9954", +"o2. c #312D37", +"p2. c #31303A", +"q2. c #332838", +"r2. c #137C47", +"s2. c #00DC4E", +"t2. c #1D6B3B", +"u2. c #332638", +"v2. c #30333A", +"w2. c #B8B9B8", +"x2. c #C0C3C0", +"y2. c #928593", +"z2. c #156D2B", +"A2. c #08C72D", +"B2. c #264C34", +"C2. c #332A3A", +"D2. c #332B3B", +"E2. c #234831", +"F2. c #09B830", +"G2. c #0BB131", +"H2. c #283E34", +"I2. c #332C3B", +"J2. c #C2C2C3", +"K2. c #3DB438", +"L2. c #0FFF00", +"M2. c #12FC01", +"N2. c #13FE01", +"O2. c #0AFF00", +"P2. c #34F126", +"Q2. c #332B33", +"R2. c #19616E", +"S2. c #0B8797", +"T2. c #2B3D47", +"U2. c #322D36", +"V2. c #312D36", +"W2. c #0AD5D6", +"X2. c #00F1F9", +"Y2. c #00D7EF", +"Z2. c #0EFFFF", +"`2. c #2C9B9F", +" 3. c #31232C", +".3. c #30353D", +"+3. c #30343B", +"@3. c #2A4346", +"#3. c #108871", +"$3. c #127588", +"%3. c #0A879C", +"&3. c #255D42", +"*3. c #285D40", +"=3. c #10786A", +"-3. c #0F7C6C", +";3. c #295542", +">3. c #26563F", +",3. c #2C4341", +"'3. c #24634C", +")3. c #265C48", +"!3. c #295043", +"~3. c #27554C", +"{3. c #275549", +"]3. c #2C433E", +"^3. c #275751", +"/3. c #2D3E3D", +"(3. c #28504E", +"_3. c #265A53", +":3. c #24605A", +"<3. c #27565A", +"[3. c #2B444A", +"}3. c #265958", +"|3. c #285157", +"13. c #2A4951", +"23. c #2B3D4F", +"33. c #225A74", +"43. c #255664", +"53. c #1D6689", +"63. c #1F5D7F", +"73. c #1B6590", +"83. c #1D5B86", +"93. c #156CA8", +"03. c #1278B3", +"a3. c #1A5E93", +"b3. c #1362AF", +"c3. c #0A6FD6", +"d3. c #0F48C0", +"e3. c #0B57D1", +"f3. c #094DDB", +"g3. c #054CE0", +"h3. c #0285D0", +"i3. c #03B0E8", +"j3. c #034CF4", +"k3. c #043BEC", +"l3. c #063BE6", +"m3. c #0137F7", +"n3. c #0235F4", +"o3. c #0139FA", +"p3. c #0238F4", +"q3. c #013FFA", +"r3. c #0235F5", +"s3. c #0136FA", +"t3. c #0034FD", +"u3. c #0039FD", +"v3. c #0139F7", +"w3. c #0232F6", +"x3. c #043BEE", +"y3. c #023EF4", +"z3. c #0040FB", +"A3. c #0043FD", +"B3. c #0242F5", +"C3. c #014BF7", +"D3. c #0648E3", +"E3. c #084CDB", +"F3. c #0C46CC", +"G3. c #0D58C9", +"H3. c #0C53CB", +"I3. c #1256B3", +"J3. c #18519B", +"K3. c #1268B2", +"L3. c #1171B7", +"M3. c #1E5682", +"N3. c #186C9B", +"O3. c #1C5C8C", +"P3. c #186F9A", +"Q3. c #235B6F", +"R3. c #215976", +"S3. c #225573", +"T3. c #225B6F", +"U3. c #264F5E", +"V3. c #255B5D", +"W3. c #236064", +"X3. c #2A4750", +"Y3. c #294551", +"Z3. c #236937", +"`3. c #149252", +" 4. c #2A4252", +".4. c #2C4246", +"+4. c #2D4433", +"@4. c #12CE6E", +"#4. c #0BE27C", +"$4. c #2B4C3F", +"%4. c #265941", +"&4. c #275940", +"*4. c #25623D", +"=4. c #21733D", +"-4. c #236A3B", +";4. c #216F3C", +">4. c #226C3C", +",4. c #25613B", +"'4. c #29523B", +")4. c #0EBA36", +"!4. c #226B38", +"~4. c #274D34", +"{4. c #13912C", +"]4. c #33263B", +"^4. c #313339", +"/4. c #2E273C", +"(4. c #3A5F2D", +"_4. c #54F005", +":4. c #2ABF04", +"<4. c #397424", +"[4. c #328716", +"}4. c #30692D", +"|4. c #30243D", +"14. c #366229", +"24. c #385536", +"34. c #373E33", +"44. c #5D8E0E", +"54. c #414D2B", +"64. c #0B9F53", +"74. c #178349", +"84. c #2E323B", +"94. c #09A14E", +"04. c #01D049", +"a4. c #24523A", +"b4. c #332839", +"c4. c #979799", +"d4. c #BEBFBD", +"e4. c #A19EA2", +"f4. c #2B3736", +"g4. c #0BB72D", +"h4. c #13922E", +"i4. c #322A39", +"j4. c #1D5B30", +"k4. c #08C332", +"l4. c #0E9F30", +"m4. c #2D3337", +"n4. c #322E3A", +"o4. c #33333C", +"p4. c #CACAC9", +"q4. c #6E5C75", +"r4. c #3CB438", +"s4. c #0CFF00", +"t4. c #10FC02", +"u4. c #0FFF01", +"v4. c #11FE03", +"w4. c #08FF00", +"x4. c #32F127", +"y4. c #453F4D", +"z4. c #31323B", +"A4. c #332F37", +"B4. c #2C3B45", +"C4. c #0B8696", +"D4. c #1A6471", +"E4. c #332C34", +"F4. c #31333C", +"G4. c #342831", +"H4. c #236B74", +"I4. c #00E1FA", +"J4. c #0DEEFF", +"K4. c #21EAF1", +"L4. c #246371", +"M4. c #332931", +"N4. c #31323C", +"O4. c #2F3C3E", +"P4. c #31333A", +"Q4. c #2B4245", +"R4. c #108F6F", +"S4. c #2B4441", +"T4. c #0B7F98", +"U4. c #13798D", +"V4. c #178483", +"W4. c #078476", +"X4. c #1D805B", +"Y4. c #2C4A40", +"Z4. c #2C4842", +"`4. c #236C4B", +" 5. c #2B4B42", +".5. c #266248", +"+5. c #266148", +"@5. c #2A4D46", +"#5. c #2D4342", +"$5. c #2D4443", +"%5. c #2A4E47", +"&5. c #2F3B3D", +"*5. c #2E3F43", +"=5. c #2C4749", +"-5. c #236A63", +";5. c #236860", +">5. c #265A5A", +",5. c #265D5C", +"'5. c #2A4957", +")5. c #2A4959", +"!5. c #225378", +"~5. c #25466C", +"{5. c #1D628A", +"]5. c #1F5B80", +"^5. c #1F5F80", +"/5. c #205B7D", +"(5. c #196A9D", +"_5. c #1766A2", +":5. c #1567A9", +"<5. c #1D578A", +"[5. c #1752A3", +"}5. c #0E5AC4", +"|5. c #1251B7", +"15. c #0264F5", +"25. c #0350F0", +"35. c #03A7E7", +"45. c #09E5FB", +"55. c #0548F2", +"65. c #0237F4", +"75. c #023FF7", +"85. c #0235F6", +"95. c #003AFF", +"05. c #0038FE", +"a5. c #0334F0", +"b5. c #0437ED", +"c5. c #0232F4", +"d5. c #0333F2", +"e5. c #0037FD", +"f5. c #0438EB", +"g5. c #032EF1", +"h5. c #0136F9", +"i5. c #0437EE", +"j5. c #0634E4", +"k5. c #0233F5", +"l5. c #013AF8", +"m5. c #0240F7", +"n5. c #0345F1", +"o5. c #0444ED", +"p5. c #0846DE", +"q5. c #0A4ED7", +"r5. c #0C47CB", +"s5. c #0B4DD0", +"t5. c #0E56C5", +"u5. c #1160BA", +"v5. c #0C69CF", +"w5. c #1670A4", +"x5. c #1270B7", +"y5. c #166BA7", +"z5. c #1D5A8A", +"A5. c #225577", +"B5. c #196D9A", +"C5. c #1B6A91", +"D5. c #20607D", +"E5. c #235F70", +"F5. c #1C7181", +"G5. c #284B5C", +"H5. c #29504B", +"I5. c #1E867F", +"J5. c #265E5F", +"K5. c #2B513B", +"L5. c #149848", +"M5. c #275048", +"N5. c #275A42", +"O5. c #18A951", +"P5. c #12B25E", +"Q5. c #28603D", +"R5. c #275A3D", +"S5. c #1F7E40", +"T5. c #24663D", +"U5. c #2B4D3B", +"V5. c #1A8F3F", +"W5. c #246A3C", +"X5. c #1E813F", +"Y5. c #236C3D", +"Z5. c #28593C", +"`5. c #21733E", +" 6. c #04FA38", +".6. c #1C9939", +"+6. c #37193A", +"@6. c #236F3C", +"#6. c #05FF3C", +"$6. c #285E39", +"%6. c #33283A", +"&6. c #323439", +"*6. c #30263D", +"=6. c #396C29", +"-6. c #4FF60F", +";6. c #489918", +">6. c #2F7022", +",6. c #316231", +"'6. c #31253D", +")6. c #35632A", +"!6. c #385537", +"~6. c #516E1A", +"{6. c #56771B", +"]6. c #31273D", +"^6. c #2B423B", +"/6. c #08B756", +"(6. c #216143", +"_6. c #352738", +":6. c #31343A", +"<6. c #342C38", +"[6. c #264A42", +"}6. c #02BC51", +"|6. c #07BC44", +"16. c #2B3F3A", +"26. c #332D3B", +"36. c #33333B", +"46. c #8F8F92", +"56. c #382C3F", +"66. c #1B7331", +"76. c #07C62C", +"86. c #264E34", +"96. c #342B3B", +"06. c #17712F", +"a6. c #07CC33", +"b6. c #138930", +"c6. c #57575E", +"d6. c #CBCFCA", +"e6. c #6F5C75", +"f6. c #36B438", +"g6. c #00FF00", +"h6. c #05FC01", +"i6. c #03FF00", +"j6. c #05FE01", +"k6. c #29F126", +"l6. c #453F4E", +"m6. c #32313B", +"n6. c #342C34", +"o6. c #1A6370", +"p6. c #0C8696", +"q6. c #332F38", +"r6. c #32313A", +"s6. c #342931", +"t6. c #2D3F4D", +"u6. c #236072", +"v6. c #0C7593", +"w6. c #0C6E8D", +"x6. c #2B4045", +"y6. c #2F3E3D", +"z6. c #31313B", +"A6. c #342B37", +"B6. c #274E4C", +"C6. c #108C70", +"D6. c #2F4335", +"E6. c #1A7678", +"F6. c #00C4DF", +"G6. c #11A3A3", +"H6. c #2C4E3A", +"I6. c #275C46", +"J6. c #295442", +"K6. c #295444", +"L6. c #266249", +"M6. c #285A45", +"N6. c #285846", +"O6. c #2A4F43", +"P6. c #2A4F46", +"Q6. c #303741", +"R6. c #2C4546", +"S6. c #2A4F4D", +"T6. c #2B4C47", +"U6. c #29544E", +"V6. c #265B5C", +"W6. c #285450", +"X6. c #25615F", +"Y6. c #284660", +"Z6. c #29435D", +"`6. c #1C6690", +" 7. c #225479", +".7. c #29415A", +"+7. c #205981", +"@7. c #255073", +"#7. c #1E688B", +"$7. c #03DCEA", +"%7. c #0FA8C4", +"&7. c #1D4F8B", +"*7. c #1074BF", +"=7. c #096FD8", +"-7. c #0E64C7", +";7. c #0969D9", +">7. c #065BE7", +",7. c #0351F0", +"'7. c #0346F0", +")7. c #036EF7", +"!7. c #055AF6", +"~7. c #0132F8", +"{7. c #0036FB", +"]7. c #0134F7", +"^7. c #0137F9", +"/7. c #0335F1", +"(7. c #0230F7", +"_7. c #0237F6", +":7. c #052FEA", +"<7. c #022DF5", +"[7. c #0134FA", +"}7. c #0138FA", +"|7. c #0435ED", +"17. c #022EF6", +"27. c #0031FF", +"37. c #003AFB", +"47. c #0032FD", +"57. c #023FF6", +"67. c #023FF4", +"77. c #0240F5", +"87. c #0246F3", +"97. c #033EF2", +"07. c #034CEF", +"a7. c #0B4AD2", +"b7. c #085ADF", +"c7. c #0A58D6", +"d7. c #115ABC", +"e7. c #1168BB", +"f7. c #1462AE", +"g7. c #0F73C3", +"h7. c #1660A5", +"i7. c #205B7E", +"j7. c #176FA2", +"k7. c #225B76", +"l7. c #18729F", +"m7. c #1F6C80", +"n7. c #27515E", +"o7. c #255B5F", +"p7. c #2C414B", +"q7. c #07E1B8", +"r7. c #1A9A81", +"s7. c #2D4243", +"t7. c #159E41", +"u7. c #1D6E57", +"v7. c #29564D", +"w7. c #2B4644", +"x7. c #26713E", +"y7. c #178740", +"z7. c #23693F", +"A7. c #275E3F", +"B7. c #246A3F", +"C7. c #24673F", +"D7. c #227140", +"E7. c #207B40", +"F7. c #20793F", +"G7. c #29553E", +"H7. c #25633E", +"I7. c #2F403D", +"J7. c #17852D", +"K7. c #245B34", +"L7. c #381B3C", +"M7. c #1F7C39", +"N7. c #00FF2C", +"O7. c #276539", +"P7. c #34273B", +"Q7. c #31293D", +"R7. c #30921C", +"S7. c #43B314", +"T7. c #405429", +"U7. c #295C2D", +"V7. c #325A33", +"W7. c #32253D", +"X7. c #325E2E", +"Y7. c #487C28", +"Z7. c #62840F", +"`7. c #3C4234", +" 8. c #2F313C", +".8. c #352938", +"+8. c #215F42", +"@8. c #08B856", +"#8. c #2A443D", +"$8. c #342C3A", +"%8. c #31333B", +"&8. c #342A38", +"*8. c #1B6A4B", +"=8. c #00CC51", +"-8. c #0EA541", +";8. c #332E3A", +">8. c #31343B", +",8. c #34343D", +"'8. c #7F7F83", +")8. c #C4C4C3", +"!8. c #B5B6B6", +"~8. c #403D48", +"{8. c #2A3635", +"]8. c #0CB82E", +"^8. c #13942F", +"/8. c #332B3A", +"(8. c #08CA33", +"_8. c #187831", +":8. c #C9C9C8", +"<8. c #6C5C72", +"[8. c #49B449", +"}8. c #27FF20", +"|8. c #29FC23", +"18. c #28FF22", +"28. c #29FE24", +"38. c #22FF1C", +"48. c #46F142", +"58. c #443F4D", +"68. c #2C3C46", +"78. c #31343D", +"88. c #322F37", +"98. c #36242A", +"08. c #1D5266", +"a8. c #0883A5", +"b8. c #1A586E", +"c8. c #342D35", +"d8. c #30363D", +"e8. c #303D3B", +"f8. c #216353", +"g8. c #0B9E73", +"h8. c #2B4F35", +"i8. c #13B29D", +"j8. c #01E4F5", +"k8. c #09E9FE", +"l8. c #1CC3BF", +"m8. c #285439", +"n8. c #275C47", +"o8. c #2B4C41", +"p8. c #2E403E", +"q8. c #22714D", +"r8. c #265F49", +"s8. c #295443", +"t8. c #2B4D42", +"u8. c #2D463F", +"v8. c #2D4540", +"w8. c #295350", +"x8. c #29514E", +"y8. c #30373C", +"z8. c #2E3E45", +"A8. c #294F57", +"B8. c #2B4850", +"C8. c #2B4956", +"D8. c #2C474E", +"E8. c #265665", +"F8. c #284862", +"G8. c #25596D", +"H8. c #2B4353", +"I8. c #245C6D", +"J8. c #197198", +"K8. c #12839C", +"L8. c #0D788D", +"M8. c #06D8DB", +"N8. c #17B8CF", +"O8. c #20507C", +"P8. c #1A5296", +"Q8. c #0B63D3", +"R8. c #0B62D2", +"S8. c #0753E0", +"T8. c #0A56D6", +"U8. c #015FFA", +"V8. c #0443EC", +"W8. c #033BEE", +"X8. c #003EFF", +"Y8. c #0137F8", +"Z8. c #0138F8", +"`8. c #0335F2", +" 9. c #0031FE", +".9. c #0033FB", +"+9. c #002FFD", +"@9. c #012DFA", +"#9. c #002AFD", +"$9. c #002CFC", +"%9. c #0031FB", +"&9. c #0134F8", +"*9. c #012EFA", +"=9. c #022EF5", +"-9. c #0133F9", +";9. c #0231F6", +">9. c #013AF9", +",9. c #0045FF", +"'9. c #0545E9", +")9. c #0640E4", +"!9. c #084ADE", +"~9. c #084EDE", +"{9. c #0A53D4", +"]9. c #0562E8", +"^9. c #0D68C9", +"/9. c #0D65CB", +"(9. c #1163B9", +"_9. c #0F77C0", +":9. c #1D618D", +"<9. c #166AA7", +"[9. c #1F6184", +"}9. c #1E6687", +"|9. c #274B5F", +"19. c #1775A0", +"29. c #24506A", +"39. c #265367", +"49. c #236260", +"59. c #275D63", +"69. c #1E5F4A", +"79. c #148560", +"89. c #323440", +"99. c #1C8741", +"09. c #1A784E", +"a9. c #2C464C", +"b9. c #2C424E", +"c9. c #266641", +"d9. c #169643", +"e9. c #246542", +"f9. c #29573E", +"g9. c #266242", +"h9. c #207941", +"i9. c #285A3F", +"j9. c #217641", +"k9. c #227040", +"l9. c #275C3F", +"m9. c #2B4D3D", +"n9. c #295941", +"o9. c #1D7738", +"p9. c #1B712E", +"q9. c #35283C", +"r9. c #33303C", +"s9. c #11982A", +"t9. c #1D702F", +"u9. c #35263D", +"v9. c #332B3E", +"w9. c #275626", +"x9. c #3A8E15", +"y9. c #39353A", +"z9. c #28622C", +"A9. c #315C34", +"B9. c #2F5E30", +"C9. c #5CA317", +"D9. c #536121", +"E9. c #2E2D3E", +"F9. c #342738", +"G9. c #17824A", +"H9. c #0CA853", +"I9. c #32303B", +"J9. c #118C52", +"K9. c #00CD4E", +"L9. c #129449", +"M9. c #31303B", +"N9. c #332D38", +"O9. c #282832", +"P9. c #757579", +"Q9. c #C2C2C1", +"R9. c #B8B7B8", +"S9. c #46494E", +"T9. c #302337", +"U9. c #1E7633", +"V9. c #342B3C", +"W9. c #0C9E2E", +"X9. c #0BC335", +"Y9. c #C8C8C7", +"Z9. c #BFBFC0", +"`9. c #CACEC9", +" 0. c #6D5C74", +".0. c #41B444", +"+0. c #16FF13", +"@0. c #19FC18", +"#0. c #18FF17", +"$0. c #1AFE18", +"%0. c #12FF0F", +"&0. c #3AF139", +"*0. c #46404E", +"=0. c #32343D", +"-0. c #352D35", +";0. c #1A6572", +">0. c #0D8393", +",0. c #2F3A43", +"'0. c #32333C", +")0. c #33353D", +"!0. c #106D8A", +"~0. c #0B7A9A", +"{0. c #2A3F4C", +"]0. c #2F463E", +"^0. c #32373B", +"/0. c #245A4F", +"(0. c #0C9B6F", +"_0. c #266944", +":0. c #246A4D", +"<0. c #07D7D6", +"[0. c #1DD2D3", +"}0. c #297054", +"|0. c #2B4B3D", +"10. c #22744A", +"20. c #295844", +"30. c #266648", +"40. c #285E45", +"50. c #2A5444", +"60. c #27604C", +"70. c #2D4740", +"80. c #303A40", +"90. c #2C4D44", +"00. c #285851", +"a0. c #26634D", +"b0. c #285B4D", +"c0. c #2C4A4B", +"d0. c #2D474B", +"e0. c #2B4E54", +"f0. c #28585D", +"g0. c #236676", +"h0. c #275767", +"i0. c #26506A", +"j0. c #1F768F", +"k0. c #06FEFC", +"l0. c #07C0C9", +"m0. c #0D7791", +"n0. c #1C628B", +"o0. c #0F86A7", +"p0. c #1C638C", +"q0. c #1F6589", +"r0. c #1F5887", +"s0. c #0E6DC6", +"t0. c #0C55CF", +"u0. c #0B56D2", +"v0. c #0954D9", +"w0. c #024DF7", +"x0. c #0156F9", +"y0. c #0048FB", +"z0. c #0041FC", +"A0. c #0341F2", +"B0. c #0241F6", +"C0. c #003BFC", +"D0. c #0033FF", +"E0. c #002DFB", +"F0. c #0031FC", +"G0. c #012FF9", +"H0. c #0126FB", +"I0. c #002CFE", +"J0. c #0131FA", +"K0. c #0532EB", +"L0. c #002AFB", +"M0. c #0035FF", +"N0. c #012EF8", +"O0. c #032CF3", +"P0. c #0137FA", +"Q0. c #003AFC", +"R0. c #053DEA", +"S0. c #003DFF", +"T0. c #004DFF", +"U0. c #004EFB", +"V0. c #0559EA", +"W0. c #084FDC", +"X0. c #065BE6", +"Y0. c #065FE4", +"Z0. c #0B5FD3", +"`0. c #1366B3", +" a. c #1278B9", +".a. c #0F7CC3", +"+a. c #1A609A", +"@a. c #1F5286", +"#a. c #19619E", +"$a. c #1A7599", +"%a. c #245D70", +"&a. c #265666", +"*a. c #255964", +"=a. c #25576B", +"-a. c #275C73", +";a. c #1B802B", +">a. c #03BF54", +",a. c #275368", +"'a. c #266635", +")a. c #17844D", +"!a. c #246456", +"~a. c #303A41", +"{a. c #26634B", +"]a. c #10AC47", +"^a. c #236843", +"/a. c #2C4D3D", +"(a. c #246B45", +"_a. c #295843", +":a. c #227441", +"b. c #2D4940", +",b. c #2E4540", +"'b. c #2A524D", +")b. c #303E3F", +"!b. c #2C4B45", +"~b. c #266251", +"{b. c #2D4649", +"]b. c #2A4F5B", +"^b. c #285961", +"/b. c #2B4E58", +"(b. c #2C4755", +"_b. c #236174", +":b. c #2C4459", +"c. c #3C4931", +",c. c #31960F", +"'c. c #2E5333", +")c. c #34293E", +"!c. c #27742A", +"~c. c #305837", +"{c. c #362F3B", +"]c. c #638F10", +"^c. c #516E26", +"/c. c #2E2A3F", +"(c. c #342E3B", +"_c. c #2B413D", +":c. c #1F6945", +"d. c #0039FC", +",d. c #0039FF", +"'d. c #0038FC", +")d. c #0034FE", +"!d. c #022FF3", +"~d. c #0230F5", +"{d. c #0237F7", +"]d. c #0432ED", +"^d. c #022BF7", +"/d. c #002FFF", +"(d. c #002EFF", +"_d. c #012FFA", +":d. c #0135F9", +"e. c #352F3D", +",e. c #33333D", +"'e. c #2C2C36", +")e. c #58585E", +"!e. c #C8CCC7", +"~e. c #35B53D", +"{e. c #00FF02", +"]e. c #01FC08", +"^e. c #00FF07", +"/e. c #01FE08", +"(e. c #26F12C", +"_e. c #47414F", +":e. c #33353F", +"f. c #1F5F89", +",f. c #1B6A96", +"'f. c #20597B", +")f. c #1D6B8C", +"!f. c #25606D", +"~f. c #28585E", +"{f. c #294D65", +"]f. c #285A5E", +"^f. c #265C53", +"/f. c #1C7942", +"(f. c #178870", +"_f. c #1F6C4A", +":f. c #10B979", +"g. c #058CA6", +",g. c #1A6C66", +"'g. c #1A8250", +")g. c #15855C", +"!g. c #2E4E3C", +"~g. c #286141", +"{g. c #2D4B3E", +"]g. c #276441", +"^g. c #256C42", +"/g. c #2E4941", +"(g. c #2A5940", +"_g. c #286142", +":g. c #286043", +"h. c #286247", +",h. c #217D4C", +"'h. c #295D45", +")h. c #2D4D41", +"!h. c #313C3E", +"~h. c #362D3D", +"{h. c #2B4B38", +"]h. c #197D2D", +"^h. c #34323D", +"/h. c #2F3E39", +"(h. c #0AAE25", +"_h. c #2A4F37", +":h. c #34343C", +"i. c #2F4056", +",i. c #285067", +"'i. c #225D80", +")i. c #1C6B94", +"!i. c #1A759A", +"~i. c #089DB7", +"{i. c #19679E", +"]i. c #176CAA", +"^i. c #1D5C92", +"/i. c #1B589A", +"(i. c #1A539E", +"_i. c #134FB5", +":i. c #0B4ED2", +"j. c #352F3C", +",j. c #178A59", +"'j. c #05C868", +")j. c #00FA63", +"!j. c #01FB5D", +"~j. c #1DA55B", +"{j. c #362C3D", +"]j. c #B3B3B5", +"^j. c #D2D2D1", +"/j. c #A1A1A4", +"(j. c #2D2D38", +"_j. c #1E7534", +":j. c #07C82C", +"k. c #0951DB", +",k. c #0E4FC8", +"'k. c #0A5FDA", +")k. c #066CE8", +"!k. c #1069C2", +"~k. c #185BA6", +"{k. c #1368B9", +"]k. c #1869A6", +"^k. c #186B9F", +"/k. c #147CAD", +"(k. c #1F698B", +"_k. c #226879", +":k. c #265B6E", +"l. c #0995A7", +",l. c #157584", +"'l. c #353139", +")l. c #33393F", +"!l. c #31413F", +"~l. c #323C3F", +"{l. c #30453F", +"]l. c #2D5040", +"^l. c #2D543B", +"/l. c #146C7C", +"(l. c #01A696", +"_l. c #188656", +":l. c #2F503C", +"m. c #28674D", +",m. c #217D52", +"'m. c #266A4C", +")m. c #24724E", +"!m. c #256F4D", +"~m. c #2D4F45", +"{m. c #323F41", +"]m. c #34373F", +"^m. c #382B40", +"/m. c #216A33", +"(m. c #372D40", +"_m. c #36323F", +":m. c #2D4739", +"n. c #24586C", +",n. c #187A88", +"'n. c #2E485C", +")n. c #196885", +"!n. c #12729A", +"~n. c #20618F", +"{n. c #1C6A98", +"]n. c #11A3D1", +"^n. c #11C8E0", +"/n. c #1357B8", +"(n. c #114BC0", +"_n. c #0D5CD0", +":n. c #0D50CF", +"o. c #52525A", +",o. c #D5D5D4", +"'o. c #79797E", +")o. c #373741", +"!o. c #34363F", +"~o. c #362E3F", +"{o. c #2D4F3F", +"]o. c #02FA4E", +"^o. c #10FF5C", +"/o. c #13F353", +"(o. c #01FF3C", +"_o. c #267A3F", +":o. c #37283F", +"p. c #0343F2", +",p. c #0846E2", +"'p. c #0FC8EB", +")p. c #0C4DD1", +"!p. c #075AE5", +"~p. c #0E59CC", +"{p. c #0C5BD2", +"]p. c #145AB7", +"^p. c #215787", +"/p. c #205A87", +"(p. c #1A64A0", +"_p. c #1D6195", +":p. c #20598C", +"q. c #01FC22", +",q. c #00FF21", +"'q. c #01FE23", +")q. c #00FF1B", +"!q. c #26F141", +"~q. c #382F38", +"{q. c #235763", +"]q. c #079BAF", +"^q. c #205D64", +"/q. c #363838", +"(q. c #314542", +"_q. c #333E3F", +":q. c #32423F", +"r. c #2B6055", +",r. c #1F7F51", +"'r. c #1D7F4B", +")r. c #2A6153", +"!r. c #286851", +"~r. c #2F4F48", +"{r. c #324345", +"]r. c #36323E", +"^r. c #353640", +"/r. c #36353F", +"(r. c #373140", +"_r. c #1A7E2F", +":r. c #2F463B", +"s. c #314352", +",s. c #343C47", +"'s. c #343945", +")s. c #2F585F", +"!s. c #0F9DA7", +"~s. c #1D6173", +"{s. c #353A46", +"]s. c #333C4C", +"^s. c #1E7070", +"/s. c #236367", +"(s. c #0B9BC0", +"_s. c #1283AF", +":s. c #1C6494", +"t. c #392C3D", +",t. c #09B857", +"'t. c #2F4240", +")t. c #373340", +"!t. c #343A41", +"~t. c #236C4F", +"{t. c #09B665", +"]t. c #323D42", +"^t. c #313E3D", +"/t. c #08BB45", +"(t. c #207241", +"_t. c #392C3F", +":t. c #383842", +"u. c #1B5A9E", +",u. c #224F85", +"'u. c #20598B", +")u. c #1E6A94", +"!u. c #1962A4", +"~u. c #245182", +"{u. c #245980", +"]u. c #206D85", +"^u. c #24716F", +"/u. c #2E5059", +"(u. c #2D545C", +"_u. c #2F5152", +":u. c #29655D", +"v. c #2C4E4A", +",v. c #373B3C", +"'v. c #2E5442", +")v. c #2D5F40", +"!v. c #0D8564", +"~v. c #1F6B54", +"{v. c #31503C", +"]v. c #2B643A", +"^v. c #255F4E", +"/v. c #0A7EA0", +"(v. c #13787A", +"_v. c #2F523B", +":v. c #286B40", +"w. c #31423C", +",w. c #1A7D2D", +"'w. c #3A2C44", +")w. c #353C3F", +"!w. c #335635", +"~w. c #2E8621", +"{w. c #16B41B", +"]w. c #257B29", +"^w. c #3E2A42", +"/w. c #332F45", +"(w. c #324F38", +"_w. c #3A8420", +":w. c #489913", +"x. c #246073", +",x. c #295573", +"'x. c #08A1BF", +")x. c #0DA9D1", +"!x. c #1E6798", +"~x. c #24587F", +"{x. c #25577C", +"]x. c #2A486D", +"^x. c #26507A", +"/x. c #225087", +"(x. c #1B74A9", +"_x. c #13D5DE", +":x. c #13E7E4", +"y. c #1E7440", +",y. c #09BC46", +"'y. c #AAAAAC", +")y. c #AFAFB1", +"!y. c #363940", +"~y. c #0BB22D", +"{y. c #46464E", +"]y. c #BBBBBA", +"^y. c #BEC2BE", +"/y. c #A08D9F", +"(y. c #3BBB59", +"_y. c #00FF32", +":y. c #01FC35", +"z. c #08B7AB", +",z. c #1D8B82", +"'z. c #256580", +")z. c #2B6063", +"!z. c #247278", +"~z. c #199399", +"{z. c #237D73", +"]z. c #218275", +"^z. c #2A6764", +"/z. c #237D6F", +"(z. c #1E8F79", +"_z. c #286C64", +":z. c #2D5F5B", +"A. c #1F6663", +",A. c #344B3B", +"'A. c #314B42", +")A. c #2C603F", +"!A. c #2E5740", +"~A. c #2C5F41", +"{A. c #315041", +"]A. c #363C43", +"^A. c #353E49", +"/A. c #373943", +"(A. c #2B4F5C", +"_A. c #167B88", +":A. c #353F4C", +"B. c #04EA7B", +",B. c #00FC76", +"'B. c #1DA268", +")B. c #3B2F40", +"!B. c #3B2E3E", +"~B. c #1F7B55", +"{B. c #0CB064", +"]B. c #323F42", +"^B. c #3C2D41", +"/B. c #236B41", +"(B. c #09BF46", +"_B. c #2F4A40", +":B. c #393342", +"C. c #24617F", +",C. c #237682", +"'C. c #227386", +")C. c #2D5263", +"!C. c #266F7D", +"~C. c #1E757E", +"{C. c #0D93A4", +"]C. c #227A86", +"^C. c #218082", +"/C. c #237979", +"(C. c #227681", +"_C. c #267576", +":C. c #237D78", +"D. c #393743", +",D. c #373F42", +"'D. c #393841", +")D. c #363D4B", +"!D. c #393744", +"~D. c #2A5662", +"{D. c #167E89", +"]D. c #393845", +"^D. c #147370", +"/D. c #304A4F", +"(D. c #363E51", +"_D. c #2E505E", +":D. c #314661", +"E. c #0BB859", +",E. c #21784D", +"'E. c #3C2F41", +")E. c #3A3340", +"!E. c #149C5F", +"~E. c #14995D", +"{E. c #393540", +"]E. c #3C3143", +"^E. c #256540", +"/E. c #08C246", +"(E. c #2D5141", +"_E. c #32323C", +":E. c #5A5A61", +"F. c #1F7D95", +",F. c #1A8B9B", +"'F. c #07A4AC", +")F. c #1D8894", +"!F. c #296175", +"~F. c #1D8297", +"{F. c #217F88", +"]F. c #286E6F", +"^F. c #267176", +"/F. c #2E5A60", +"(F. c #2B6965", +"_F. c #2C6466", +":F. c #324D51", +"G. c #343F55", +",G. c #2E4465", +"'G. c #2F4663", +")G. c #2C4C72", +"!G. c #22557F", +"~G. c #1B6389", +"{G. c #264C89", +"]G. c #1B5F93", +"^G. c #1C7A9F", +"/G. c #14DADF", +"(G. c #13EFE9", +"_G. c #17C6D2", +":G. c #1C73AB", +"H. c #295C41", +",H. c #08C347", +"'H. c #2C5943", +")H. c #3C3244", +"!H. c #3B3B46", +"~H. c #2E2E3A", +"{H. c #75757B", +"]H. c #5B5B63", +"^H. c #3A3A45", +"/H. c #9D9D9F", +"(H. c #B1B6B3", +"_H. c #C3B0BE", +":H. c #68E78D", +"I. c #178EB2", +",I. c #22778E", +"'I. c #1A80A6", +")I. c #1B83A3", +"!I. c #1F7898", +"~I. c #23728A", +"{I. c #0BB7C2", +"]I. c #0AD7E1", +"^I. c #296676", +"/I. c #2E5E66", +"(I. c #27747A", +"_I. c #267B7C", +":I. c #2E5E65", +"J. c #354151", +",J. c #363D52", +"'J. c #2E5053", +")J. c #128284", +"!J. c #2F466A", +"~J. c #2E4869", +"{J. c #334258", +"]J. c #334359", +"^J. c #2F4364", +"/J. c #284D7A", +"(J. c #2F4369", +"_J. c #1D5785", +":J. c #224E7B", +"K. c #3C3442", +",K. c #3B3544", +"'K. c #2C5541", +")K. c #286443", +"!K. c #3D3144", +"~K. c #393B44", +"{K. c #959599", +"]K. c #31313D", +"^K. c #6D6D73", +"/K. c #B0B4B2", +"(K. c #C2AFBC", +"_K. c #67E791", +":K. c #03FD54", +"L. c #1E7386", +",L. c #0B94A6", +"'L. c #2F5767", +")L. c #2E6068", +"!L. c #218B8D", +"~L. c #2A6C76", +"{L. c #2D626B", +"]L. c #27767C", +"^L. c #354B55", +"/L. c #354A52", +"(L. c #3E3042", +"_L. c #178F5A", +":L. c #237054", +"M. c #2F5469", +",M. c #10B9D8", +"'M. c #22748E", +")M. c #179DA9", +"!M. c #314A69", +"~M. c #323F5D", +"{M. c #304166", +"]M. c #264785", +"^M. c #2E3E6D", +"/M. c #2E3E6B", +"(M. c #2B4175", +"_M. c #243F8C", +":M. c #224393", +"N. c #256D42", +",N. c #3E3244", +"'N. c #3A3D44", +")N. c #B0B0B2", +"!N. c #C0AEBA", +"~N. c #67E694", +"{N. c #03FD5C", +"]N. c #00FF5A", +"^N. c #01FE5B", +"/N. c #26F26F", +"(N. c #4E4756", +"_N. c #374644", +":N. c #394044", +"O. c #325561", +",O. c #364752", +"'O. c #3E3344", +")O. c #2A614D", +"!O. c #0CAB66", +"~O. c #3D2E42", +"{O. c #1E9D6B", +"]O. c #04FF83", +"^O. c #374D4A", +"/O. c #3E3544", +"(O. c #21664F", +"_O. c #1D7454", +":O. c #403144", +"P. c #323D66", +",P. c #245677", +"'P. c #04BAD6", +")P. c #2A5080", +"!P. c #303867", +"~P. c #33415F", +"{P. c #373C53", +"]P. c #2F3F69", +"^P. c #304268", +"/P. c #213E95", +"(P. c #2B3D77", +"_P. c #293F7C", +":P. c #2A3C7B", +"Q. c #03FD63", +",Q. c #00FF61", +"'Q. c #01FE62", +")Q. c #26F275", +"!Q. c #4F4956", +"~Q. c #3C3A46", +"{Q. c #3A4145", +"]Q. c #384645", +"^Q. c #384744", +"/Q. c #364F43", +"(Q. c #335642", +"_Q. c #2E683F", +":Q. c #325A42", +"R. c #432842", +",R. c #236F46", +"'R. c #315246", +")R. c #3E3744", +"!R. c #2C544E", +"~R. c #187D5E", +"{R. c #3F3745", +"]R. c #334A47", +"^R. c #15804B", +"/R. c #354A4E", +"(R. c #0DA7A8", +"_R. c #2C5E64", +":R. c #37434E", +"S. c #314166", +",S. c #363B58", +"'S. c #313F68", +")S. c #2E406F", +"!S. c #2B3F77", +"~S. c #333E61", +"{S. c #2D3D73", +"]S. c #353F5C", +"^S. c #2E4170", +"/S. c #2B3E78", +"(S. c #2C3E75", +"_S. c #2A417B", +":S. c #303C69", +"T. c #03FD6A", +",T. c #00FF69", +"'T. c #01FE6A", +")T. c #26F27B", +"!T. c #3A4246", +"~T. c #3C3D46", +"{T. c #3D3B47", +"]T. c #306441", +"^T. c #325E41", +"/T. c #394744", +"(T. c #364F44", +"_T. c #374C44", +":T. c #325C42", +"U. c #3C3A47", +",U. c #3C4346", +"'U. c #2C842E", +")U. c #30663D", +"!U. c #188247", +"~U. c #335247", +"{U. c #3F3747", +"]U. c #24744A", +"^U. c #276548", +"/U. c #403546", +"(U. c #22734B", +"_U. c #364947", +":U. c #3F3444", +"V. c #3A424F", +",V. c #3C3D4A", +"'V. c #364151", +")V. c #1F6B84", +"!V. c #3F3943", +"~V. c #1D7889", +"{V. c #384450", +"]V. c #3E3B45", +"^V. c #3A454D", +"/V. c #08EEB6", +"(V. c #06E38F", +"_V. c #2D5E51", +":V. c #3F3645", +"W. c #363E5A", +",W. c #3B3D4C", +"'W. c #373D57", +")W. c #343F61", +"!W. c #334062", +"~W. c #363E5B", +"{W. c #373C58", +"]W. c #333F64", +"^W. c #303E67", +"/W. c #1A3182", +"(W. c #393D52", +"_W. c #324566", +":W. c #31436A", +"X. c #365544", +",X. c #326143", +"'X. c #365346", +")X. c #306643", +"!X. c #374F46", +"~X. c #355646", +"{X. c #3B4247", +"]X. c #3D3E48", +"^X. c #3D3E4A", +"/X. c #413840", +"(X. c #2B5164", +"_X. c #05A6C8", +":X. c #00C1EE", +"Y. c #AAAEAC", +",Y. c #BBA8B2", +"'Y. c #65E5A2", +")Y. c #00FF73", +"!Y. c #03FD79", +"~Y. c #00FF78", +"{Y. c #01FE79", +"]Y. c #00FF75", +"^Y. c #26F287", +"/Y. c #514A58", +"(Y. c #3E3D49", +"_Y. c #3C4348", +":Y. c #3B4748", +"Z. c #354D4B", +",Z. c #0BBB69", +"'Z. c #207E57", +")Z. c #413546", +"!Z. c #3D4048", +"~Z. c #413549", +"{Z. c #276D45", +"]Z. c #09C548", +"^Z. c #315847", +"/Z. c #616169", +"(Z. c #393945", +"_Z. c #505059", +":Z. c #A9ADAB", +"`. c #3A5147", +",`. c #287F3E", +"'`. c #0DB158", +")`. c #1B8E53", +"!`. c #403747", +"~`. c #1A935E", +"{`. c #0FAC64", +"]`. c #3A4048", +"^`. c #10AB46", +"/`. c #169C46", +"(`. c #40404B", +"_`. c #8B8B90", +":`. c #DBDBDA", +"<`. c #8B8B91", +"[`. c #3E3E4A", +"}`. c #42424D", +"|`. c #A1A1A2", +"1`. c #AFAFAE", +"2`. c #A8ADAB", +"3`. c #BAA7B0", +"4`. c #65E4A5", +"5`. c #00FF7B", +"6`. c #03FD80", +"7`. c #00FF7F", +"8`. c #01FE80", +"9`. c #00FF7D", +"0`. c #27F28D", +"a`. c #514B58", +"b`. c #3C4549", +"c`. c #3C4449", +"d`. c #3D4149", +"e`. c #375447", +"f`. c #3C4548", +"g`. c #394F48", +"h`. c #355B46", +"i`. c #355946", +"j`. c #306A44", +"k`. c #385247", +"l`. c #3A4B48", +"m`. c #3B4749", +"n`. c #3D4349", +"o`. c #3E3D4A", +"p`. c #3E4049", +"q`. c #3D414A", +"r`. c #3F4047", +"s`. c #374556", +"t`. c #166F94", +"u`. c #07D7DE", +"v`. c #04D5EC", +"w`. c #06F3FF", +"x`. c #346F77", +"y`. c #403440", +"z`. c #3E404C", +"A`. c #3F3E48", +"B`. c #213272", +"C`. c #3C3F4D", +"D`. c #3F3A45", +"E`. c #1D5A8C", +"F`. c #3B404F", +"G`. c #3F3D48", +"H`. c #413943", +"I`. c #315466", +"J`. c #226B83", +"K`. c #423842", +"L`. c #3F3C48", +"M`. c #374A57", +"N`. c #1F7788", +"O`. c #403B46", +"P`. c #3E3F4A", +"Q`. c #3E404B", +"R`. c #413541", +"S`. c #11CDD0", +"T`. c #00F5EB", +"U`. c #0BD2CC", +"V`. c #2098A5", +"W`. c #374C5B", +"X`. c #403A45", +"Y`. c #403A4B", +"Z`. c #344E43", +"``. c #0CBE8C", +" + c #01FFCC", +". + c #366564", +"+ + c #256D43", +"@ + c #2F5D4B", +"# + c #443345", +"$ + c #1C6F71", +"% + c #2A6268", +"& + c #453342", +"* + c #1E6C62", +"= + c #2C5E5B", +"- + c #413947", +"; + c #3A444F", +"> + c #0DA9A9", +", + c #296A70", +"' + c #394653", +") + c #0AA2B1", +"! + c #2E5B64", +"~ + c #423147", +"{ + c #3E6639", +"] + c #3D8226", +"^ + c #2B773A", +"/ + c #2F6C3F", +"( + c #41394B", +"_ + c #2C7E3D", +": + c #375344", +"< + c #40394B", +"[ + c #3E3F49", +"} + c #423548", +"| + c #27704F", +"1 + c #09C25C", +"2 + c #33534B", +"3 + c #443247", +"4 + c #2C6552", +"5 + c #08C16A", +"6 + c #2B6350", +"7 + c #413748", +"8 + c #41364A", +"9 + c #2B6546", +"0 + c #08C648", +"a + c #2D6046", +"b + c #42384A", +"c + c #B9B9BB", +"d + c #5D5D66", +"e + c #40404A", +"f + c #A8ACAA", +"g + c #B9A6AF", +"h + c #65E4A7", +"i + c #00FF80", +"j + c #03FD84", +"k + c #00FF84", +"l + c #01FE84", +"m + c #00FF81", +"n + c #27F291", +"o + c #3F3E4A", +"p + c #3D4449", +"q + c #3B4A49", +"r + c #3B4949", +"s + c #3A4D48", +"t + c #3C4748", +"u + c #3B4849", +"v + c #345E45", +"w + c #3B4B48", +"x + c #385148", +"y + c #385349", +"z + c #3B484A", +"A + c #3F3D49", +"B + c #38524A", +"C + c #3C474B", +"D + c #403D47", +"E + c #374958", +"F + c #1B6385", +"G + c #20919E", +"H + c #0BEEFC", +"I + c #2EB0B6", +"J + c #403E49", +"K + c #3F3F48", +"L + c #3C3D4C", +"M + c #1A3283", +"N + c #384355", +"O + c #1B5887", +"P + c #3F3E49", +"Q + c #3E3F4B", +"R + c #423C44", +"S + c #215884", +"T + c #34475E", +"U + c #413D45", +"V + c #3B4451", +"W + c #403C47", +"X + c #3C434E", +"Y + c #1D7C8C", +"Z + c #3D434E", +"` + c #3E414B", +" .+ c #423541", +"..+ c #239092", +"+.+ c #06D9D2", +"@.+ c #0AF2F2", +"#.+ c #0FB0D6", +"$.+ c #403E47", +"%.+ c #3B454A", +"&.+ c #1B8856", +"*.+ c #1C9065", +"=.+ c #384F53", +"-.+ c #2F5E47", +";.+ c #25734A", +">.+ c #473044", +",.+ c #22646A", +"'.+ c #2D5961", +").+ c #463341", +"!.+ c #226562", +"~.+ c #2D5C5C", +"{.+ c #423946", +"].+ c #3D414C", +"^.+ c #423642", +"/.+ c #1E8286", +"(.+ c #149596", +"_.+ c #452834", +":.+ c #198591", +"<.+ c #198094", +"[.+ c #414A3F", +"}.+ c #3F8724", +"|.+ c #327935", +"1.+ c #2B783A", +"2.+ c #413D4B", +"3.+ c #34703F", +"4.+ c #316B3E", +"5.+ c #10B059", +"6.+ c #1B9254", +"7.+ c #3B4349", +"8.+ c #0FAF66", +"9.+ c #19925D", +"0.+ c #413847", +"a.+ c #3E404A", +"b.+ c #3E3A48", +"c.+ c #13A446", +"d.+ c #14A648", +"e.+ c #403C4A", +"f.+ c #383844", +"g.+ c #5E5E67", +"h.+ c #D0D0D1", +"i.+ c #CFCFD0", +"j.+ c #41414C", +"k.+ c #363643", +"l.+ c #A7ABA9", +"m.+ c #B8A5AE", +"n.+ c #64E4A8", +"o.+ c #00FF83", +"p.+ c #03FD88", +"q.+ c #00FF87", +"r.+ c #01FE87", +"s.+ c #00FF85", +"t.+ c #27F293", +"u.+ c #514B59", +"v.+ c #3D444A", +"w.+ c #394F49", +"x.+ c #3D4249", +"y.+ c #375448", +"z.+ c #385348", +"A.+ c #3A4C49", +"B.+ c #326446", +"C.+ c #394E48", +"D.+ c #385248", +"E.+ c #306A47", +"F.+ c #365848", +"G.+ c #375449", +"H.+ c #3C474A", +"I.+ c #3C454A", +"J.+ c #3A4C4A", +"K.+ c #37544B", +"L.+ c #413A47", +"M.+ c #374857", +"N.+ c #186B8C", +"O.+ c #403845", +"P.+ c #3D4350", +"Q.+ c #3F3945", +"R.+ c #3F3C47", +"S.+ c #3E3F4C", +"T.+ c #423C3E", +"U.+ c #234F9B", +"V.+ c #3A3F59", +"W.+ c #403E46", +"X.+ c #413D46", +"Y.+ c #34465C", +"Z.+ c #1F5480", +"`.+ c #433B42", +" ++ c #285276", +".++ c #2A5072", +"+++ c #423B42", +"@++ c #433841", +"#++ c #25687E", +"$++ c #2D5A6D", +"%++ c #423943", +"&++ c #206E80", +"*++ c #394451", +"=++ c #3E3944", +"-++ c #128A85", +";++ c #00EFF8", +">++ c #02B4E0", +",++ c #19B7D5", +"'++ c #40444E", +")++ c #403A49", +"!++ c #217952", +"~++ c #267357", +"{++ c #27725C", +"]++ c #3B4547", +"^++ c #1B844A", +"/++ c #443443", +"(++ c #1C777F", +"_++ c #1C7F88", +":++ c #463442", +"<++ c #206665", +"[++ c #286464", +"}++ c #413844", +"|++ c #325861", +"1++ c #03D4D3", +"2++ c #209A9E", +"3++ c #256F7D", +"4++ c #1098A2", +"5++ c #437D1B", +"6++ c #3C7927", +"7++ c #297F38", +"8++ c #3E4648", +"9++ c #3F3C4A", +"0++ c #3F394B", +"a++ c #3B5844", +"b++ c #307C38", +"c++ c #423649", +"d++ c #28704F", +"e++ c #34544B", +"f++ c #443147", +"g++ c #20845A", +"h++ c #0AB968", +"i++ c #364C4B", +"j++ c #413B49", +"k++ c #2C6045", +"l++ c #07C647", +"m++ c #2C6A48", +"n++ c #372C40", +"o++ c #84868A", +"p++ c #95959A", +"q++ c #353541", +"r++ c #3F3F4B", +"s++ c #606068", +"t++ c #B0B0AF", +"u++ c #A6ABA9", +"v++ c #B8A5AD", +"w++ c #64E4A9", +"x++ c #00FF86", +"y++ c #03FD8B", +"z++ c #00FF8A", +"A++ c #01FE8A", +"B++ c #00FF88", +"C++ c #27F296", +"D++ c #524C59", +"E++ c #403E4B", +"F++ c #3C484A", +"G++ c #3F404A", +"H++ c #3F404B", +"I++ c #3D474A", +"J++ c #3A5048", +"K++ c #3B4C49", +"L++ c #395249", +"M++ c #3A5049", +"N++ c #3F414A", +"O++ c #3B4D49", +"P++ c #3A504A", +"Q++ c #385549", +"R++ c #3C4A4A", +"S++ c #37574A", +"T++ c #3D464A", +"U++ c #3B4B4C", +"V++ c #403E48", +"W++ c #394856", +"X++ c #147393", +"Y++ c #413D47", +"Z++ c #3F404C", +"`++ c #3E3F4D", +" @+ c #443F40", +".@+ c #234593", +"+@+ c #0546E0", +"@@+ c #39476A", +"#@+ c #413E44", +"$@+ c #433D45", +"%@+ c #2F4A66", +"&@+ c #423D45", +"*@+ c #324A64", +"=@+ c #235782", +"-@+ c #433D44", +";@+ c #413C46", +">@+ c #364E5E", +",@+ c #21718A", +"'@+ c #423843", +")@+ c #17AEB7", +"!@+ c #26858F", +"~@+ c #433541", +"{@+ c #3E414D", +"]@+ c #3B4852", +"^@+ c #147C7D", +"/@+ c #1C859E", +"(@+ c #0797C9", +"_@+ c #2B5F76", +":@+ c #433942", +"<@+ c #433749", +"[@+ c #296D52", +"}@+ c #287154", +"|@+ c #228061", +"1@+ c #3C474E", +"2@+ c #1F7E43", +"3@+ c #346160", +"4@+ c #07E1E6", +"5@+ c #04E9ED", +"6@+ c #3D5460", +"7@+ c #255D5E", +"8@+ c #236E6E", +"9@+ c #433A46", +"0@+ c #3E434E", +"a@+ c #43333F", +"b@+ c #278A91", +"c@+ c #07FFFF", +"d@+ c #06E0E4", +"e@+ c #26AA6D", +"f@+ c #27B671", +"g@+ c #298849", +"h@+ c #3D4B3D", +"i@+ c #403C4E", +"j@+ c #3F3D4B", +"k@+ c #40464A", +"l@+ c #338136", +"m@+ c #3C4F45", +"n@+ c #403C4C", +"o@+ c #403F4B", +"p@+ c #11B059", +"q@+ c #1B9455", +"r@+ c #453248", +"s@+ c #33584F", +"t@+ c #0AC06A", +"u@+ c #247756", +"v@+ c #433849", +"w@+ c #403949", +"x@+ c #179D47", +"y@+ c #12AF48", +"z@+ c #B2B1B5", +"A@+ c #D8D9D8", +"B@+ c #66666E", +"C@+ c #4E4E58", +"D@+ c #A6AAA8", +"E@+ c #B7A4AC", +"F@+ c #64E3AB", +"G@+ c #00FF8B", +"H@+ c #03FD8E", +"I@+ c #00FF8E", +"J@+ c #01FE8E", +"K@+ c #00FF8C", +"L@+ c #27F299", +"M@+ c #403F4A", +"N@+ c #3E444B", +"O@+ c #3C4B4A", +"P@+ c #385749", +"Q@+ c #3D484A", +"R@+ c #38564A", +"S@+ c #355F49", +"T@+ c #346348", +"U@+ c #3A4F4A", +"V@+ c #39544B", +"W@+ c #39534A", +"X@+ c #3D484B", +"Y@+ c #3E444C", +"Z@+ c #3F4448", +"`@+ c #394A55", +" #+ c #127795", +".#+ c #394753", +"+#+ c #413E49", +"@#+ c #414048", +"##+ c #3C3E51", +"$#+ c #1B3387", +"%#+ c #403D45", +"&#+ c #2B4F6F", +"*#+ c #255177", +"=#+ c #443D44", +"-#+ c #413F48", +";#+ c #3B4454", +">#+ c #1E5A8A", +",#+ c #1E748D", +"'#+ c #394A58", +")#+ c #433842", +"!#+ c #0BD6DC", +"~#+ c #17B8C1", +"{#+ c #443540", +"]#+ c #3F424D", +"^#+ c #3F414B", +"/#+ c #15787F", +"(#+ c #39474C", +"_#+ c #235E80", +":#+ c #1A688D", +"<#+ c #433C44", +"[#+ c #423A4A", +"}#+ c #33584E", +"|#+ c #247752", +"1#+ c #28745C", +"2#+ c #315F58", +"3#+ c #2A6E43", +"4#+ c #22735C", +"5#+ c #07CDD8", +"6#+ c #20BCC0", +"7#+ c #443D48", +"8#+ c #2B585E", +"9#+ c #246A6D", +"0#+ c #3E444E", +"a#+ c #44313D", +"b#+ c #1F9FA5", +"c#+ c #0ADCDC", +"d#+ c #0AF6F1", +"e#+ c #0EF5E4", +"f#+ c #05EDED", +"g#+ c #375763", +"h#+ c #413B45", +"i#+ c #3F414C", +"j#+ c #413B4D", +"k#+ c #397538", +"l#+ c #38643D", +"m#+ c #41394D", +"n#+ c #29704F", +"o#+ c #0AC35C", +"p#+ c #35544C", +"q#+ c #423748", +"r#+ c #16A162", +"s#+ c #12A562", +"t#+ c #433A4B", +"u#+ c #335A48", +"v#+ c #04C043", +"w#+ c #408B5D", +"x#+ c #D7CBD4", +"y#+ c #D1D4D2", +"z#+ c #D2D1D2", +"A#+ c #C6C6C7", +"B#+ c #474752", +"C#+ c #40404C", +"D#+ c #41414D", +"E#+ c #9B9B9D", +"F#+ c #ACACAB", +"G#+ c #A5A9A7", +"H#+ c #B6A3AB", +"I#+ c #64E3AD", +"J#+ c #00FF8F", +"K#+ c #03FD92", +"L#+ c #00FF92", +"M#+ c #01FE92", +"N#+ c #27F29C", +"O#+ c #524C5A", +"P#+ c #3E454B", +"Q#+ c #3B4C4B", +"R#+ c #3D474B", +"S#+ c #3A514A", +"T#+ c #3C494B", +"U#+ c #3B4D4B", +"V#+ c #34624A", +"W#+ c #38554A", +"X#+ c #365D4A", +"Y#+ c #413C49", +"Z#+ c #3A4656", +"`#+ c #127994", +" $+ c #384C54", +".$+ c #413D49", +"+$+ c #1751A7", +"@$+ c #334469", +"#$+ c #423E45", +"$$+ c #3F404D", +"%$+ c #3E404D", +"&$+ c #443B43", +"*$+ c #274770", +"=$+ c #294B6E", +"-$+ c #443D45", +";$+ c #423B46", +">$+ c #1F5E89", +",$+ c #38485A", +"'$+ c #3F414D", +")$+ c #433943", +"!$+ c #2A6075", +"~$+ c #28657A", +"{$+ c #47333D", +"]$+ c #2C6270", +"^$+ c #227585", +"/$+ c #433944", +"($+ c #167380", +"_$+ c #31555F", +":$+ c #30516A", +"<$+ c #0E79A7", +"[$+ c #3C424F", +"}$+ c #3D424B", +"|$+ c #1D8555", +"1$+ c #335B53", +"2$+ c #247B61", +"3$+ c #335E47", +"4$+ c #089968", +"5$+ c #33495D", +"6$+ c #433742", +"7$+ c #433945", +"8$+ c #2A5B64", +"9$+ c #25686E", +"0$+ c #433B47", +"a$+ c #423844", +"b$+ c #336B71", +"c$+ c #01ECEF", +"d$+ c #03D7D7", +"e$+ c #23CFAE", +"f$+ c #09FDF9", +"g$+ c #11E8EB", +"h$+ c #01FFFF", +"i$+ c #27969C", +"j$+ c #44313E", +"k$+ c #40394E", +"l$+ c #3E6140", +"m$+ c #377834", +"n$+ c #403E4D", +"o$+ c #403F4C", +"p$+ c #1B9556", +"q$+ c #462F48", +"r$+ c #297156", +"s$+ c #09C16A", +"t$+ c #305C50", +"u$+ c #42394B", +"v$+ c #159242", +"w$+ c #26CC5D", +"x$+ c #C5CEC8", +"y$+ c #D6D3D5", +"z$+ c #9F9FA3", +"A$+ c #A3A8A6", +"B$+ c #B5A3AA", +"C$+ c #64E3AE", +"D$+ c #00FF93", +"E$+ c #03FD96", +"F$+ c #00FF95", +"G$+ c #01FE95", +"H$+ c #27F29F", +"I$+ c #534D5A", +"J$+ c #413F4B", +"K$+ c #3E464C", +"L$+ c #40424B", +"M$+ c #40414B", +"N$+ c #3F434B", +"O$+ c #3D494B", +"P$+ c #3F424B", +"Q$+ c #3F444B", +"R$+ c #423C4C", +"S$+ c #3C4C4B", +"T$+ c #3B514B", +"U$+ c #3A524A", +"V$+ c #3E474B", +"W$+ c #3E484C", +"X$+ c #39554B", +"Y$+ c #3F444C", +"Z$+ c #39544C", +"`$+ c #413F4C", +" %+ c #3F424C", +".%+ c #3E4A4A", +"+%+ c #375257", +"@%+ c #127C94", +"#%+ c #3B4653", +"$%+ c #423F49", +"%%+ c #40414C", +"&%+ c #40414D", +"*%+ c #364F6A", +"=%+ c #0081FF", +"-%+ c #1162D7", +";%+ c #42414A", +">%+ c #41434A", +",%+ c #169BB8", +"'%+ c #24698F", +")%+ c #413F4A", +"!%+ c #3F434D", +"~%+ c #0ACCE9", +"{%+ c #1E89B1", +"]%+ c #443840", +"^%+ c #3F424E", +"/%+ c #423E48", +"(%+ c #3A4A58", +"_%+ c #1E758F", +":%+ c #433C47", +"<%+ c #3C4551", +"[%+ c #1C7D8D", +"}%+ c #423F4A", +"|%+ c #177081", +"1%+ c #305360", +"2%+ c #3E4250", +"3%+ c #0D7AA9", +"4%+ c #315065", +"5%+ c #433D46", +"6%+ c #40424C", +"7%+ c #44394A", +"8%+ c #208055", +"9%+ c #34574E", +"0%+ c #28795F", +"a%+ c #14856E", +"b%+ c #148C4F", +"c%+ c #453847", +"d%+ c #3F434E", +"e%+ c #443B48", +"f%+ c #2C535E", +"g%+ c #236770", +"h%+ c #443848", +"i%+ c #3F3D4E", +"j%+ c #403D4F", +"k%+ c #3E2D49", +"l%+ c #355E61", +"m%+ c #31B158", +"n%+ c #3A9736", +"o%+ c #05F0E6", +"p%+ c #00DDE7", +"q%+ c #0DDCDF", +"r%+ c #3A6E77", +"s%+ c #413843", +"t%+ c #403F4E", +"u%+ c #414C48", +"v%+ c #3A822E", +"w%+ c #3F4947", +"x%+ c #413D4D", +"y%+ c #44384B", +"z%+ c #2A7050", +"A%+ c #0AC35D", +"B%+ c #38524D", +"C%+ c #3C464C", +"D%+ c #0DB868", +"E%+ c #1D8B5B", +"F%+ c #43394A", +"G%+ c #443C4D", +"H%+ c #335346", +"I%+ c #19D356", +"J%+ c #7CD398", +"K%+ c #DED2DA", +"L%+ c #D0D3D1", +"M%+ c #3A3A46", +"N%+ c #AEAEAD", +"O%+ c #A2A7A5", +"P%+ c #B5A2A9", +"Q%+ c #63E3B0", +"R%+ c #00FF97", +"S%+ c #03FD9A", +"T%+ c #00FF99", +"U%+ c #01FE99", +"V%+ c #00FF98", +"W%+ c #27F2A2", +"X%+ c #3E474C", +"Y%+ c #3C4E4C", +"Z%+ c #39574A", +"`%+ c #3E484B", +" &+ c #3D4C4C", +".&+ c #3C4D4C", +"+&+ c #3D4B4C", +"@&+ c #3B524B", +"#&+ c #3A554C", +"$&+ c #3E484D", +"%&+ c #3F444D", +"&&+ c #414049", +"*&+ c #375558", +"=&+ c #127E93", +"-&+ c #3B4754", +";&+ c #3D4659", +">&+ c #0C4DBE", +",&+ c #284F90", +"'&+ c #444248", +")&+ c #40404D", +"!&+ c #423C48", +"~&+ c #3C515A", +"{&+ c #00C3F5", +"]&+ c #1791C6", +"^&+ c #443F46", +"/&+ c #197CAA", +"(&+ c #206A96", +"_&+ c #453C43", +":&+ c #40414E", +"<&+ c #40424D", +"[&+ c #433B45", +"}&+ c #1F718A", +"|&+ c #355464", +"1&+ c #443B45", +"2&+ c #38505D", +"3&+ c #433D48", +"4&+ c #443D47", +"5&+ c #1E6479", +"6&+ c #256073", +"7&+ c #473942", +"8&+ c #16719A", +"9&+ c #206485", +"0&+ c #443C45", +"a&+ c #45384B", +"b&+ c #2A6B53", +"c&+ c #2B7051", +"d&+ c #246A66", +"e&+ c #138073", +"f&+ c #1C9858", +"g&+ c #365A52", +"h&+ c #423F4D", +"i&+ c #434146", +"j&+ c #276F78", +"k&+ c #138F9B", +"l&+ c #414F48", +"m&+ c #435144", +"n&+ c #3E5342", +"o&+ c #667E34", +"p&+ c #A7D007", +"q&+ c #3FB232", +"r&+ c #2C8F37", +"s&+ c #36685F", +"t&+ c #09B2C2", +"u&+ c #1E8B97", +"v&+ c #453641", +"w&+ c #423E4E", +"x&+ c #3E7C30", +"y&+ c #3E5E3E", +"z&+ c #413C4F", +"A&+ c #41404C", +"B&+ c #11B05A", +"C&+ c #1A9755", +"D&+ c #1C925E", +"E&+ c #0EB466", +"F&+ c #3B494C", +"G&+ c #423E4C", +"H&+ c #594D5F", +"I&+ c #5CCC81", +"J&+ c #2DDB66", +"K&+ c #BACAC0", +"L&+ c #D8D4D7", +"M&+ c #D1D2D1", +"N&+ c #CDCDCE", +"O&+ c #50505A", +"P&+ c #42424E", +"Q&+ c #B3A0A8", +"R&+ c #63E3B2", +"S&+ c #00FF9B", +"T&+ c #03FD9D", +"U&+ c #00FF9D", +"V&+ c #01FE9D", +"W&+ c #00FF9C", +"X&+ c #27F2A5", +"Y&+ c #534D5B", +"Z&+ c #41404D", +"`&+ c #3E494C", +" *+ c #3B504C", +".*+ c #375C4B", +"+*+ c #39574C", +"@*+ c #3C4C4C", +"#*+ c #3C4F4C", +"$*+ c #3F464D", +"%*+ c #3C4D4D", +"&*+ c #3A534F", +"**+ c #3D494D", +"=*+ c #3E474E", +"-*+ c #41404A", +";*+ c #3B4957", +">*+ c #127F93", +",*+ c #423F4B", +"'*+ c #3F414F", +")*+ c #463E40", +"!*+ c #294679", +"~*+ c #224B8B", +"{*+ c #433E49", +"]*+ c #2C5579", +"^*+ c #1A6597", +"/*+ c #423C47", +"(*+ c #40424E", +"_*+ c #433E48", +":*+ c #3C3E50", +"<*+ c #1E5887", +"[*+ c #42404B", +"}*+ c #443B46", +"|*+ c #2F5B6E", +"1*+ c #25647D", +"2*+ c #4B2C36", +"3*+ c #247080", +"4*+ c #2C6372", +"5*+ c #443A45", +"6*+ c #3F424F", +"7*+ c #1F6079", +"8*+ c #255C71", +"9*+ c #493840", +"0*+ c #255F7E", +"a*+ c #12749F", +"b*+ c #423E4D", +"c*+ c #394D4C", +"d*+ c #15925E", +"e*+ c #16736D", +"f*+ c #1A976A", +"g*+ c #03FA8E", +"h*+ c #0FC55D", +"i*+ c #287A3D", +"j*+ c #2D8242", +"k*+ c #0BDED8", +"l*+ c #01EEFA", +"m*+ c #2EA06E", +"n*+ c #467323", +"o*+ c #3E7630", +"p*+ c #6C9724", +"q*+ c #B9FC06", +"r*+ c #3CB833", +"s*+ c #1D8D75", +"t*+ c #483143", +"u*+ c #1F7A86", +"v*+ c #158B99", +"w*+ c #413A50", +"x*+ c #416839", +"y*+ c #3F7531", +"z*+ c #413B4F", +"A*+ c #44384C", +"B*+ c #2A7051", +"C*+ c #08C55C", +"D*+ c #35514B", +"E*+ c #335C52", +"F*+ c #08C46B", +"G*+ c #296F55", +"H*+ c #44394B", +"I*+ c #43434F", +"J*+ c #343642", +"K*+ c #857F8A", +"L*+ c #BCD5C3", +"M*+ c #21D75C", +"N*+ c #6CD08C", +"O*+ c #DED3DB", +"P*+ c #A9A9AC", +"Q*+ c #393946", +"R*+ c #43434E", +"S*+ c #B19EA6", +"T*+ c #63E2B3", +"U*+ c #00FF9F", +"V*+ c #03FDA1", +"W*+ c #00FFA0", +"X*+ c #01FEA1", +"Y*+ c #27F2A8", +"Z*+ c #544E5B", +"`*+ c #41424C", +" =+ c #40454D", +".=+ c #41434C", +"+=+ c #3F484D", +"@=+ c #42404D", +"#=+ c #3A574C", +"$=+ c #3E4C4C", +"%=+ c #3E4C4D", +"&=+ c #40444D", +"*=+ c #3B544C", +"==+ c #3C514C", +"-=+ c #3A554D", +";=+ c #3F494D", +">=+ c #3E4B4D", +",=+ c #3C514D", +"'=+ c #3B534F", +")=+ c #3D4952", +"!=+ c #167B8C", +"~=+ c #3B4A56", +"{=+ c #433F4A", +"]=+ c #41424D", +"^=+ c #42404C", +"/=+ c #41424E", +"(=+ c #433E46", +"_=+ c #177ECB", +":=+ c #007AFF", +"<=+ c #2E4D86", +"[=+ c #453F42", +"}=+ c #40424F", +"|=+ c #473B40", +"1=+ c #25567D", +"2=+ c #285F7C", +"3=+ c #473D43", +"4=+ c #42414C", +"5=+ c #1C5D8D", +"6=+ c #3B4658", +"7=+ c #43404A", +"8=+ c #3E4450", +"9=+ c #13AEBE", +"0=+ c #37636D", +"a=+ c #335663", +"b=+ c #217887", +"c=+ c #453B45", +"d=+ c #40434F", +"e=+ c #463D46", +"f=+ c #1E6882", +"g=+ c #1F627C", +"h=+ c #354F62", +"i=+ c #0C7CAC", +"j=+ c #364B5D", +"k=+ c #443F49", +"l=+ c #3F444E", +"m=+ c #07A365", +"n=+ c #365254", +"o=+ c #267D5E", +"p=+ c #11C46A", +"q=+ c #327759", +"r=+ c #413F45", +"s=+ c #374E56", +"t=+ c #06C1C8", +"u=+ c #1BD1D5", +"v=+ c #3F4D5D", +"w=+ c #41384B", +"x=+ c #403D50", +"y=+ c #3E3656", +"z=+ c #46801F", +"A=+ c #2A9555", +"B=+ c #0EA4AE", +"C=+ c #41434B", +"D=+ c #296C78", +"E=+ c #0F9CA8", +"F=+ c #3E4053", +"G=+ c #455342", +"H=+ c #418228", +"I=+ c #42464A", +"J=+ c #42414D", +"K=+ c #199755", +"L=+ c #12AD65", +"M=+ c #159F60", +"N=+ c #A4A7A9", +"O=+ c #E5DAE0", +"P=+ c #65CB86", +"Q=+ c #29DD63", +"R=+ c #B5CDBD", +"S=+ c #DBD5D9", +"T=+ c #D2D3D2", +"U=+ c #818188", +"V=+ c #44444F", +"W=+ c #4C4C57", +"X=+ c #9EA2A1", +"Y=+ c #B3A0A7", +"Z=+ c #62E2B5", +"`=+ c #03FDA5", +" -+ c #00FFA4", +".-+ c #01FEA4", +"+-+ c #27F2AB", +"@-+ c #554E5C", +"#-+ c #41434D", +"$-+ c #3D4E4D", +"%-+ c #3D4D4E", +"&-+ c #3F494E", +"*-+ c #3D4F4E", +"=-+ c #3A564E", +"--+ c #3C514E", +";-+ c #3B534E", +">-+ c #395B4F", +",-+ c #41444E", +"'-+ c #3D5050", +")-+ c #3D4E4F", +"!-+ c #3E4B4F", +"~-+ c #197987", +"{-+ c #3A4C58", +"]-+ c #42434C", +"^-+ c #40464F", +"/-+ c #41414E", +"(-+ c #44434A", +"_-+ c #145CB6", +":-+ c #0666E5", +"<-+ c #365885", +"[-+ c #443D43", +"}-+ c #414250", +"|-+ c #414450", +"1-+ c #453745", +"2-+ c #31777E", +"3-+ c #20779D", +"4-+ c #443B44", +"5-+ c #365F6D", +"6-+ c #404551", +"7-+ c #463F46", +"8-+ c #235780", +"9-+ c #2E506F", +"0-+ c #453F47", +"a-+ c #41424F", +"b-+ c #41454F", +"c-+ c #05E4F0", +"d-+ c #219AAB", +"e-+ c #1A8494", +"f-+ c #423E4B", +"g-+ c #404F58", +"h-+ c #0BBECA", +"i-+ c #01ABD9", +"j-+ c #395C6E", +"k-+ c #1178A4", +"l-+ c #275D7A", +"m-+ c #453D47", +"n-+ c #45404C", +"o-+ c #216861", +"p-+ c #0E9762", +"q-+ c #385A4F", +"r-+ c #355A56", +"s-+ c #26775E", +"t-+ c #4A2F47", +"u-+ c #404752", +"v-+ c #127B81", +"w-+ c #2B5A64", +"x-+ c #473744", +"y-+ c #42404A", +"z-+ c #43474C", +"A-+ c #433D51", +"B-+ c #3F6338", +"C-+ c #3D6D24", +"D-+ c #335A68", +"E-+ c #0AB0AF", +"F-+ c #38545D", +"G-+ c #345764", +"H-+ c #0AA1B1", +"I-+ c #38585F", +"J-+ c #487D24", +"K-+ c #425841", +"L-+ c #423D50", +"M-+ c #42434D", +"N-+ c #45394D", +"O-+ c #08C65D", +"P-+ c #36524B", +"Q-+ c #287759", +"R-+ c #09C069", +"S-+ c #355750", +"T-+ c #453D4D", +"U-+ c #C9CACA", +"V-+ c #DCD8DA", +"W-+ c #BDCDC2", +"X-+ c #2BDA64", +"Y-+ c #5DCE82", +"Z-+ c #DBD1D7", +"`-+ c #D2D4D2", +" ;+ c #575761", +".;+ c #3B3B48", +"+;+ c #7D8184", +"@;+ c #B8A5AB", +"#;+ c #61E0B5", +"$;+ c #00FFA7", +"%;+ c #03FDA8", +"&;+ c #01FEA8", +"*;+ c #26F1AD", +"=;+ c #3E4A4E", +"-;+ c #3F474E", +";;+ c #3E4C4E", +">;+ c #40474E", +",;+ c #40464E", +"';+ c #3F484E", +");+ c #395950", +"!;+ c #40454F", +"~;+ c #197B87", +"{;+ c #433F4B", +"];+ c #41414F", +"^;+ c #464348", +"/;+ c #243E78", +"(;+ c #224685", +"_;+ c #474245", +":;+ c #40414F", +"<;+ c #453844", +"[;+ c #2F7381", +"};+ c #05CFF7", +"|;+ c #1477AA", +"1;+ c #1789A7", +"2;+ c #02E6FF", +"3;+ c #188DBF", +"4;+ c #453C46", +"5;+ c #454049", +"6;+ c #2E4F6D", +"7;+ c #225984", +"8;+ c #463E46", +"9;+ c #443E49", +"0;+ c #2E6072", +"a;+ c #217189", +"b;+ c #463A45", +"c;+ c #1B8292", +"d;+ c #38515E", +"e;+ c #463B46", +"f;+ c #3B4A57", +"g;+ c #01CFE9", +"h;+ c #10D7F5", +"i;+ c #3C5B6A", +"j;+ c #463841", +"k;+ c #1D6B8F", +"l;+ c #177098", +"m;+ c #424049", +"n;+ c #463C4C", +"o;+ c #28635A", +"p;+ c #20695E", +"q;+ c #315F4E", +"r;+ c #257550", +"s;+ c #49334C", +"t;+ c #1D8D65", +"u;+ c #3E4952", +"v;+ c #1C6D76", +"w;+ c #226670", +"x;+ c #414150", +"y;+ c #403F50", +"z;+ c #3C3454", +"A;+ c #404E44", +"B;+ c #3D7E20", +"C;+ c #444748", +"D;+ c #3C4856", +"E;+ c #0DACAA", +"F;+ c #2C6B72", +"G;+ c #3F4651", +"H;+ c #0B9BB3", +"I;+ c #328F56", +"J;+ c #48672B", +"K;+ c #413C53", +"L;+ c #42414E", +"M;+ c #1B9655", +"N;+ c #394C4E", +"O;+ c #0BBE6A", +"P;+ c #21835A", +"Q;+ c #473D4E", +"R;+ c #75757C", +"S;+ c #DFD3DB", +"T;+ c #72CD8F", +"U;+ c #22DC5E", +"V;+ c #AECEB9", +"W;+ c #DBD3D9", +"X;+ c #D8DAD8", +"Y;+ c #B2B2B5", +"Z;+ c #575B62", +"`;+ c #B4A1A7", +" >+ c #61E1B8", +".>+ c #00FFAB", +"+>+ c #03FDAC", +"@>+ c #00FFAC", +"#>+ c #01FEAC", +"$>+ c #00FFAA", +"%>+ c #2FFAB8", +"&>+ c #635D68", +"*>+ c #43424E", +"=>+ c #41474E", +"->+ c #3D514F", +";>+ c #42444E", +">>+ c #404B4E", +",>+ c #3C544F", +"'>+ c #3C554F", +")>+ c #3F4B4F", +"!>+ c #3F4D4F", +"~>+ c #3E4E50", +"{>+ c #43414D", +"]>+ c #188087", +"^>+ c #395259", +"/>+ c #453E4B", +"(>+ c #404850", +"_>+ c #42434E", +":>+ c #41434F", +"<>+ c #484045", +"[>+ c #203A76", +"}>+ c #2D3E68", +"|>+ c #464349", +"1>+ c #42424F", +"2>+ c #423F4C", +"3>+ c #3D5262", +"4>+ c #473C44", +"5>+ c #2A778A", +"6>+ c #02F1FF", +"7>+ c #06D1F0", +"8>+ c #395266", +"9>+ c #463E47", +"0>+ c #3C4759", +"a>+ c #1C5D8E", +"b>+ c #1C758E", +"c>+ c #404552", +"d>+ c #247381", +"e>+ c #2F6371", +"f>+ c #443F4A", +"g>+ c #165E77", +"h>+ c #26607D", +"i>+ c #405561", +"j>+ c #464049", +"k>+ c #2E5770", +"l>+ c #0C7DAA", +"m>+ c #3F4356", +"n>+ c #385251", +"o>+ c #157A5F", +"p>+ c #443F4B", +"q>+ c #395B5F", +"r>+ c #0BD295", +"s>+ c #306953", +"t>+ c #287D54", +"u>+ c #169266", +"v>+ c #188167", +"w>+ c #415249", +"x>+ c #424D49", +"y>+ c #404E4A", +"z>+ c #455047", +"A>+ c #79A824", +"B>+ c #4C9B12", +"C>+ c #405142", +"D>+ c #433E51", +"E>+ c #43424B", +"F>+ c #149D9E", +"G>+ c #1F898B", +"H>+ c #443A4B", +"I>+ c #119DA4", +"J>+ c #27916F", +"K>+ c #474044", +"L>+ c #414350", +"M>+ c #463A4D", +"N>+ c #2B7151", +"O>+ c #09C65D", +"P>+ c #34594D", +"Q>+ c #1C9761", +"R>+ c #0EB065", +"S>+ c #40494F", +"T>+ c #A3A4A7", +"U>+ c #D1D2D2", +"V>+ c #D9D6D8", +"W>+ c #C2CCC5", +"X>+ c #32DA68", +"Y>+ c #57D480", +"Z>+ c #D5CED3", +"`>+ c #DEDFDD", +" ,+ c #8B8C91", +".,+ c #454550", +"+,+ c #9C8991", +"@,+ c #66E6BE", +"#,+ c #00FFAF", +"$,+ c #03FDB0", +"%,+ c #00FFB0", +"&,+ c #02FEB0", +"*,+ c #00FFAD", +"=,+ c #34FFBF", +"-,+ c #8A848A", +";,+ c #444450", +">,+ c #43424F", +",,+ c #42434F", +"',+ c #41484F", +"),+ c #43414E", +"!,+ c #42454F", +"~,+ c #3F4C4F", +"{,+ c #404950", +"],+ c #3C5453", +"^,+ c #188386", +"/,+ c #3B4D58", +"(,+ c #44404C", +"_,+ c #424350", +":,+ c #44404A", +"<,+ c #3C5063", +"[,+ c #0972D2", +"},+ c #2C4B7F", +"|,+ c #474146", +"1,+ c #43414C", +"2,+ c #453A47", +"3,+ c #37656D", +"4,+ c #03E8F7", +"5,+ c #02C3EE", +"6,+ c #2B8297", +"7,+ c #463843", +"8,+ c #1C5E8E", +"9,+ c #384C62", +"0,+ c #45414B", +"a,+ c #424450", +"b,+ c #473E48", +"c,+ c #2A6175", +"d,+ c #2B6277", +"e,+ c #365965", +"f,+ c #1D8090", +"g,+ c #186074", +"h,+ c #29596D", +"i,+ c #483D46", +"j,+ c #433E4A", +"k,+ c #424451", +"l,+ c #44414C", +"m,+ c #3C4959", +"n,+ c #0D7BAB", +"o,+ c #285F75", +"p,+ c #197653", +"q,+ c #365555", +"r,+ c #493447", +"s,+ c #317570", +"t,+ c #00FFB5", +"u,+ c #20A566", +"v,+ c #1F8553", +"w,+ c #0EA75E", +"x,+ c #36763F", +"y,+ c #357D39", +"z,+ c #3A7F36", +"A,+ c #3B7932", +"B,+ c #4F8F27", +"C,+ c #A2FF00", +"D,+ c #7ADB10", +"E,+ c #434350", +"F,+ c #42444F", +"G,+ c #463C48", +"H,+ c #208689", +"I,+ c #129DA1", +"J,+ c #484643", +"K,+ c #1FA382", +"L,+ c #198A97", +"M,+ c #453D4B", +"N,+ c #1C9656", +"O,+ c #2E6955", +"P,+ c #09C46B", +"Q,+ c #2C6653", +"R,+ c #4B4152", +"S,+ c #C5C7C7", +"T,+ c #E1D5DD", +"U,+ c #82D09B", +"V,+ c #1DDB5B", +"W,+ c #A0CBAE", +"X,+ c #E2D8DE", +"Y,+ c #5C5F67", +"Z,+ c #3C3C49", +"`,+ c #393D49", +" '+ c #73606D", +".'+ c #69E8C2", +"+'+ c #00FFB2", +"@'+ c #03FDB3", +"#'+ c #00FFB3", +"$'+ c #02FEB4", +"%'+ c #00FFB1", +"&'+ c #2EF9BD", +"*'+ c #A9A2A5", +"='+ c #494A55", +"-'+ c #41464F", +";'+ c #41474F", +">'+ c #3E4F51", +",'+ c #3D5150", +"''+ c #3D5250", +")'+ c #3E5050", +"!'+ c #43404E", +"~'+ c #3F4D51", +"{'+ c #198285", +"]'+ c #43454E", +"^'+ c #414750", +"/'+ c #404951", +"('+ c #414451", +"_'+ c #473B41", +":'+ c #1F78AF", +"<'+ c #0090FF", +"['+ c #116BD5", +"}'+ c #44434D", +"|'+ c #44444E", +"1'+ c #198AAE", +"2'+ c #0894C7", +"3'+ c #3E5461", +"4'+ c #433F4C", +"5'+ c #474148", +"6'+ c #25557F", +"7'+ c #2E4A6E", +"8'+ c #483E45", +"9'+ c #44414D", +"0'+ c #3D4856", +"a'+ c #375562", +"b'+ c #067E90", +"c'+ c #2D5262", +"d'+ c #46414C", +"e'+ c #414551", +"f'+ c #43414B", +"g'+ c #1A6D9A", +"h'+ c #068592", +"i'+ c #2E5D4E", +"j'+ c #473E4F", +"k'+ c #3A645B", +"l'+ c #3A585F", +"m'+ c #15726B", +"n'+ c #198C6C", +"o'+ c #3B4F56", +"p'+ c #443C4F", +"q'+ c #42414F", +"r'+ c #42404F", +"s'+ c #568534", +"t'+ c #5B7740", +"u'+ c #42464F", +"v'+ c #473D47", +"w'+ c #2C6D72", +"x'+ c #0AAAB2", +"y'+ c #4B7F2A", +"z'+ c #2A8F6C", +"A'+ c #0F95AB", +"B'+ c #404650", +"C'+ c #463B4E", +"D'+ c #2E6750", +"E'+ c #13B169", +"F'+ c #109057", +"G'+ c #6E6874", +"H'+ c #DDDEDD", +"I'+ c #D4D5D4", +"J'+ c #D8D6D7", +"K'+ c #C8CDCA", +"L'+ c #34D569", +"M'+ c #53DB7F", +"N'+ c #C0BBC0", +"O'+ c #3F444F", +"P'+ c #544152", +"Q'+ c #56D5B3", +"R'+ c #00FFBA", +"S'+ c #02FDB7", +"T'+ c #00FFB7", +"U'+ c #02FEB8", +"V'+ c #00FFB6", +"W'+ c #2BF7BE", +"X'+ c #B2ACAC", +"Y'+ c #6D6E74", +"Z'+ c #454551", +"`'+ c #44424F", +" )+ c #414B51", +".)+ c #434550", +"+)+ c #434650", +"@)+ c #424750", +"#)+ c #3F4F51", +"$)+ c #3F4E51", +"%)+ c #3F5052", +"&)+ c #3E5353", +"*)+ c #3F4F52", +"=)+ c #168A8A", +"-)+ c #355B62", +";)+ c #414C4F", +">)+ c #424550", +",)+ c #414A52", +"')+ c #44434F", +"))+ c #43444F", +"!)+ c #424452", +"~)+ c #484145", +"{)+ c #275994", +"])+ c #005DDD", +"^)+ c #2668AE", +"/)+ c #46434B", +"()+ c #434450", +"_)+ c #45414D", +":)+ c #43404F", +"<)+ c #136A9B", +"[)+ c #384A60", +"})+ c #45434D", +"|)+ c #463F4A", +"1)+ c #33586E", +"2)+ c #1689B0", +"3)+ c #444452", +"4)+ c #44434E", +"5)+ c #434451", +"6)+ c #424652", +"7)+ c #483C47", +"8)+ c #266B7F", +"9)+ c #0AB2BA", +"0)+ c #366C77", +"a)+ c #4A3544", +"b)+ c #473E4D", +"c)+ c #45404E", +"d)+ c #424551", +"e)+ c #4A3C49", +"f)+ c #1E6E80", +"g)+ c #0686A8", +"h)+ c #424454", +"i)+ c #44404E", +"j)+ c #127F66", +"k)+ c #31595A", +"l)+ c #346757", +"m)+ c #287555", +"n)+ c #4B344A", +"o)+ c #444350", +"p)+ c #453F4F", +"q)+ c #453E50", +"r)+ c #413255", +"s)+ c #3F3454", +"t)+ c #423E53", +"u)+ c #443650", +"v)+ c #355465", +"w)+ c #0EBCA8", +"x)+ c #3D7E47", +"y)+ c #34616A", +"z)+ c #0BA2B1", +"A)+ c #3B515D", +"B)+ c #46404C", +"C)+ c #12B05A", +"D)+ c #1D9756", +"E)+ c #24895E", +"F)+ c #02B15F", +"G)+ c #93ACA3", +"H)+ c #E2DCDE", +"I)+ c #D3D5D4", +"J)+ c #E0D5DD", +"K)+ c #84CA9B", +"L)+ c #28E765", +"M)+ c #578F6E", +"N)+ c #443A4E", +"O)+ c #424651", +"P)+ c #4B384A", +"Q)+ c #43C2A5", +"R)+ c #00FFC1", +"S)+ c #01FCBA", +"T)+ c #00FFBB", +"U)+ c #02FEBB", +"V)+ c #2CF8C2", +"W)+ c #ADA7A8", +"X)+ c #909192", +"Y)+ c #454651", +"Z)+ c #404C51", +"`)+ c #424851", +" !+ c #3D5754", +".!+ c #168D89", +"+!+ c #336165", +"@!+ c #444250", +"#!+ c #45444E", +"$!+ c #414254", +"%!+ c #11439E", +"&!+ c #3C445A", +"*!+ c #46424C", +"=!+ c #1A6794", +"-!+ c #285C7C", +";!+ c #46444D", +">!+ c #473846", +",!+ c #2F7F86", +"'!+ c #00DFFF", +")!+ c #20719D", +"!!+ c #483B43", +"~!+ c #46414E", +"{!+ c #424752", +"]!+ c #424A55", +"^!+ c #13787C", +"/!+ c #148190", +"(!+ c #0AEDEF", +"_!+ c #0BC0C3", +":!+ c #276D6C", +"~+ c #345A5F", +",~+ c #28726A", +"'~+ c #1F8168", +")~+ c #207D5A", +"!~+ c #14C491", +"~~+ c #02D075", +"{~+ c #316253", +"]~+ c #1573A5", +"^~+ c #216A89", +"/~+ c #483F51", +"(~+ c #276A57", +"_~+ c #1B765B", +":~+ c #464351", +"<~+ c #3F4F5B", +"[~+ c #04F7CE", +"}~+ c #15B67D", +"|~+ c #2D754E", +"1~+ c #317D50", +"2~+ c #397249", +"3~+ c #3C7145", +"4~+ c #417342", +"5~+ c #45733D", +"6~+ c #486D3B", +"7~+ c #435B41", +"8~+ c #8FAD1C", +"9~+ c #49E17F", +"0~+ c #1D9293", +"a~+ c #0F9EAB", +"b~+ c #277380", +"c~+ c #473D49", +"d~+ c #14AF5B", +"e~+ c #179D56", +"f~+ c #28B373", +"g~+ c #41D88E", +"h~+ c #CCD1CF", +"i~+ c #D9D7D8", +"j~+ c #D6D5D5", +"k~+ c #D3D5D3", +"l~+ c #E2D7DE", +"m~+ c #8EC9A2", +"n~+ c #04C445", +"o~+ c #2E6F4B", +"p~+ c #473C51", +"q~+ c #444451", +"r~+ c #4D3A4B", +"s~+ c #44C4AA", +"t~+ c #00FFC9", +"u~+ c #01FCC1", +"v~+ c #00FFC2", +"w~+ c #02FEC3", +"x~+ c #2DF8C8", +"y~+ c #A8A2A3", +"z~+ c #87878A", +"A~+ c #444551", +"B~+ c #454450", +"C~+ c #424A53", +"D~+ c #424C53", +"E~+ c #414F54", +"F~+ c #434952", +"G~+ c #178C81", +"H~+ c #346163", +"I~+ c #483F4D", +"J~+ c #434752", +"K~+ c #424B53", +"L~+ c #454350", +"M~+ c #45444F", +"N~+ c #414457", +"O~+ c #133F99", +"P~+ c #384363", +"Q~+ c #47454D", +"R~+ c #444652", +"S~+ c #483E49", +"T~+ c #335C70", +"U~+ c #04B5DA", +"V~+ c #306A84", +"W~+ c #473F4A", +"X~+ c #45434F", +"Y~+ c #493C45", +"Z~+ c #483F49", +"`~+ c #375765", +" {+ c #1C7E85", +".{+ c #19B3B5", +"+{+ c #09AFA3", +"@{+ c #286567", +"#{+ c #4F3845", +"${+ c #2B6275", +"%{+ c #2B6177", +"&{+ c #4B3843", +"*{+ c #493D4C", +"={+ c #46424F", +"-{+ c #12CA83", +";{+ c #0EF393", +">{+ c #445755", +",{+ c #20648A", +"'{+ c #146F9B", +"){+ c #4A3646", +"!{+ c #325D51", +"~{+ c #148058", +"{{+ c #434851", +"]{+ c #464250", +"^{+ c #444550", +"/{+ c #366D63", +"({+ c #434D58", +"_{+ c #463F51", +":{+ c #463D52", +"<{+ c #453D52", +"[{+ c #453D53", +"}{+ c #443D53", +"|{+ c #443E54", +"1{+ c #423E56", +"2{+ c #43374C", +"3{+ c #258583", +"4{+ c #10A3A6", +"5{+ c #17909E", +"6{+ c #1D8593", +"7{+ c #473F4B", +"8{+ c #444552", +"9{+ c #444651", +"0{+ c #483D50", +"a{+ c #2B7152", +"b{+ c #12C361", +"c{+ c #41C582", +"d{+ c #29D985", +"e{+ c #9BCEB5", +"f{+ c #E2D8DD", +"g{+ c #D4D6D5", +"h{+ c #DFDFDE", +"i{+ c #A2A0A5", +"j{+ c #0D9C40", +"k{+ c #13B24A", +"l{+ c #454451", +"m{+ c #44C4AC", +"n{+ c #00FFCD", +"o{+ c #01FCC5", +"p{+ c #00FFC7", +"q{+ c #00FFC6", +"r{+ c #2DF8CB", +"s{+ c #989999", +"t{+ c #9E9E9D", +"u{+ c #575760", +"v{+ c #424B52", +"w{+ c #444752", +"x{+ c #444650", +"y{+ c #424A54", +"z{+ c #0DB5AA", +"A{+ c #346669", +"B{+ c #493B49", +"C{+ c #424456", +"D{+ c #123B98", +"E{+ c #32426D", +"F{+ c #48454C", +"G{+ c #16D0D4", +"H{+ c #06F6FF", +"I{+ c #03B7F2", +"J{+ c #3E5264", +"K{+ c #434754", +"L{+ c #48404B", +"M{+ c #45424E", +"N{+ c #0ADFDF", +"O{+ c #03F9EC", +"P{+ c #405E68", +"Q{+ c #473D4A", +"R{+ c #3F4A57", +"S{+ c #1B7C94", +"T{+ c #424B57", +"U{+ c #473F4F", +"V{+ c #434A4F", +"W{+ c #405557", +"X{+ c #4B3847", +"Y{+ c #2D6478", +"Z{+ c #01C8DF", +"`{+ c #1BA3B0", +" ]+ c #177F59", +".]+ c #3B514F", +"+]+ c #474151", +"@]+ c #483B4C", +"#]+ c #45424F", +"$]+ c #454650", +"%]+ c #444751", +"&]+ c #493E4A", +"*]+ c #2F6871", +"=]+ c #0BB2B0", +"-]+ c #3D505A", +";]+ c #217F8C", +">]+ c #1495A2", +",]+ c #464552", +"']+ c #2ABE6D", +")]+ c #34D47B", +"!]+ c #2AD281", +"~]+ c #5FD19A", +"{]+ c #DDD5D9", +"]]+ c #DEE1DE", +"^]+ c #746A7A", +"/]+ c #2A5943", +"(]+ c #0BCA4B", +"_]+ c #2A774A", +":]+ c #493C51", +"<]+ c #434753", +"[]+ c #44C4AE", +"}]+ c #00FFD1", +"|]+ c #01FCC9", +"1]+ c #00FFCA", +"2]+ c #02FECA", +"3]+ c #2DF8CE", +"4]+ c #A8A1A3", +"5]+ c #969897", +"6]+ c #7A7A7F", +"7]+ c #3F3F4C", +"8]+ c #464653", +"9]+ c #444754", +"0]+ c #493846", +"a]+ c #2998A0", +"b]+ c #11CEC6", +"c]+ c #444954", +"d]+ c #46454F", +"e]+ c #434353", +"f]+ c #0D41AB", +"g]+ c #35426A", +"h]+ c #4A4548", +"i]+ c #444553", +"j]+ c #454552", +"k]+ c #47404C", +"l]+ c #11C2D7", +"m]+ c #00BBF3", +"n]+ c #0D9FD6", +"o]+ c #415C6A", +"p]+ c #444653", +"q]+ c #444753", +"r]+ c #473F4D", +"s]+ c #38676F", +"t]+ c #39757D", +"u]+ c #493F4A", +"v]+ c #236D84", +"w]+ c #32576B", +"x]+ c #4B3A46", +"y]+ c #434854", +"z]+ c #454351", +"A]+ c #454352", +"B]+ c #473C48", +"C]+ c #1CB6BA", +"D]+ c #06FFFF", +"E]+ c #12ACCA", +"F]+ c #48404D", +"G]+ c #47414E", +"H]+ c #3A5760", +"I]+ c #0BB2B1", +"J]+ c #34646B", +"K]+ c #2E6977", +"L]+ c #0CA2B0", +"M]+ c #3E4E5B", +"N]+ c #655A6B", +"O]+ c #88CBA6", +"P]+ c #28DB76", +"Q]+ c #2FCD7D", +"R]+ c #34D588", +"S]+ c #BBD0C6", +"T]+ c #DDD8DA", +"U]+ c #C2C2C4", +"V]+ c #484954", +"W]+ c #453E4F", +"X]+ c #1A9D49", +"Y]+ c #0FB749", +"Z]+ c #3E4A4D", +"`]+ c #464352", +" ^+ c #464651", +".^+ c #444853", +"+^+ c #4E3B4B", +"@^+ c #45C4B0", +"#^+ c #00FFD5", +"$^+ c #01FCCC", +"%^+ c #00FFCE", +"&^+ c #02FECE", +"*^+ c #2DF8D1", +"=^+ c #A7A1A2", +"-^+ c #979898", +";^+ c #9A9B9B", +">^+ c #4E4E59", +",^+ c #464652", +"'^+ c #454652", +")^+ c #464551", +"!^+ c #454854", +"~^+ c #4A3A46", +"{^+ c #21A8AD", +"]^+ c #00E3D4", +"^^+ c #14DED8", +"/^+ c #45505B", +"(^+ c #46434F", +"_^+ c #454654", +":^+ c #494248", +"<^+ c #2C5F99", +"[^+ c #0075FF", +"}^+ c #1152D3", +"|^+ c #424559", +"1^+ c #464650", +"2^+ c #454653", +"3^+ c #47424D", +"4^+ c #405062", +"5^+ c #1383BB", +"6^+ c #1378AD", +"7^+ c #454752", +"8^+ c #483E4B", +"9^+ c #483C48", +"0^+ c #48414D", +"a^+ c #385766", +"b^+ c #12AFBD", +"c^+ c #3E5C67", +"d^+ c #4C3B49", +"e^+ c #444953", +"f^+ c #46424D", +"g^+ c #0FD8DC", +"h^+ c #08EEFB", +"i^+ c #07BFE6", +"j^+ c #11D2EC", +"k^+ c #454D57", +"l^+ c #464350", +"m^+ c #464450", +"n^+ c #424955", +"o^+ c #0FA9A8", +"p^+ c #287C80", +"q^+ c #385966", +"r^+ c #0AA7B5", +"s^+ c #365C68", +"t^+ c #49414D", +"u^+ c #454753", +"v^+ c #474753", +"w^+ c #ADACB0", +"x^+ c #42D482", +"y^+ c #27D475", +"z^+ c #26D481", +"A^+ c #85CFAB", +"B^+ c #E2D7DC", +"C^+ c #D4D4D5", +"D^+ c #74747C", +"E^+ c #4B4255", +"F^+ c #345D4B", +"G^+ c #09C749", +"H^+ c #258049", +"I^+ c #493D52", +"J^+ c #454751", +"K^+ c #45C4B2", +"L^+ c #00FFD9", +"M^+ c #01FCD0", +"N^+ c #00FFD2", +"O^+ c #02FED2", +"P^+ c #2DF8D4", +"Q^+ c #A6A0A1", +"R^+ c #969797", +"S^+ c #9F9F9E", +"T^+ c #3F3F4D", +"U^+ c #48414F", +"V^+ c #3B555D", +"W^+ c #0AA89B", +"X^+ c #3C6D76", +"Y^+ c #483E4C", +"Z^+ c #48434A", +"`^+ c #136BD3", +" /+ c #045EE9", +"./+ c #035BF4", +"+/+ c #39527F", +"@/+ c #484349", +"#/+ c #49414B", +"$/+ c #414555", +"%/+ c #0E6FAC", +"&/+ c #374F67", +"*/+ c #48434D", +"=/+ c #454754", +"-/+ c #493C49", +";/+ c #377079", +">/+ c #0FA9B3", +",/+ c #2A6567", +"'/+ c #365B5D", +")/+ c #434852", +"!/+ c #494051", +"~/+ c #493E53", +"{/+ c #4D3446", +"]/+ c #1C9C9E", +"^/+ c #00C6F0", +"//+ c #03B2DB", +"(/+ c #3195A4", +"_/+ c #483F4B", +":/+ c #48414E", +"(+ c #483E52", +",(+ c #454954", +"'(+ c #4F3C4B", +")(+ c #45C5B6", +"!(+ c #00FFE1", +"~(+ c #01FCD7", +"{(+ c #02FED9", +"](+ c #2DF8DA", +"^(+ c #A59FA0", +"/(+ c #959696", +"((+ c #9C9C9B", +"_(+ c #62626A", +":(+ c #484853", +"<(+ c #464753", +"[(+ c #474652", +"}(+ c #4B3D48", +"|(+ c #49404B", +"1(+ c #4B4048", +"2(+ c #464853", +"3(+ c #4B414E", +"4(+ c #1E797C", +"5(+ c #4A4451", +"6(+ c #464752", +"7(+ c #474751", +"8(+ c #464553", +"9(+ c #10389E", +"0(+ c #364166", +"a(+ c #4A474B", +"b(+ c #464754", +"c(+ c #4B434B", +"d(+ c #2D5A7C", +"e(+ c #136EA6", +"f(+ c #4A3C48", +"g(+ c #4B414F", +"h(+ c #4A414F", +"i(+ c #444B54", +"j(+ c #3A5451", +"k(+ c #20995E", +"l(+ c #20B853", +"m(+ c #3B4C6A", +"n(+ c #0985B3", +"o(+ c #335A71", +"p(+ c #4A434D", +"q(+ c #464854", +"r(+ c #4A404D", +"s(+ c #33676F", +"t(+ c #0AB3B1", +"u(+ c #3B5962", +"v(+ c #1E8693", +"w(+ c #16929F", +"x(+ c #474450", +"y(+ c #494954", +"z(+ c #76767E", +"A(+ c #E2D7DD", +"B(+ c #8ECDA9", +"C(+ c #1BD96E", +"D(+ c #1BD275", +"E(+ c #69CD9E", +"F(+ c #E9E0E3", +"G(+ c #A2A5A8", +"H(+ c #484854", +"I(+ c #493F52", +"J(+ c #1F8F49", +"K(+ c #0BC149", +"L(+ c #3B554E", +"M(+ c #494354", +"N(+ c #464852", +"O(+ c #454955", +"P(+ c #4F3C4C", +"Q(+ c #45C5B8", +"R(+ c #00FFE5", +"S(+ c #01FCDB", +"T(+ c #02FEDD", +"U(+ c #2CF8DD", +"V(+ c #A49E9F", +"W(+ c #949595", +"X(+ c #9A9A99", +"Y(+ c #838386", +"Z(+ c #474653", +"`(+ c #464855", +" _+ c #454856", +"._+ c #464755", +"+_+ c #484450", +"@_+ c #2395AA", +"#_+ c #0EB0DF", +"$_+ c #296F9A", +"%_+ c #474551", +"&_+ c #4B4350", +"*_+ c #1F747B", +"=_+ c #286B74", +"-_+ c #464654", +";_+ c #43465A", +">_+ c #11389C", +",_+ c #33426E", +"'_+ c #4A484F", +")_+ c #484551", +"!_+ c #3F4C5E", +"~_+ c #0E72AF", +"{_+ c #385069", +"]_+ c #4A444F", +"^_+ c #464956", +"/_+ c #4B3F53", +"(_+ c #2A995A", +"__+ c #445F58", +":_+ c #3E4B61", +"<_+ c #0B84B3", +"[_+ c #296482", +"}_+ c #4B424D", +"|_+ c #494350", +"1_+ c #3D555F", +"2_+ c #306D73", +"3_+ c #297381", +"4_+ c #0F9FAC", +"5_+ c #434B58", +"6_+ c #484552", +"7_+ c #484855", +"8_+ c #41D380", +"9_+ c #12D86D", +"0_+ c #39D087", +"a_+ c #C2D1CA", +"b_+ c #605C69", +"c_+ c #3C534F", +"d_+ c #0DC04A", +"e_+ c #1E924A", +"f_+ c #484053", +"g_+ c #45C5BA", +"h_+ c #00FFE9", +"i_+ c #01FCDF", +"j_+ c #02FEE1", +"k_+ c #2CF8E0", +"l_+ c #A49E9E", +"m_+ c #939594", +"n_+ c #575762", +"o_+ c #434351", +"p_+ c #4A404B", +"q_+ c #4B3E4A", +"r_+ c #4B404A", +"s_+ c #4B4149", +"t_+ c #484652", +"u_+ c #494650", +"v_+ c #4A454E", +"w_+ c #4B454E", +"x_+ c #494751", +"y_+ c #4B3C48", +"z_+ c #2C8495", +"A_+ c #01BDF2", +"B_+ c #00B1FF", +"C_+ c #1F77B2", +"D_+ c #4B4249", +"E_+ c #464856", +"F_+ c #484654", +"G_+ c #177984", +"H_+ c #4B424F", +"I_+ c #484752", +"J_+ c #444659", +"K_+ c #4B484E", +"L_+ c #464655", +"M_+ c #49444E", +"N_+ c #196A9E", +"O_+ c #24608A", +"P_+ c #4B434C", +"Q_+ c #474654", +"R_+ c #4B3953", +"S_+ c #484151", +"T_+ c #434A57", +"U_+ c #117DA9", +"V_+ c #1F6F92", +"W_+ c #49444F", +"X_+ c #11A6A5", +"Y_+ c #258387", +"Z_+ c #34616F", +"`_+ c #0AA7B4", +" :+ c #3A5865", +".:+ c #494956", +"+:+ c #3C3C4A", +"@:+ c #83838A", +"#:+ c #8ECCA9", +"$:+ c #11D969", +"%:+ c #22DC7C", +"&:+ c #53937A", +"*:+ c #473D50", +"=:+ c #474954", +"-:+ c #464953", +";:+ c #4A3E54", +">:+ c #24874B", +",:+ c #0AC649", +"':+ c #365C4D", +"):+ c #4A4255", +"!:+ c #464A56", +"~:+ c #503D4C", +"{:+ c #45C5BC", +"]:+ c #01FCE2", +"^:+ c #00FFE4", +"/:+ c #02FEE4", +"(:+ c #2CF8E3", +"_:+ c #A39D9E", +"::+ c #939494", +"<:+ c #77777C", +"[:+ c #494955", +"}:+ c #474956", +"|:+ c #4B404C", +"1:+ c #346D82", +"2:+ c #14A6CC", +"3:+ c #1695CA", +"4:+ c #2E678F", +"5:+ c #4A444E", +"6:+ c #4B464E", +"7:+ c #4B464F", +"8:+ c #4A4650", +"9:+ c #43495A", +"0:+ c #3C4C64", +"a:+ c #35506F", +"b:+ c #2E537A", +"c:+ c #245787", +"d:+ c #1D578F", +"e:+ c #077BBD", +"f:+ c #0894C8", +"g:+ c #098ECA", +"h:+ c #009CFC", +"i:+ c #18A5DE", +"j:+ c #494750", +"k:+ c #474755", +"l:+ c #474854", +"m:+ c #494652", +"n:+ c #444C59", +"o:+ c #147989", +"p:+ c #3C5562", +"q:+ c #4A4551", +"r:+ c #474855", +"s:+ c #484852", +"t:+ c #454759", +"u:+ c #11399E", +"v:+ c #2B407C", +"w:+ c #4C494E", +"x:+ c #4C444D", +"y:+ c #2E5B7D", +"z:+ c #146FA7", +"A:+ c #464B54", +"B:+ c #494651", +"C:+ c #1A759C", +"D:+ c #1679A3", +"E:+ c #484753", +"F:+ c #474955", +"G:+ c #4A414E", +"H:+ c #1E8F92", +"I:+ c #189D9D", +"J:+ c #3A5966", +"K:+ c #0CA6B4", +"L:+ c #306A76", +"M:+ c #4B424E", +"N:+ c #50505B", +"O:+ c #3AD07C", +"P:+ c #0ADD6B", +"Q:+ c #1D9660", +"R:+ c #484452", +"S:+ c #4A4555", +"T:+ c #3F504F", +"U:+ c #1D9A4A", +"V:+ c #494253", +"W:+ c #454A56", +"X:+ c #45C5BE", +"Y:+ c #00FFF1", +"Z:+ c #01FCE6", +"`:+ c #00FFE8", +" <+ c #02FEE8", +".<+ c #2CF8E6", +"+<+ c #A29C9D", +"@<+ c #929393", +"#<+ c #55555F", +"$<+ c #4B404D", +"%<+ c #396677", +"&<+ c #01E3FD", +"*<+ c #00C1FD", +"=<+ c #00ABFF", +"-<+ c #1C76BA", +";<+ c #354B6A", +"><+ c #295480", +",<+ c #21578B", +"'<+ c #1B5A94", +")<+ c #155C9C", +"!<+ c #0F5DA1", +"~<+ c #0B5CA3", +"{<+ c #0A5BA1", +"]<+ c #0A5A9E", +"^<+ c #105491", +"/<+ c #086BAC", +"(<+ c #0093DF", +"_<+ c #07AFF7", +":<+ c #0CC3FF", +"<<+ c #2EAAC6", +"[<+ c #4B414B", +"}<+ c #464957", +"|<+ c #4A4552", +"1<+ c #3B5363", +"2<+ c #13788D", +"3<+ c #424E5D", +"4<+ c #44475A", +"5<+ c #11399F", +"6<+ c #2C407B", +"7<+ c #4C494F", +"8<+ c #474756", +"9<+ c #404D60", +"0<+ c #0F73B0", +"a<+ c #39516A", +"b<+ c #4B4550", +"c<+ c #474856", +"d<+ c #4B444E", +"e<+ c #256A8A", +"f<+ c #0F81AF", +"g<+ c #414D5D", +"h<+ c #4B404E", +"i<+ c #2A797F", +"j<+ c #0FADAC", +"k<+ c #3C5863", +"l<+ c #129CAA", +"m<+ c #257B89", +"n<+ c #4A4A57", +"o<+ c #94949A", +"p<+ c #91CEAB", +"q<+ c #05D864", +"r<+ c #0ABA62", +"s<+ c #3C5B58", +"t<+ c #4A4354", +"u<+ c #4B3F55", +"v<+ c #287F4B", +"w<+ c #0BC84A", +"x<+ c #34644D", +"y<+ c #4B4256", +"z<+ c #45C5C0", +"A<+ c #00FFF5", +"B<+ c #01FCEA", +"C<+ c #00FFEC", +"D<+ c #02FEEC", +"E<+ c #2CF8E9", +"F<+ c #A29C9C", +"G<+ c #919292", +"H<+ c #969695", +"I<+ c #474A57", +"J<+ c #4B3E4B", +"K<+ c #1CAEBE", +"L<+ c #0CF9FF", +"M<+ c #0DBFEA", +"N<+ c #03A8F0", +"O<+ c #019EFF", +"P<+ c #00A0FB", +"Q<+ c #0C66AE", +"R<+ c #0C599F", +"S<+ c #0B5A9F", +"T<+ c #0C5799", +"U<+ c #0F5593", +"V<+ c #165289", +"W<+ c #1E507E", +"X<+ c #284D73", +"Y<+ c #334C69", +"Z<+ c #414658", +"`<+ c #3C586E", +" [+ c #0C91E0", +".[+ c #12B2F8", +"+[+ c #1FC4ED", +"@[+ c #1572AC", +"#[+ c #3A465E", +"$[+ c #4B4852", +"%[+ c #4C4450", +"&[+ c #315A6D", +"*[+ c #16718B", +"=[+ c #484856", +"-[+ c #474857", +";[+ c #13399B", +">[+ c #4A454F", +",[+ c #1A6B9E", +"'[+ c #25618B", +")[+ c #4C444E", +"![+ c #2F607B", +"~[+ c #0B86B6", +"{[+ c #39556A", +"][+ c #4B4250", +"^[+ c #36646D", +"/[+ c #0BB4B2", +"([+ c #37626B", +"_[+ c #1B8E9C", +":[+ c #1B8C99", +"<[+ c #4A4450", +"[[+ c #595965", +"}[+ c #D6D6D7", +"|[+ c #BCBABD", +"1[+ c #10AD59", +"2[+ c #00D762", +"3[+ c #277A58", +"4[+ c #4C4254", +"5[+ c #494655", +"6[+ c #434B52", +"7[+ c #11B74A", +"8[+ c #18A349", +"9[+ c #474453", +"0[+ c #474B57", +"a[+ c #513E4D", +"b[+ c #46C5C2", +"c[+ c #00FFF9", +"d[+ c #01FCEE", +"e[+ c #00FFF0", +"f[+ c #02FEF0", +"g[+ c #2CF7EC", +"h[+ c #A19B9B", +"i[+ c #979796", +"j[+ c #707075", +"k[+ c #484955", +"l[+ c #484957", +"m[+ c #4A4651", +"n[+ c #10BFDB", +"o[+ c #05BAF0", +"p[+ c #0B87B8", +"q[+ c #078DCF", +"r[+ c #039BFF", +"s[+ c #11B5FE", +"t[+ c #166EA0", +"u[+ c #1C497A", +"v[+ c #274F77", +"w[+ c #314C6C", +"x[+ c #3B4B62", +"y[+ c #454959", +"z[+ c #4A4854", +"A[+ c #4C4852", +"B[+ c #4A4954", +"C[+ c #4B4650", +"D[+ c #494654", +"E[+ c #444F62", +"F[+ c #334C6A", +"G[+ c #0C64AF", +"H[+ c #155F9B", +"I[+ c #434857", +"J[+ c #484956", +"K[+ c #4D4651", +"L[+ c #27607B", +"M[+ c #1E6985", +"N[+ c #4C4753", +"O[+ c #4B4952", +"P[+ c #193B92", +"Q[+ c #2A417E", +"R[+ c #4D4A4F", +"S[+ c #484857", +"T[+ c #4D454E", +"U[+ c #2E5C7F", +"V[+ c #494855", +"W[+ c #4C4551", +"X[+ c #39576D", +"Y[+ c #305F79", +"Z[+ c #4C4550", +"`[+ c #4B4653", +" }+ c #41545F", +".}+ c #0DB0AF", +"+}+ c #2D777C", +"@}+ c #267C8A", +"#}+ c #119DAA", +"$}+ c #464C58", +"%}+ c #494754", +"&}+ c #4B4B57", +"*}+ c #A1A1A6", +"=}+ c #E1E1E0", +"-}+ c #E0E2E0", +";}+ c #7E7282", +">}+ c #00DF64", +",}+ c #0FA65A", +"'}+ c #464B56", +")}+ c #484A55", +"!}+ c #4C4156", +"~}+ c #2A794C", +"{}+ c #0ACA4A", +"]}+ c #326B4D", +"^}+ c #4C4256", +"/}+ c #464B57", +"(}+ c #513E4C", +"_}+ c #46C5C4", +":}+ c #00FFFE", +"<}+ c #01FCF2", +"[}+ c #00FFF4", +"}}+ c #02FEF4", +"|}+ c #2CF7EF", +"1}+ c #A09A9A", +"2}+ c #909191", +"3}+ c #929291", +"4}+ c #585862", +"5}+ c #4A4A56", +"6}+ c #494854", +"7}+ c #4B4954", +"8}+ c #0E83C4", +"9}+ c #006FB3", +"0}+ c #037EB9", +"a}+ c #0593E5", +"b}+ c #08AAFF", +"c}+ c #1ECDF6", +"d}+ c #425C6C", +"e}+ c #4C4953", +"f}+ c #4B4853", +"g}+ c #4A4752", +"h}+ c #4D464F", +"i}+ c #2D5175", +"j}+ c #0B6AB5", +"k}+ c #1D598C", +"l}+ c #494752", +"m}+ c #4B4854", +"n}+ c #1C6486", +"o}+ c #27617E", +"p}+ c #4B4953", +"q}+ c #183B93", +"r}+ c #2A407D", +"s}+ c #4D4A50", +"t}+ c #4B4752", +"u}+ c #3E4F64", +"v}+ c #0E74B0", +"w}+ c #3A5269", +"x}+ c #4C4651", +"y}+ c #4B4753", +"z}+ c #405061", +"A}+ c #0E83B1", +"B}+ c #256B8B", +"C}+ c #14A3A3", +"D}+ c #228B8D", +"E}+ c #2F6C7A", +"F}+ c #0CA6B3", +"G}+ c #3F5562", +"H}+ c #4B4552", +"I}+ c #65656F", +"J}+ c #484653", +"K}+ c #0EB55B", +"L}+ c #00D460", +"M}+ c #326655", +"N}+ c #4C4456", +"O}+ c #4A4856", +"P}+ c #444952", +"Q}+ c #14B14A", +"R}+ c #14AB49", +"S}+ c #454852", +"T}+ c #494856", +"U}+ c #474B58", +"V}+ c #46C5C6", +"W}+ c #01FCF5", +"X}+ c #00FEF7", +"Y}+ c #02FEF7", +"Z}+ c #2DF8F2", +"`}+ c #8F9090", +" |+ c #848486", +".|+ c #265B8C", +"+|+ c #0C5088", +"@|+ c #015896", +"#|+ c #0081DF", +"$|+ c #10C0FF", +"%|+ c #20DAFF", +"&|+ c #3994A8", +"*|+ c #484A58", +"=|+ c #484A57", +"-|+ c #4C4750", +";|+ c #265580", +">|+ c #0A6BB6", +",|+ c #26537D", +"'|+ c #4C4751", +")|+ c #4B4251", +"!|+ c #156590", +"~|+ c #35546C", +"{|+ c #4D4751", +"]|+ c #4B4A53", +"^|+ c #183C94", +"/|+ c #2B417C", +"(|+ c #4E4A50", +"_|+ c #186DA2", +":|+ c #26618A", +"<|+ c #4D454F", +"[|+ c #157CA6", +"}|+ c #1B759B", +"||+ c #4A4753", +"1|+ c #4C4350", +"2|+ c #208D90", +"3|+ c #16A1A1", +"4|+ c #346571", +"5|+ c #366470", +"6|+ c #4C4451", +"7|+ c #6D6D77", +"8|+ c #504358", +"9|+ c #2C7253", +"0|+ c #00E564", +"a|+ c #189659", +"b|+ c #4C4356", +"c|+ c #474D57", +"d|+ c #484B56", +"e|+ c #4D4157", +"f|+ c #30724E", +"g|+ c #09CB4A", +"h|+ c #2E734D", +"i|+ c #484B55", +"j|+ c #484C59", +"k|+ c #523F4D", +"l|+ c #46C6C8", +"m|+ c #01FCF9", +"n|+ c #00FFFB", +"o|+ c #01FEFB", +"p|+ c #29F4F2", +"q|+ c #9C9697", +"r|+ c #454553", +"s|+ c #494A57", +"t|+ c #4A4956", +"u|+ c #4C4954", +"v|+ c #265F90", +"w|+ c #0E5187", +"x|+ c #11436C", +"y|+ c #145D9C", +"z|+ c #2171B2", +"A|+ c #2C8AB7", +"B|+ c #426979", +"C|+ c #4B434F", +"D|+ c #1F5A8C", +"E|+ c #0A69B3", +"F|+ c #314F6F", +"G|+ c #4E4851", +"H|+ c #494B59", +"I|+ c #4A4855", +"J|+ c #4D4952", +"K|+ c #21B1BB", +"L|+ c #00C1F8", +"M|+ c #2C6893", +"N|+ c #494B58", +"O|+ c #494957", +"P|+ c #4B4B56", +"Q|+ c #1A3B91", +"R|+ c #4D4B53", +"S|+ c #494A58", +"T|+ c #4E4650", +"U|+ c #2B5E83", +"V|+ c #1E7397", +"W|+ c #127FAA", +"X|+ c #464C5B", +"Y|+ c #4B4955", +"Z|+ c #4E4351", +"`|+ c #2E767C", +" 1+ c #0EB0AD", +".1+ c #36656F", +"+1+ c #10A0AE", +"@1+ c #2A7784", +"#1+ c #4E4350", +"$1+ c #4C4C58", +"%1+ c #72727B", +"&1+ c #A9A9AD", +"*1+ c #4B4C58", +"=1+ c #0BB858", +"-1+ c #02CD5A", +";1+ c #405151", +">1+ c #513B52", +",1+ c #494A56", +"'1+ c #15AB4A", +")1+ c #444C53", +"!1+ c #4B4857", +"~1+ c #474C59", +"{1+ c #46C5CA", +"]1+ c #01FBFC", +"^1+ c #00FDFE", +"/1+ c #01FCFE", +"(1+ c #23EDF0", +"_1+ c #767077", +":1+ c #90908F", +"<1+ c #5C5C65", +"[1+ c #266090", +"}1+ c #0E5388", +"|1+ c #12436A", +"11+ c #115F9E", +"21+ c #40516A", +"31+ c #504348", +"41+ c #4C414B", +"51+ c #4B4A56", +"61+ c #196098", +"71+ c #0D66AB", +"81+ c #3A4C63", +"91+ c #4C4A55", +"01+ c #4D444E", +"a1+ c #4E4953", +"b1+ c #4A4656", +"c1+ c #2B6B8B", +"d1+ c #01B7DB", +"e1+ c #02A2DF", +"f1+ c #0CADEB", +"g1+ c #494E59", +"h1+ c #4E484E", +"i1+ c #183F99", +"j1+ c #204190", +"k1+ c #504A4C", +"l1+ c #484958", +"m1+ c #4C4853", +"n1+ c #3F5065", +"o1+ c #0E74B1", +"p1+ c #3B536B", +"q1+ c #4D4752", +"r1+ c #286988", +"s1+ c #0D84B3", +"t1+ c #3F5264", +"u1+ c #494B57", +"v1+ c #4D4452", +"w1+ c #39626B", +"x1+ c #0BB4B1", +"y1+ c #307178", +"z1+ c #1794A2", +"A1+ c #1E8895", +"B1+ c #4C4552", +"C1+ c #BDBDBF", +"D1+ c #61616C", +"E1+ c #4B4B58", +"F1+ c #484C57", +"G1+ c #4F3E53", +"H1+ c #258864", +"I1+ c #00FCA9", +"J1+ c #0AE0A6", +"K1+ c #279D79", +"L1+ c #4B4755", +"M1+ c #4D4358", +"N1+ c #316C4D", +"O1+ c #297C4C", +"P1+ c #4E4258", +"Q1+ c #52404E", +"R1+ c #46C4CA", +"S1+ c #01F8FC", +"T1+ c #28F0F4", +"U1+ c #58525F", +"V1+ c #75767A", +"W1+ c #4D4D5A", +"X1+ c #4A4A58", +"Y1+ c #266292", +"Z1+ c #0E568A", +"`1+ c #124369", +" 2+ c #10609E", +".2+ c #395778", +"+2+ c #484B5B", +"@2+ c #494C5A", +"#2+ c #4D4A55", +"$2+ c #42495B", +"%2+ c #1463A2", +"&2+ c #0483C0", +"*2+ c #0AAADB", +"=2+ c #2578A7", +"-2+ c #29527B", +";2+ c #125D95", +">2+ c #105991", +",2+ c #0483C7", +"'2+ c #06C9FF", +")2+ c #2D9EBD", +"!2+ c #494A59", +"~2+ c #4D4750", +"{2+ c #355A87", +"]2+ c #0179FD", +"^2+ c #0461F5", +"/2+ c #394B7A", +"(2+ c #4D4951", +"_2+ c #26628B", +":2+ c #4E4652", +"<2+ c #32607A", +"[2+ c #0A87B8", +"}2+ c #355C74", +"|2+ c #4C4755", +"12+ c #43535E", +"22+ c #0EAEAD", +"32+ c #298084", +"42+ c #218593", +"52+ c #1597A5", +"62+ c #4C4C5A", +"72+ c #3F3F4E", +"82+ c #7F7F87", +"92+ c #9A9AA0", +"02+ c #4A4955", +"a2+ c #10DBBE", +"b2+ c #06FFEB", +"c2+ c #06FBD3", +"d2+ c #299971", +"e2+ c #4E3E54", +"f2+ c #494C58", +"g2+ c #4A4B58", +"h2+ c #4A4556", +"i2+ c #1AA44C", +"j2+ c #10B84A", +"k2+ c #435053", +"l2+ c #4C4858", +"m2+ c #494D5A", +"n2+ c #53414E", +"o2+ c #46C2CA", +"p2+ c #01F4FC", +"q2+ c #01F6FE", +"r2+ c #28EDF4", +"s2+ c #5C5662", +"t2+ c #8F8F8E", +"u2+ c #4B4A57", +"v2+ c #4D4954", +"w2+ c #266493", +"x2+ c #0D598C", +"y2+ c #124468", +"z2+ c #10609C", +"A2+ c #395878", +"B2+ c #4A4B59", +"C2+ c #51434E", +"D2+ c #2B758B", +"E2+ c #00A6DB", +"F2+ c #03A5E6", +"G2+ c #00AFFD", +"H2+ c #146398", +"I2+ c #2E4F70", +"J2+ c #3D5E7B", +"K2+ c #357999", +"L2+ c #4D4B54", +"M2+ c #4B4855", +"N2+ c #1677D5", +"O2+ c #097FFA", +"P2+ c #0059F1", +"Q2+ c #155BDA", +"R2+ c #4E4B52", +"S2+ c #4A4A59", +"T2+ c #4F4751", +"U2+ c #2C5F84", +"V2+ c #1470A7", +"W2+ c #4E4853", +"X2+ c #3C576B", +"Y2+ c #2C6682", +"Z2+ c #4B4956", +"`2+ c #179FA0", +" 3+ c #1E9495", +".3+ c #297986", +"+3+ c #0EA3B0", +"@3+ c #435461", +"#3+ c #4D4855", +"$3+ c #4F4F5B", +"%3+ c #C6C6C8", +"&3+ c #575763", +"*3+ c #4C4756", +"=3+ c #45575D", +"-3+ c #05F1C7", +";3+ c #0CFFDA", +">3+ c #13EFBD", +",3+ c #03F59D", +"'3+ c #1AC88C", +")3+ c #4F4054", +"!3+ c #4A4D58", +"~3+ c #4A4C57", +"{3+ c #4E4559", +"]3+ c #36664F", +"^3+ c #0AC94A", +"/3+ c #25854B", +"(3+ c #4E4358", +"_3+ c #484D5A", +":3+ c #46C0CA", +"<3+ c #01F0FC", +"[3+ c #00F3FF", +"}3+ c #01F2FE", +"|3+ c #27E9F3", +"13+ c #5E5864", +"23+ c #424352", +"33+ c #5E5F68", +"43+ c #5F5F68", +"53+ c #4C4C59", +"63+ c #4D4955", +"73+ c #266593", +"83+ c #0D5B8E", +"93+ c #134466", +"03+ c #10609A", +"a3+ c #4F4750", +"b3+ c #494B5A", +"c3+ c #494D5B", +"d3+ c #4F3F4C", +"e3+ c #2B8EA1", +"f3+ c #00D0FC", +"g3+ c #05B4F5", +"h3+ c #14C2F6", +"i3+ c #495C68", +"j3+ c #504650", +"k3+ c #4B4C59", +"l3+ c #4E424C", +"m3+ c #4A4B5A", +"n3+ c #4F494E", +"o3+ c #1A63C6", +"p3+ c #0054E6", +"q3+ c #0454DD", +"r3+ c #2A6FCD", +"s3+ c #4E494F", +"t3+ c #405166", +"u3+ c #0E75B1", +"v3+ c #3B556D", +"w3+ c #4C4956", +"x3+ c #454F5F", +"y3+ c #1081AE", +"z3+ c #207194", +"A3+ c #4D4854", +"B3+ c #4A4C59", +"C3+ c #4E4452", +"D3+ c #24888C", +"E3+ c #13A7A5", +"F3+ c #2E717D", +"G3+ c #3A616E", +"H3+ c #4E4653", +"I3+ c #4D4D5B", +"J3+ c #40404E", +"K3+ c #8D8D94", +"L3+ c #10D7A2", +"M3+ c #00FFB4", +"N3+ c #03EC8E", +"O3+ c #01E68A", +"P3+ c #2CA282", +"Q3+ c #4F4155", +"R3+ c #494D59", +"S3+ c #4B4556", +"T3+ c #1B9D4B", +"U3+ c #0EBE4A", +"V3+ c #405652", +"W3+ c #4D4759", +"X3+ c #4B4B59", +"Y3+ c #53424F", +"Z3+ c #46BECA", +"`3+ c #01EDFC", +" 4+ c #01EFFE", +".4+ c #27E6F4", +"+4+ c #5D5764", +"@4+ c #707076", +"#4+ c #919190", +"$4+ c #888889", +"%4+ c #8A8A89", +"&4+ c #4F4F5C", +"*4+ c #4D4A56", +"=4+ c #266694", +"-4+ c #0E5E90", +";4+ c #134465", +">4+ c #0E629B", +",4+ c #325E85", +"'4+ c #504750", +")4+ c #4C4955", +"!4+ c #445568", +"~4+ c #1098DB", +"{4+ c #19BDEE", +"]4+ c #407E8C", +"^4+ c #4D4350", +"/4+ c #4A4C5A", +"(4+ c #4A4D5B", +"_4+ c #4D4A52", +":4+ c #404E74", +"<4+ c #0541C1", +"[4+ c #184EB3", +"}4+ c #4B5669", +"|4+ c #4B4B5A", +"14+ c #186EA3", +"24+ c #285D88", +"34+ c #52434D", +"44+ c #494D5C", +"54+ c #187AA3", +"64+ c #187AA2", +"74+ c #4F4453", +"84+ c #31737A", +"94+ c #0EB1AE", +"04+ c #2F727C", +"a4+ c #0FA2B0", +"b4+ c #2F707E", +"c4+ c #4F4553", +"d4+ c #C5C5C7", +"e4+ c #4D4556", +"f4+ c #3F6763", +"g4+ c #0EDC8C", +"h4+ c #04E785", +"i4+ c #01E87C", +"j4+ c #24885A", +"k4+ c #504257", +"l4+ c #4A4D59", +"m4+ c #4A4C58", +"n4+ c #4E465A", +"o4+ c #3B6052", +"p4+ c #0CC74B", +"q4+ c #238C4C", +"r4+ c #4E4459", +"s4+ c #4A4E5B", +"t4+ c #54434F", +"u4+ c #47BDCA", +"v4+ c #01E9FC", +"w4+ c #00ECFF", +"x4+ c #01EBFE", +"y4+ c #27E4F3", +"z4+ c #5E5863", +"A4+ c #818183", +"B4+ c #8E8E8D", +"C4+ c #514851", +"D4+ c #2C648B", +"E4+ c #0D6193", +"F4+ c #144565", +"G4+ c #0F6198", +"H4+ c #316087", +"I4+ c #504952", +"J4+ c #4B4C5A", +"K4+ c #4C4B58", +"L4+ c #4C4A58", +"M4+ c #4D4652", +"N4+ c #504C52", +"O4+ c #1D3E90", +"P4+ c #233E86", +"Q4+ c #504B50", +"R4+ c #504851", +"S4+ c #2F5E81", +"T4+ c #0F8BBA", +"U4+ c #415D6E", +"V4+ c #4F4651", +"W4+ c #4E4954", +"X4+ c #227295", +"Y4+ c #1083AF", +"Z4+ c #445162", +"`4+ c #4B4D59", +" 5+ c #4F4755", +".5+ c #3D606A", +"+5+ c #0DB3B0", +"@5+ c #2B7C82", +"#5+ c #1599A7", +"$5+ c #238490", +"%5+ c #4F4653", +"&5+ c #4B4D5A", +"*5+ c #A6A6AA", +"=5+ c #4E4E5B", +"-5+ c #4E4556", +";5+ c #4D4B58", +">5+ c #415D5B", +",5+ c #0BBF5E", +"'5+ c #01D260", +")5+ c #3F5857", +"!5+ c #4F4859", +"~5+ c #4B4D58", +"{5+ c #4E4558", +"]5+ c #20974C", +"^5+ c #0DC34A", +"/5+ c #3C5D51", +"(5+ c #4F485A", +"_5+ c #544350", +":5+ c #47BBCA", +"<5+ c #00F1FF", +"[5+ c #01E5FC", +"}5+ c #00E7FF", +"|5+ c #01E7FE", +"15+ c #00EAFF", +"25+ c #27E0F4", +"35+ c #5D5864", +"45+ c #62626B", +"55+ c #504853", +"65+ c #306184", +"75+ c #0F6292", +"85+ c #144665", +"95+ c #0F6094", +"05+ c #306086", +"a5+ c #504953", +"b5+ c #4C4B59", +"c5+ c #4B4D5B", +"d5+ c #4D4C58", +"e5+ c #1A3E96", +"f5+ c #22418D", +"g5+ c #4F4D56", +"h5+ c #4A4E5C", +"i5+ c #50404F", +"j5+ c #2B97A1", +"k5+ c #01D7FB", +"l5+ c #346A8A", +"m5+ c #4F4752", +"n5+ c #4B4C5B", +"o5+ c #4F4854", +"p5+ c #2C6886", +"q5+ c #0C87B6", +"r5+ c #3D586D", +"s5+ c #4F4955", +"t5+ c #4D4A58", +"u5+ c #46525F", +"v5+ c #11ABAA", +"w5+ c #238B8E", +"x5+ c #1C8E9C", +"y5+ c #1894A1", +"z5+ c #4B4A58", +"A5+ c #4E4E5C", +"B5+ c #40404F", +"C5+ c #E4E4E2", +"D5+ c #B9B9BC", +"E5+ c #4A4D5A", +"F5+ c #523F58", +"G5+ c #317459", +"H5+ c #00E665", +"I5+ c #189858", +"J5+ c #4E4458", +"K5+ c #4F475B", +"L5+ c #3C5C51", +"M5+ c #0CC44A", +"N5+ c #20954C", +"O5+ c #554450", +"P5+ c #47B9CB", +"Q5+ c #00EDFF", +"R5+ c #01E2FC", +"S5+ c #00E4FF", +"T5+ c #01E3FE", +"U5+ c #00E6FF", +"V5+ c #27DDF4", +"W5+ c #4C4D5A", +"X5+ c #6B6B71", +"Y5+ c #52525E", +"Z5+ c #316285", +"`5+ c #0F6695", +" 6+ c #144765", +".6+ c #0D6295", +"+6+ c #2C658E", +"@6+ c #514952", +"#6+ c #4E4D58", +"$6+ c #1B3E95", +"%6+ c #22418C", +"&6+ c #504D55", +"*6+ c #4B4E5B", +"=6+ c #4F4452", +"-6+ c #16D2D5", +";6+ c #0EF4FE", +">6+ c #03C1F3", +",6+ c #14B0DA", +"'6+ c #4F4A55", +")6+ c #504954", +"!6+ c #385D75", +"~6+ c #0B88B8", +"{6+ c #32627D", +"]6+ c #504854", +"^6+ c #4D4956", +"/6+ c #1B9A9B", +"(6+ c #1B9B9B", +"_6+ c #248390", +":6+ c #11A0AD", +"<6+ c #4E4A58", +"[6+ c #82828B", +"}6+ c #70707A", +"|6+ c #4C4E5A", +"16+ c #4D4758", +"26+ c #11B65E", +"36+ c #00D760", +"46+ c #51475A", +"56+ c #4B4E5A", +"66+ c #4F4459", +"76+ c #258F4E", +"86+ c #0CC64A", +"96+ c #386350", +"06+ c #50475B", +"a6+ c #4B4E5C", +"b6+ c #554550", +"c6+ c #47B7CB", +"d6+ c #01DEFC", +"e6+ c #00E0FF", +"f6+ c #01E0FE", +"g6+ c #00E2FF", +"h6+ c #27DBF4", +"i6+ c #5F5965", +"j6+ c #878786", +"k6+ c #767679", +"l6+ c #4C4D5B", +"m6+ c #514953", +"n6+ c #316486", +"o6+ c #0E6897", +"p6+ c #144865", +"q6+ c #0E6191", +"r6+ c #286995", +"s6+ c #4F4C58", +"t6+ c #4F4D58", +"u6+ c #1B3F95", +"v6+ c #514E56", +"w6+ c #4C4C5B", +"x6+ c #4C4E5C", +"y6+ c #514450", +"z6+ c #1FAABC", +"A6+ c #00D1FF", +"B6+ c #03A6E1", +"C6+ c #2F95AF", +"D6+ c #4C4E5B", +"E6+ c #4F4A56", +"F6+ c #415669", +"G6+ c #0D86B4", +"H6+ c #286C8B", +"I6+ c #514654", +"J6+ c #288589", +"K6+ c #12ABA8", +"L6+ c #26818B", +"M6+ c #0EA4B1", +"N6+ c #3F5E6B", +"O6+ c #504956", +"P6+ c #ADADB1", +"Q6+ c #51465A", +"R6+ c #347058", +"S6+ c #00E164", +"T6+ c #0DA95A", +"U6+ c #4E4C5A", +"V6+ c #4F4A5B", +"W6+ c #415854", +"X6+ c #0FC04B", +"Y6+ c #1C9E4B", +"Z6+ c #4D4859", +"`6+ c #4A4E5D", +" 7+ c #554551", +".7+ c #47B5CB", +"+7+ c #01DAFC", +"@7+ c #00DCFF", +"#7+ c #01DCFE", +"$7+ c #00DEFF", +"%7+ c #27D7F4", +"&7+ c #5E5965", +"*7+ c #555561", +"=7+ c #65656D", +"-7+ c #484858", +";7+ c #514954", +">7+ c #316587", +",7+ c #0E6B99", +"'7+ c #144966", +")7+ c #0F608D", +"!7+ c #276994", +"~7+ c #4F4B58", +"{7+ c #4D4C59", +"]7+ c #4F4D59", +"^7+ c #504E56", +"/7+ c #4B5060", +"(7+ c #247CA8", +"_7+ c #098CCA", +":7+ c #3C5670", +"<7+ c #504955", +"[7+ c #4C4D5C", +"}7+ c #4E4B59", +"|7+ c #475060", +"17+ c #1381AC", +"27+ c #1D779C", +"37+ c #4D4B59", +"47+ c #504655", +"57+ c #347078", +"67+ c #287F88", +"77+ c #0FA3B1", +"87+ c #326F7C", +"97+ c #514755", +"07+ c #5F5F6B", +"a7+ c #D3D3D4", +"b7+ c #62626E", +"c7+ c #14B05D", +"d7+ c #00DB62", +"e7+ c #277B59", +"f7+ c #51465B", +"g7+ c #50455B", +"h7+ c #25894D", +"i7+ c #0BC94B", +"j7+ c #376952", +"k7+ c #50475C", +"l7+ c #4B4F5D", +"m7+ c #564651", +"n7+ c #47B4CB", +"o7+ c #00E1FF", +"p7+ c #01D7FC", +"q7+ c #00D8FF", +"r7+ c #01D8FE", +"s7+ c #00DAFF", +"t7+ c #28D4F4", +"u7+ c #5F5A65", +"v7+ c #63636B", +"w7+ c #555560", +"x7+ c #316687", +"y7+ c #0E6E9B", +"z7+ c #144A66", +"A7+ c #0E608C", +"B7+ c #266C95", +"C7+ c #504B57", +"D7+ c #4D4C5A", +"E7+ c #4F4E59", +"F7+ c #4E4C59", +"G7+ c #53454E", +"H7+ c #1A6EA3", +"I7+ c #246894", +"J7+ c #514A54", +"K7+ c #1A7AA0", +"L7+ c #147FA8", +"M7+ c #4A4F5E", +"N7+ c #405F69", +"O7+ c #0FB1AE", +"P7+ c #23898F", +"Q7+ c #129EAC", +"R7+ c #287F8C", +"S7+ c #52525F", +"T7+ c #C8C8CA", +"U7+ c #96969D", +"V7+ c #434352", +"W7+ c #4F4F5D", +"X7+ c #4C4F5A", +"Y7+ c #51475B", +"Z7+ c #376D58", +"`7+ c #00DA62", +" 8+ c #08B85E", +".8+ c #405B5A", +"+8+ c #504A5B", +"@8+ c #4F4B5C", +"#8+ c #445455", +"$8+ c #11BB4C", +"%8+ c #17A74B", +"&8+ c #4B4958", +"*8+ c #4F4B5B", +"=8+ c #4C4F5B", +"-8+ c #4C4F5D", +";8+ c #564652", +">8+ c #47B2CB", +",8+ c #00DDFF", +"'8+ c #01D3FC", +")8+ c #00D5FF", +"!8+ c #01D5FE", +"~8+ c #00D6FF", +"{8+ c #28D2F4", +"]8+ c #5F5A66", +"^8+ c #747478", +"/8+ c #888887", +"(8+ c #838382", +"_8+ c #4D4E5C", +":8+ c #524A55", +"<8+ c #326787", +"[8+ c #0E709C", +"}8+ c #144B67", +"|8+ c #0F5F88", +"18+ c #1F72A0", +"28+ c #4D505F", +"38+ c #4D4D5C", +"48+ c #504E59", +"58+ c #22428D", +"68+ c #524F57", +"78+ c #4E4D5B", +"88+ c #514C57", +"98+ c #2E6287", +"08+ c #1276B0", +"a8+ c #4B4E5D", +"b8+ c #4F4D5A", +"c8+ c #514A57", +"d8+ c #266F90", +"e8+ c #0D86B3", +"f8+ c #425669", +"g8+ c #504C58", +"h8+ c #4F4C5A", +"i8+ c #49525F", +"j8+ c #14A7A6", +"k8+ c #1C9799", +"l8+ c #1E8E9A", +"m8+ c #4F4A58", +"n8+ c #BABABD", +"o8+ c #4D4E5B", +"p8+ c #4D4F5C", +"q8+ c #16AA5C", +"r8+ c #00DA63", +"s8+ c #1C925C", +"t8+ c #4E4B5B", +"u8+ c #4D4F5B", +"v8+ c #52465D", +"w8+ c #2C8250", +"x8+ c #0BC647", +"y8+ c #307951", +"z8+ c #504C5D", +"A8+ c #4B4F5E", +"B8+ c #564752", +"C8+ c #47B0CB", +"D8+ c #00D9FF", +"E8+ c #01D0FC", +"F8+ c #01D1FE", +"G8+ c #00D2FF", +"H8+ c #28CFF4", +"I8+ c #50505E", +"J8+ c #67676E", +"K8+ c #524955", +"L8+ c #326888", +"M8+ c #0E739D", +"N8+ c #144D68", +"O8+ c #0F5F86", +"P8+ c #1F729E", +"Q8+ c #4C5060", +"R8+ c #4D4E5D", +"S8+ c #1B4095", +"T8+ c #514F57", +"U8+ c #435369", +"V8+ c #0D79B7", +"W8+ c #375A78", +"X8+ c #514B56", +"Y8+ c #4C4E5D", +"Z8+ c #524A56", +"`8+ c #306681", +" 9+ c #0A89B8", +".9+ c #376078", +"+9+ c #514A56", +"@9+ c #1F9597", +"#9+ c #16A3A2", +"$9+ c #1C8F9B", +"%9+ c #149BA8", +"&9+ c #49515F", +"*9+ c #A6A6AC", +"=9+ c #51485C", +"-9+ c #386A58", +";9+ c #03D461", +">9+ c #05C361", +",9+ c #336E5C", +"'9+ c #52485B", +")9+ c #4C4F5C", +"!9+ c #4F4C5D", +"~9+ c #475255", +"{9+ c #0CD062", +"]9+ c #01F97D", +"^9+ c #06EE70", +"/9+ c #328B5E", +"(9+ c #51455B", +"_9+ c #4C4F5E", +":9+ c #574752", +"<9+ c #47AFCB", +"[9+ c #01CDFC", +"}9+ c #00CEFF", +"|9+ c #01CEFE", +"19+ c #00CFFF", +"29+ c #28CCF4", +"39+ c #605B67", +"49+ c #585863", +"59+ c #534A55", +"69+ c #326A89", +"79+ c #0E769F", +"89+ c #144E68", +"99+ c #105E83", +"09+ c #1F739D", +"a9+ c #4D5160", +"b9+ c #4F4C59", +"c9+ c #4D4F5D", +"d9+ c #504F5A", +"e9+ c #1B4096", +"f9+ c #23428D", +"g9+ c #524F58", +"h9+ c #1A71A5", +"i9+ c #216B99", +"j9+ c #524B56", +"k9+ c #524B57", +"l9+ c #3A5E75", +"m9+ c #0A89B7", +"n9+ c #2E6986", +"o9+ c #524756", +"p9+ c #2B8186", +"q9+ c #10AEAB", +"r9+ c #1C8F99", +"s9+ c #10A2AF", +"t9+ c #425C69", +"u9+ c #93939A", +"v9+ c #C7C7C9", +"w9+ c #545462", +"x9+ c #50505D", +"y9+ c #4E4F5C", +"z9+ c #4F4A5A", +"A9+ c #19A55B", +"B9+ c #01D763", +"C9+ c #13A661", +"D9+ c #48535B", +"E9+ c #504D5C", +"F9+ c #4D505C", +"G9+ c #406D61", +"H9+ c #02FE8E", +"I9+ c #0CFE97", +"J9+ c #05FF83", +"K9+ c #01F965", +"L9+ c #43665B", +"M9+ c #50495C", +"N9+ c #574853", +"O9+ c #48ADCB", +"P9+ c #01C9FC", +"Q9+ c #01CAFE", +"R9+ c #28C9F4", +"S9+ c #605C67", +"T9+ c #767678", +"U9+ c #4E4F5E", +"V9+ c #326B8A", +"W9+ c #0E79A1", +"X9+ c #145069", +"Y9+ c #105D80", +"Z9+ c #187AA7", +"`9+ c #4B5465", +" 0+ c #514C58", +".0+ c #4F4E5C", +"+0+ c #4E4E5D", +"@0+ c #514F5B", +"#0+ c #535058", +"$0+ c #534B56", +"%0+ c #2F6286", +"&0+ c #1078B3", +"*0+ c #4A5161", +"=0+ c #504E5B", +"-0+ c #4E4F5D", +";0+ c #514D5A", +">0+ c #445668", +",0+ c #0F85B1", +"'0+ c #227496", +")0+ c #514C59", +"!0+ c #4E505E", +"~0+ c #534958", +"{0+ c #386E76", +"]0+ c #0FB2AF", +"^0+ c #1D8F97", +"/0+ c #396977", +"(0+ c #534A58", +"_0+ c #81818A", +":0+ c #5F5F6C", +"<0+ c #51515F", +"[0+ c #4E505C", +"}0+ c #52495D", +"|0+ c #396A59", +"10+ c #06CE60", +"20+ c #06C864", +"30+ c #288460", +"40+ c #4E505D", +"50+ c #4E515D", +"60+ c #53455B", +"70+ c #3A7C63", +"80+ c #10FB8D", +"90+ c #10EC76", +"00+ c #03ED5F", +"a0+ c #3E7E64", +"b0+ c #52455B", +"c0+ c #4C505F", +"d0+ c #48ABCB", +"e0+ c #00CDFF", +"f0+ c #01C5FC", +"g0+ c #00C6FF", +"h0+ c #01C6FE", +"i0+ c #00C7FF", +"j0+ c #28C6F4", +"k0+ c #6B6B70", +"l0+ c #4D505E", +"m0+ c #544955", +"n0+ c #39657E", +"o0+ c #0E7BA3", +"p0+ c #14516A", +"q0+ c #105D7E", +"r0+ c #177AA5", +"s0+ c #47586B", +"t0+ c #4D4F5E", +"u0+ c #514F5A", +"v0+ c #23428C", +"w0+ c #514D59", +"x0+ c #445469", +"y0+ c #0D7AB8", +"z0+ c #385C7A", +"A0+ c #534C57", +"B0+ c #167FA7", +"C0+ c #187CA3", +"D0+ c #514B5A", +"E0+ c #435D69", +"F0+ c #10AEAC", +"G0+ c #1A979B", +"H0+ c #0FA2AF", +"I0+ c #534957", +"J0+ c #444453", +"K0+ c #75757F", +"L0+ c #6C6C77", +"M0+ c #1BA15B", +"N0+ c #03D362", +"O0+ c #0EB666", +"P0+ c #3F615C", +"Q0+ c #524A5D", +"R0+ c #4F4C5C", +"S0+ c #4A575C", +"T0+ c #0BE66D", +"U0+ c #00FF66", +"V0+ c #02F55A", +"W0+ c #05D051", +"X0+ c #435D59", +"Y0+ c #524B5E", +"Z0+ c #584954", +"`0+ c #48A9CC", +" a+ c #00C9FF", +".a+ c #01C1FC", +"+a+ c #01C3FE", +"@a+ c #28C3F4", +"#a+ c #615C68", +"$a+ c #5A5A65", +"%a+ c #7E7E7D", +"&a+ c #68686E", +"*a+ c #4F4F5E", +"=a+ c #4E505F", +"-a+ c #544A56", +";a+ c #3D637B", +">a+ c #127B9F", +",a+ c #14546D", +"'a+ c #125B7B", +")a+ c #48586B", +"!a+ c #524C58", +"~a+ c #1A4099", +"{a+ c #214291", +"]a+ c #52505B", +"^a+ c #1B71A5", +"/a+ c #226C9B", +"(a+ c #534C58", +"_a+ c #4F505E", +":a+ c #514E5B", +"b+ c #4D4A59", +",b+ c #1A9E49", +"'b+ c #0DC64B", +")b+ c #2E6B4A", +"!b+ c #544A5F", +"~b+ c #584A55", +"{b+ c #48A6CC", +"]b+ c #00C1FF", +"^b+ c #01BAFC", +"/b+ c #00BBFF", +"(b+ c #01BBFE", +"_b+ c #28BDF4", +":b+ c #615D69", +"c+ c #10B1AE", +",c+ c #159EA5", +"'c+ c #10A2B0", +")c+ c #3C6876", +"!c+ c #534E5C", +"~c+ c #ACACB0", +"{c+ c #B0B0B4", +"]c+ c #504D5D", +"^c+ c #1EA05C", +"/c+ c #09C75F", +"(c+ c #0CBF69", +"_c+ c #278B62", +":c+ c #534A5D", +"d+ c #564B57", +",d+ c #4F5261", +"'d+ c #51505F", +")d+ c #505060", +"!d+ c #4D5065", +"~d+ c #524F5D", +"{d+ c #495468", +"]d+ c #326183", +"^d+ c #554E59", +"/d+ c #4F5161", +"(d+ c #4E5261", +"_d+ c #197DA5", +":d+ c #1580A9", +"e+ c #5A858E", +",e+ c #1A95AE", +"'e+ c #1C6B7C", +")e+ c #1E6173", +"!e+ c #1789A3", +"~e+ c #4D8492", +"{e+ c #796F6C", +"]e+ c #6C6D6F", +"^e+ c #545461", +"/e+ c #53525E", +"(e+ c #15419E", +"_e+ c #1C4399", +":e+ c #515261", +"f+ c #888890", +",f+ c #464656", +"'f+ c #525161", +")f+ c #52515F", +"!f+ c #13D688", +"~f+ c #02FA7B", +"{f+ c #03D067", +"]f+ c #0BC16A", +"^f+ c #259164", +"/f+ c #525060", +"(f+ c #505363", +"_f+ c #5B4F57", +":f+ c #4999CD", +"g+ c #56515E", +",g+ c #54515F", +"'g+ c #4B5769", +")g+ c #1383AC", +"!g+ c #1A7DA3", +"~g+ c #525462", +"{g+ c #544F5E", +"]g+ c #4A6370", +"^g+ c #05F3F4", +"/g+ c #00F7F3", +"(g+ c #03D9D5", +"_g+ c #06BDC5", +":g+ c #149FAC", +"h+ c #525464", +",h+ c #585159", +"'h+ c #2D69A7", +")h+ c #007BF7", +"!h+ c #0368F0", +"~h+ c #365898", +"{h+ c #585359", +"]h+ c #535463", +"^h+ c #56515D", +"/h+ c #2170A1", +"(h+ c #1975AB", +"_h+ c #535260", +":h+ c #545362", +"i+ c #249465", +",i+ c #554F61", +"'i+ c #5D5259", +")i+ c #4990CD", +"!i+ c #018EFC", +"~i+ c #008EFF", +"{i+ c #018EFE", +"]i+ c #008CFF", +"^i+ c #289AF4", +"/i+ c #65626D", +"(i+ c #4F5060", +"_i+ c #525665", +":i+ c #535564", +"j+ c #0056DF", +",j+ c #0253CE", +"'j+ c #157EF7", +")j+ c #50617A", +"!j+ c #2270A0", +"~j+ c #1777AF", +"{j+ c #555463", +"]j+ c #535665", +"^j+ c #584F5E", +"/j+ c #43697B", +"(j+ c #04CDDF", +"_j+ c #08D4E3", +":j+ c #3A8294", +"k+ c #594F63", +",k+ c #535664", +"'k+ c #525566", +")k+ c #5E545B", +"!k+ c #498BCE", +"~k+ c #0182FC", +"{k+ c #0082FF", +"]k+ c #0183FE", +"^k+ c #0080FF", +"/k+ c #2890F4", +"(k+ c #555565", +"_k+ c #2CA4AC", +":k+ c #00FEFE", +"l+ c #11A6A7", +",l+ c #11A5B2", +"'l+ c #1E909D", +")l+ c #9F9FA6", +"!l+ c #898992", +"~l+ c #545764", +"{l+ c #595065", +"]l+ c #426C60", +"^l+ c #08D363", +"/l+ c #02C65B", +"(l+ c #208E5E", +"_l+ c #575465", +":l+ c #555664", +"m+ c #286D99", +",m+ c #595360", +"'m+ c #565565", +")m+ c #555767", +"!m+ c #5A4F5E", +"~m+ c #4A5E73", +"{m+ c #1188B2", +"]m+ c #1A7BA2", +"^m+ c #515567", +"/m+ c #575665", +"(m+ c #5B5162", +"_m+ c #3A757D", +":m+ c #0DB2AF", +"n+ c #00ECF1", +",n+ c #00C5CA", +"'n+ c #69D1D3", +")n+ c #36D4D6", +"!n+ c #6BF2F4", +"~n+ c #2DFDFD", +"{n+ c #32FFFF", +"]n+ c #96A6AE", +"^n+ c #8F8E98", +"/n+ c #868691", +"(n+ c #5F5F65", +"_n+ c #5F5F66", +":n+ c #18449F", +"o+ c #595969", +",o+ c #565465", +"'o+ c #15B761", +")o+ c #00E263", +"!o+ c #198E55", +"~o+ c #595467", +"{o+ c #555768", +"]o+ c #61595E", +"^o+ c #4A7FCF", +"/o+ c #0067FF", +"(o+ c #0168FC", +"_o+ c #0169FE", +":o+ c #0064FF", +"p+ c #565868", +",p+ c #5C5563", +"'p+ c #3F6280", +")p+ c #0C80C0", +"!p+ c #3C6383", +"~p+ c #5C5562", +"{p+ c #5B5564", +"]p+ c #297696", +"^p+ c #0D8AB6", +"/p+ c #3F677F", +"(p+ c #515162", +"_p+ c #767682", +":p+ c #D7CFD0", +"q+ c #137681", +",q+ c #17606A", +"'q+ c #12949F", +")q+ c #3C7786", +"!q+ c #695E6D", +"~q+ c #B9BDC3", +"{q+ c #A4A5AD", +"]q+ c #9797A0", +"^q+ c #A5A5AD", +"/q+ c #B9B9BF", +"(q+ c #666674", +"_q+ c #63636A", +":q+ c #5A5967", +"r+ c #4B76CF", +",r+ c #0053FF", +"'r+ c #0256FC", +")r+ c #0156FE", +"!r+ c #0051FF", +"~r+ c #286DF5", +"{r+ c #6A6872", +"]r+ c #595A6A", +"^r+ c #5B5565", +"/r+ c #506777", +"(r+ c #179FAE", +"_r+ c #156873", +":r+ c #166772", +"s+ c #175F6A", +",s+ c #14707C", +"'s+ c #1A9AA9", +")s+ c #556273", +"!s+ c #5B5767", +"~s+ c #606069", +"{s+ c #6A6A6E", +"]s+ c #60606C", +"^s+ c #5B5A69", +"/s+ c #244997", +"(s+ c #0E40A7", +"_s+ c #3C5185", +":s+ c #5E5B65", +"t+ c #737372", +",t+ c #707073", +"'t+ c #686870", +")t+ c #58586A", +"!t+ c #5C5B6A", +"~t+ c #254A98", +"{t+ c #3D5284", +"]t+ c #605C66", +"^t+ c #595A6C", +"/t+ c #5A5B6C", +"(t+ c #5F5865", +"_t+ c #107FBC", +":t+ c #4F5E74", +"u+ c #187CB3", +",u+ c #1F75A9", +"'u+ c #5D5666", +")u+ c #545567", +"!u+ c #535365", +"~u+ c #C3C3C4", +"{u+ c #CAC7C6", +"]u+ c #B3C0C5", +"^u+ c #33A0C4", +"/u+ c #31A1C5", +"(u+ c #AFC0C6", +"_u+ c #CECAC9", +":u+ c #C7C8C8", +"v+ c #00F8FE", +",v+ c #00E6F9", +"'v+ c #41BCE1", +")v+ c #C9C6C6", +"!v+ c #CBCBC9", +"~v+ c #C3C5C6", +"{v+ c #D2CAC7", +"]v+ c #77B0C3", +"^v+ c #1D9CC6", +"/v+ c #65ACC4", +"(v+ c #D0CAC8", +"_v+ c #B3B3B7", +":v+ c #7E7E8A", +"w+ c #84848D", +",w+ c #9D9DA2", +"'w+ c #B1B1B3", +")w+ c #C5BFBF", +"!w+ c #29F2F2", +"~w+ c #10B8DF", +"{w+ c #00ACEC", +"]w+ c #40CDEF", +"^w+ c #CEC3BE", +"/w+ c #C1C3C4", +"(w+ c #C9C7C6", +"_w+ c #B8C1C4", +":w+ c #38A1C3", +"x+ c #6E6E79", +",x+ c #616171", +"'x+ c #5F5E6D", +")x+ c #264C9B", +"!x+ c #325091", +"~x+ c #63606B", +"{x+ c #5D5E6F", +"]x+ c #919198", +"^x+ c #A6A6A9", +"/x+ c #BFBFBE", +"(x+ c #BEBDBD", +"_x+ c #C0BEBE", +":x+ c #C1BFC0", +"y+ c #2148FA", +",y+ c #35A3B2", +"'y+ c #585D70", +")y+ c #5E5D6E", +"!y+ c #5C5C6E", +"~y+ c #959594", +"{y+ c #999998", +"]y+ c #929294", +"^y+ c #85858B", +"/y+ c #7B7B84", +"(y+ c #626272", +"_y+ c #616172", +":y+ c #6A6976", +"z+ c #3F7982", +",z+ c #0DABB1", +"'z+ c #0FADBB", +")z+ c #318694", +"!z+ c #63596A", +"~z+ c #5D5F70", +"{z+ c #5C5D71", +"]z+ c #686667", +"^z+ c #4D5AD1", +"/z+ c #0013FF", +"(z+ c #021BFD", +"_z+ c #001AFF", +":z+ c #011BFE", +"A+ c #2A39F4", +",A+ c #706F79", +"'A+ c #A3A4A6", +")A+ c #AFABA5", +"!A+ c #AAABAB", +"~A+ c #AAAAAE", +"{A+ c #7B7B87", +"]A+ c #676776", +"^A+ c #2078AA", +"/A+ c #167CB3", +"(A+ c #556379", +"_A+ c #625F6E", +":A+ c #605F70", +"B+ c #10B6B5", +",B+ c #0CACB6", +"'B+ c #13ABB8", +")B+ c #447483", +"!B+ c #606072", +"~B+ c #5D6376", +"{B+ c #269FB2", +"]B+ c #228284", +"^B+ c #246666", +"/B+ c #1F8A8F", +"(B+ c #359FA7", +"_B+ c #6E6D6E", +":B+ c #646474", +"C+ c #626071", +",C+ c #537084", +"'C+ c #179AB5", +")C+ c #186577", +"!C+ c #195C6D", +"~C+ c #1289A0", +"{C+ c #358BA3", +"]C+ c #665C6D", +"^C+ c #5D5D70", +"/C+ c #6E6E7B", +"(C+ c #777782", +"_C+ c #7F7F88", +":C+ c #89898F", +"D+ c #616274", +",D+ c #68606B", +"'D+ c #456C9B", +")D+ c #0C86F8", +"!D+ c #0A64D4", +"~D+ c #0759C6", +"{D+ c #307ED3", +"]D+ c #67616B", +"^D+ c #616375", +"/D+ c #626373", +"(D+ c #67606E", +"_D+ c #376F95", +":D+ c #636171", +"E+ c #3A5797", +",E+ c #0B45B1", +"'E+ c #134AAF", +")E+ c #565C7B", +"!E+ c #666371", +"~E+ c #626275", +"{E+ c #68616F", +"]E+ c #0D81BD", +"^E+ c #416C8D", +"/E+ c #686170", +"(E+ c #676171", +"_E+ c #4E6B82", +":E+ c #1488B2", +"F+ c #696571", +",F+ c #43598F", +"'F+ c #1445A7", +")F+ c #1445A8", +"!F+ c #465A8D", +"~F+ c #696271", +"{F+ c #387096", +"]F+ c #0E81BE", +"^F+ c #426D8E", +"/F+ c #696172", +"(F+ c #41718D", +"_F+ c #128BB7", +":F+ c #1E83AA", +"G+ c #696674", +",G+ c #525E85", +"'G+ c #1244A9", +")G+ c #3B5697", +"!G+ c #6A6672", +"~G+ c #6A6372", +"{G+ c #397096", +"]G+ c #0D82BF", +"^G+ c #416E90", +"/G+ c #696373", +"(G+ c #347898", +"_G+ c #287EA1", +":G+ c #666475", +" , ' ) ! ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ~ { ] ^ / ( _ : < ' [ [ ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ", +"} | 1 2 3 4 5 6 7 8 9 9 0 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 K L B ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ", +"M N O | P Q R S T U V W X Y Z ` . .. ) +. @. [ B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B #. #. ' $. %. &. *. =. -. ;. >. ,. ' [ +. +. ' #. L ' B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B ", +"'. ). !. ~. {. ]. ^. /. (. _. :. <. [. }. |. 1. 2. 3. 4. 5. +. 6. @. [ B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B ' [ 7. [ +. 8. 9. 0. a. b. c. d. e. f. g. h. i. j. +. 7. ' [ B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B ", +"k. l. m. n. o. p. q. r. s. t. u. v. w. x. y. z. A. B. C. D. E. F. +. G. G. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. I. J. +. K. L. M. c. N. O. P. Q. R. S. T. U. V. +. J. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. H. ", +"W. X. Y. Z. `. + .+ ++ @+ #+ $+ %+ &+ Z *+ =+ -+ ;+ >+ ,+ '+ )+ !+ ~+ {+ ]+ ^+ {+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ {+ (+ ^+ ~+ _+ :+ <+ [+ }+ |+ 1+ 2+ 3+ 4+ 5+ 6+ ~+ (+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ /+ ", +"7+ 8+ 9+ 0+ a+ b+ c+ d+ e+ f+ g+ h+ i+ j+ 2. B. k+ l+ m+ n+ o+ p+ q+ r+ s+ ~+ G. ]+ I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. G. t+ {+ ~+ u+ v+ w+ x+ y+ z+ A+ B+ C+ D+ +. E+ I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. I. ", +"F+ G+ H+ I+ J+ K+ L+ M+ N+ O+ P+ +. Q+ R+ S+ T+ U+ V+ W+ X+ Y+ Z+ `+ @ .@ +@ {+ ~+ @@ #@ ^+ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ ^+ #@ $@ ~+ %@ &@ *@ =@ -@ ;@ >@ ,@ '@ ' E+ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ ", +")@ !@ ~@ {@ ]@ ^@ /@ (@ +. _@ :@ <@ [@ }@ |@ 1@ 2@ 3@ 4@ 5@ 6@ 7@ 8@ 9@ 0@ a@ b@ c@ }@ d@ e@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ d@ f@ g@ h@ i@ j@ k@ l@ m@ n@ ' o@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ ", +"p@ q@ r@ s@ t@ u@ v@ w@ x@ y@ z@ A@ e@ B@ A@ }@ C@ D@ E@ F@ G@ H@ I@ J@ K@ L@ M@ N@ O@ P@ }@ $@ @@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ Q@ #@ Q@ Q@ #@ #@ Q@ R@ #@ #@ #@ R@ #@ S@ Q@ Q@ #@ #@ #@ #@ #@ Q@ Q@ Q@ Q@ #@ #@ #@ #@ #@ #@ #@ #@ Q@ T@ }@ U@ T. V@ W@ X@ Y@ Z@ `@ ' # #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ R@ R@ R@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ #@ ", +".# +# @# u@ ## $# %# &# *# =# -# ;# }@ [@ ># ,# z@ '# )# !# ~# {# ]# ^# /# (# _# :# <# [# }# }@ d@ ,# Q@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ #@ [@ [@ [@ [@ [@ #@ [@ [@ [@ [@ [@ Q@ H. #@ [@ [@ [@ [@ [@ [@ #@ [@ [@ #@ [@ [@ [@ [@ [@ [@ [@ Q@ #@ 7. }@ |# 1# 2# 3# 4# 5# 6# 7# 8# Q@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ Q@ Q@ 9# 0# a# b# a# 0# a# a# a# a# a# a# a# a# 0# S@ S@ S@ 9# Q@ Q@ Q@ Q@ [@ Q@ Q@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ [@ ", +"c# d# e# f# g# h# i# j# k# l# m# n# o# p# q# 9# <@ 9# r# s# t# u# v# w# x# y# z# A# B# C# D# E# F# r# G# ># H# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# Q@ Q@ 9# 9# Q@ 9# 9# 9# 9# 9# 9# 9# 9# I. I# J# I. 9# 9# 9# 9# Q@ 9# 9# 9# 9# Q@ 9# 9# 9# 9# 9# 9# ^+ K# L# M# r# N# O# P# Q# R# S# T# r# # 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# S@ a# b# U# b# 0# #@ B ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' H. #@ #@ ^+ 9# a# 0# 0# a# b# b# b# b# b# b# 0# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# 9# ", +"q# V# W# X# Y# Z# }@ `# $ .$ +$ @$ #$ $$ %$ &$ *$ # o@ =$ r# -$ ;$ >$ ,$ '$ )$ !$ ~$ {$ ]$ ^$ /$ ($ r# &$ # ,# _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ S@ ' :$ Q@ <$ [$ ' R@ }$ |$ #@ a# Q@ 1$ #@ 2$ 3$ 4$ ' 1$ S@ a# ' 5$ 6$ 7$ 8$ ' 9$ S@ S@ U# S@ a# Q@ 0$ a$ b$ c$ ' d$ e$ f$ g$ h$ i$ j$ }@ # _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ S@ S@ a# U# U# U# a# _$ k$ ' ' ' ' ' 1$ 0$ l$ m$ n$ o$ p$ q$ r$ s$ t$ u$ v$ w$ x$ y$ z$ A$ B$ C$ 1$ D$ 9$ 9# ' ' ' ' ' ' ' ' ' ' ' Q@ U# a# S@ S@ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ _$ ", +"E$ G# r# r# }@ F$ G$ H$ *$ I$ J$ K$ L$ M$ N$ O$ P$ q# H$ Q$ R$ +. S$ T$ U$ V$ W$ X$ Y$ Z$ `$ % .% +% @% #% r# S@ M# 9# S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ $% ' %% &% *% =% ' ' -% 0$ ' Q@ a# ' b# ' [$ ;% ' U# ^+ 1$ ' >% ,% '% )% ' [@ [@ 9# ' #@ H. ' b# ' !% ~% ' {% ]% ' ^% /% (% _% :% S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ a# U# $% 1$ U# S@ I. ' ' ' ' ' ^+ |$ <% [% }% |% 1% 2% 3% 4% 5% 6% 7% 8% 8% 9% 8% 0% a% b% c% c% d% e% e% e% f% g% h% i% j% 2$ k% l% m% s$ n% o% p% q% r% &% Q@ ' ' H. S@ U# b# 0# S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ ", +"0# a# s% t% u% v% w% v% v% x% x% y% z% A% B% C% D% E% F% d$ G% H% I% J% K% L% M% N% O% P% Q% R% S% T% U% V% W% F$ X% ]% a# w% 0# 0# 0# 0# 0# 0# 0# 0# D$ ' Y% Z% |% l$ `% & .& +& q% @& ' #& @& ' $& %& B J# |$ U# ' && *& o% =& ' u$ a# @& -& D$ A$ ;& >& a# ,& *& S@ '& )& !& ~& {& ]& ^& /& (& _& 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# a# 1$ 1$ U# Q@ H. ' ' ' ' #@ J# B$ w$ :& <& [& }& |& 9% 1& 2& 3& 6% 8% 4& 5& 6& d% d% |& 3% 7& 8& 8& 9& 9& 0& e% e% 0& e% a& e% 9& 0& e% 0& 8& 9& 0& 9& b& 0& 0& a& c& d& e& f& g& h& i& #@ ' ' #@ b# 1$ U# a# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# 0# ", +"S@ S@ S@ S@ S@ S@ S@ S@ S@ j& M# x% H# k& l& m& n& o& p& q& r& s& t& u& v& w& w& x& u& y& z& A& B& C& D& E& F& G& H& I& w% J& S@ S@ S@ S@ S@ S@ S@ S@ 1$ ' K& L& M& }% f% *% l% N& 2% O& P& 8& Q& R& <& }$ S& T& U& ' ' V& W& X& Y& =% Z& =% n% `& * .* +* 3$ $& @* *& #* l$ R& $* %* &* ** =* -* ;* >* M# S@ S@ S@ S@ S@ S@ S@ S@ S@ a# U# 1$ [@ ' ' B 9$ &% h& ,* '* f& )* |& 9% V& && !* V& >% 7% a% b% c% ~* ~* c% ~* ~* ~* 5& {* {* 6& d% |& 3% 3% 7& 8& 9& 0& e% e% a& c& d& ]* +* ^* /* (* f% _* )* }& }& :* e& e& :* f% +* (* <* [* -& }* >& H. ' ' #@ U# 1$ U# a# S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ S@ ", +"a# a# a# a# a# a# a# a# a# a# a# |* a# x% |* 1* 2* 3* 4* ~# 5* 6* 7* 8* 9* 0* 0* a* u& b* z& c* d* e* f* g* h* i* j* k* G$ I& _& ]% a# a# a# a# a# a# 1$ ' l* m* n* l% L& @* o* p* q* o$ r* s* t* u* v* ;& *% [* w* ' ' 7& x* 9& 6& y* u$ }$ z* A* B* .& C* a$ D* Q& x$ E* <% F* G* H* I* J* K* L* M* N* _& a# a# a# a# a# a# a# U# D$ a# ' ' O* P* E* 5$ 7& 9% && Q* R* S* T* 3& 6% 9% 4% a% a% a% a% a% U* U* 4& b% b% c% ~* ~* 5& {* {* 6& d% |& 3% 3% 7& 8& 9& 9& 0& e% a& c& c& d& ]* +* +* ^* /* (* f% f% _* )* }& }& e& F* V* i% F* )* (* }& W* X* Y* P& J# ' ' ' Q@ U# 1$ U# a# a# a# a# a# a# a# a# a# a# a# a# a# a# a# a# a# a# a# a# a# a# a# a# a# a# a# a# a# a# a# a# a# a# a# a# a# a# a# a# a# a# a# a# a# a# a# a# a# a# a# a# a# a# a# a# a# a# a# a# a# a# a# a# a# a# a# a# a# a# a# a# a# a# a# a# a# a# a# a# a# a# a# a# a# a# a# a# a# a# a# a# a# a# a# a# a# a# a# a# a# a# a# a# a# a# a# a# a# ", +"U# U# U# U# U# U# U# U# U# U# U# U# U# Z* `* = .= += @= #= $= %= &= *= == -= -= ;= 8* >= ,= '= )= U% != ~= {= ]= ^= /= (= _= (& >* := U# U# U# U# U# U# B @& d% S& j% e% <= [& /* )& [= 2% i& [@ o* }= #& Y* 5& w$ ' #@ h% f% U* |= 1= m$ F* n% p% 2= 3= 4= o* D* a$ 5= E* 6= c% 1= 7= 8= 9= 0= a= b= c= d= e= U# U# U# U# D$ D$ I. ' a# }* W& |= f= f= Q* && V& >% 6% 5% 5% 5% 5% 5% 7% 7% 9% 8% 8% 4% a% a% U* 4& 4& b% c% ~* ~* 5& {* {* 6& d% |& 3% 3% 7& 8& 9& 9& 0& e% a& c& c& d& ]* +* ^* ^* /* (* f% f% _* )* }& :* :* e& F* 5$ V* Y& <* <* i% e& }& 5$ [& y* 7= g= O* B ' H. a# 1$ D$ 1$ U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# ", +"h= h= h= h= h= h= h= h= h= h= h= h= h= a# ]% := i= j= k= l= m= n= o= p= q= r= r= s= t= u= v= w= x= y= E& z= A= B= C= D= E= F= G= H= (& ]% I= U# a# h= U# 1$ ' J= y* X* K= ' m* L= M= B* }& z$ ' N= 3$ O= v$ P= Q= #@ a# E* R= S= %& T= m$ 1% U= <$ V= W= X= Y= Z= Q& [% `= - d& *% m$ .- +- @- #- $- %- (& := U# &- D$ Q@ ' ' z$ w* +* Q* *- S* 3& 1& 1& 3& 1& 1& 1& >% =- =- 6% 5% 5% 7% 9% 9% 8% 4% a% a% U* 4& 4& b% c% ~* ~* 5& {* 6& d% d% |& 3% 7& 7& 8& 9& 0& 0& e% a& c& c& d& ]* +* ^* ^* /* (* f% f% _* )* }& :* e& e& F* 5$ V* i% Y& Y& <* %& -- -- <* V* 5$ )% Y= *% ;- B$ D$ ' ' I. a# 1$ 1$ U# a# h= h= h= h= h= h= h= h= h= h= h= h= h= h= h= h= h= h= h= h= h= h= h= h= h= h= h= h= h= h= h= h= h= h= h= h= h= h= h= h= h= h= h= h= h= h= h= h= h= h= h= h= h= h= h= h= h= h= h= h= h= h= h= h= h= h= h= h= h= h= h= h= h= h= h= h= h= h= h= h= h= h= h= h= h= h= h= h= h= h= h= h= h= h= h= h= h= h= h= h= ", +"U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# e= >- i= = ,- '- )- t= !- ~- ~- {- ]- ^- /- ~+ (- _- :- <- [- }- |- 1- 2- 3- 4- 5- 6- 7- X% M# &- U# U# 8- ' 9% 9- n$ 0- 9- a$ V= a- [* W& b- c- Y= * d- e- J= a# 1$ a# E* f- g- h- i- W= O& j- }= :$ O& ,* 2= W= k- ,* }$ 3= V* X* W= l- b$ m- n- o- p- q- r- s- B ' t- p% u- V& v- w- x- 2& V& x- V& V& 2& 3& 3& 1& >% =- =- 6% 5% 5% 7% 9% 9% 8% 4% 4% a% U* 4& b% ~* 5& {* {* 5& c% b% c% d% |& |& 7& 9& 0& e% a& c& d& d& ]* +* +* ^* ^* /* (* (* (* f% _* )* )* }& :* e& F* F* 5$ V* i% Y& g% g% <* )% %& -- y- !% !% -- g% g% !% k% d- ,% z- U# ' B e= D$ e= U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# U# ", +"$% $% $% $% $% $% $% $% $% $% $% $% $% $% $% $% $% $% 1$ A- B- C- D- E- F- G- G- H- I- J- K- #@ L- M- N- O- P- Q- R- S- T- U- V- W- X- Y- Z- `- J. L- $% 9$ ' o% ; .; L= +; <$ @; %% #; $; }& %; &; g= m% *; (* ' 9$ b# X= `% ;% v$ Z% _* ; w$ =; W= r% -; 9- ;- Z% N& 7= ,& ;; ,% >; ,; '; ); !; ~; {; ]; H. 9# h& [* a% v- ^; S= V& x- T* T* x- x- V& V& 2& 3& 3& 1& >% >% =- 6% 6% 5% 7% 9% 8% 4% U* 4& b% 4& U* 8% 5% =- >% /; b% e% _* /* |& |& 3% (; b% c% ~* c% c% ~* 5& 6& d% |& 7& e% a& a& ]* /* (* (* )* :* e& F* F* F* 5$ 5$ V* i% Y& g% <* <* )% %& -- _; _; y- W* X& :; X& !% -- %& j% q$ %; l$ S@ ' 1$ D$ 1$ $% $% $% $% $% $% $% $% $% $% $% $% $% $% $% $% $% $% $% $% $% $% $% $% $% $% $% $% $% $% $% $% $% $% $% $% $% $% $% $% $% $% $% $% $% $% $% $% $% $% $% $% $% $% $% $% $% $% $% $% $% $% $% $% $% $% $% $% $% $% $% $% $% $% $% $% $% $% $% $% $% $% $% $% $% $% $% $% $% $% $% $% $% $% $% $% $% ", +"e= e= e= e= e= e= e= e= e= e= e= e= e= e= e= e= e= e= e= e= <; [; }; |; 1; 2; 2; 3; 4; 5; 6; #@ 7; 8; 9; 0; a; b; c; d; e; f; g; h; i; j; k; l; m; n; o; I= &- Q@ U# a# #@ Q@ Q@ a# I. Q@ U# [@ #@ Q@ U# ' p; k- ' q; e= Q@ S@ [@ S@ S@ I. D$ ' r; }= ' D$ Q@ S@ Q@ S@ Q@ H. Q@ a# #@ a# U# M# ~+ s; t; u; v; w; x; y; w- T* T* !* && !* !* T* x- x- V& V& 2& 2& 3& 1& >% =- 6% 7% 9% 8% 8% 9% 5% >% 2& x- 2& =- b% ]* )% Y% n$ z; A; B; q; >& e- C; D; ; E; l* F; ,* t$ -& b- j- h- j- U& r* W* x* <* )* e& F* /* +* ]* d& G; e& i% Y& Y& Y& Y& g% <* )% )% %& -- _; y- !% !% W* @* X& :; [& H; [& X& I; @* T= l$ S@ B 1$ J; 1$ e= e= e= e= e= e= e= e= e= e= e= e= e= e= e= e= e= e= e= e= e= e= e= e= e= e= e= e= e= e= e= e= e= e= e= e= e= e= e= e= e= e= e= e= e= e= e= e= e= e= e= e= e= e= e= e= e= e= e= e= e= e= e= e= e= e= e= e= e= e= e= e= e= e= e= e= e= e= e= e= e= e= e= e= e= e= e= e= e= e= e= e= e= e= e= ", +"&- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- K; [; L; M; N; O; O; P; Q; R; S; T; U; V; W; X; Y; (- Z; `; > .> +> @> #> $> %> &> *> => -> (- ;> q; D$ D$ 9$ J; 9$ J; 8- 9$ D$ 9$ 9$ 9$ >> ' Y% }% ' q; &- 9$ 9$ q; J; J; q; 9$ e= a$ [$ ' '& 9$ 9$ 9$ J; 9$ q; 8- q; t- J; B B ,> '> )> !> ~> {> ]> ^> && S= && && !* !* !* T* T* x- x- V& 3& >% =- =- =- 1& V& !* S* S* T* 6% 5& /> [& 8$ +; (> _> t- Q@ ' ' ' I. _$ U# h= #@ :> #@ I. ' ' ' ' ' ' ' ' ' ' I. &- &- U# )& &% <> Q= ; l$ r% w* [> V* /* /* }& i% <* )% )% )% %& -- -- _; y- !% W* W* @* X& :; j% j% [& }> f& f& :; :; y* l$ |> B e= 9$ &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- ", +"D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ 1> [; 2> 3> 4> 5> 5> 6> 2; 7> 8> 9> 0> a> b> c> d> L- e> f> g> h> i> j> k> l> m> n> o> p> q> r> s> L- J; t> D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ 1$ `% u> U# D$ D$ D$ D$ D$ D$ D$ 9$ I. v> `= J# U# D$ D$ D$ D$ D$ D$ q; q; #@ ' U# w> Y= x> y> z> A> B> C> D> E> S* S= S= && && !* !* T* T* V& 3& V& S* w- F> R* && 7% 7& V* k% G> T& H> Q= D$ B ' ' ' #@ U# D$ q; q; q; 9$ D$ D$ D$ 9$ 9$ 9$ 9$ q; q; q; q; q; q; q; q; 9$ q; 9$ 1$ 1$ D$ U# S@ S@ S@ I. B ' ' U# @& I> d- J> <* )* )* 5$ <* _; y- _; y- y- !% W* @* X& X& :; j% [& H; H; }> u* Y= [> K> [& '* L> q; B 1$ 9$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ ", +"&- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- M> N> O> P> Q> R> S> S> T> 3> U> V> W> X> Y> Z> `> , ., ;> +, @, #, $, %, &, *, =, -, ;, >, ,, ', ), s> !, ~, ;> &- M> M> &- &- &- &- &- &- &- J; ^+ e= J; &- &- &- &- &- &- &- &- J; |> ' &- J; &- M> &- J; {, |> ' B ], 3= ^, /, (, _, R* && :, <, [, }, |, 1, S* S= && && && T* V& V& S* *- S= 2, W* D* 4$ F; D; 3, R@ ' ' ' k$ |> &- 8- {, {, 8- 8- J; J; &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- M> M> M> J; J; J; J; J; J; J; J; 8- 8- 8- {, J; _$ B ' e= 4, F; t$ U& u- F* 5$ <* y- W* @* @* @* X& :; :; j% [& H; }> }> u* f& Y= Q& B* u* H; <& v$ 8- k$ &- 8- J; &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- &- ", +"D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ 5, 6, 7, 8, 9, 0, 0, a, Q> b, c, d, e, f, g, h, i, j, k, 7; l, ' m, n, o, p, q, r, s, t, u, v, w, x, y, z, L- A, B, B, B, J; D$ D$ D$ D$ D$ D$ {, 9$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ 9$ >> 9$ D$ D$ D$ '& D$ ' C, 4$ :* w- D, y; R* Q* R* E, F, G, H, I, J, K, L, S= S= && T* x- S= M, f= N, q$ L> 8- ' ' ' ' Q@ 1$ 9$ '& '& {, q; 9$ J; D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ J; 9$ q; {, J; S@ B ' 1$ @& r% w* l% _; i% O, -- @* j% [& [& [& [& H; }> u* f& Y= Y= [> Q& J> P, [> u* z* (> q; I. D$ q; J; D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ D$ ", +"9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ m; Q, R, S, T, S, S, U, V, W, X, Y, Z, `, ' .' +' @' #' $' '& ' %' &' ' *' =' -' ;' >' ,' '' )' !' ~' {' ]' z, N* N* z, ^' 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ J; q; >> B D$ y* x- D, /' _, R* w- F> w- w- R* (' _' :' <' [' }' |' 1' T* S= *- /, 6% [= 7= J# ' I. D$ '& >> >> '& q; 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ q; '& '& 9$ a# k$ k$ q; D; [% o% 2$ @* )% %& W* [& }> u* u* u* f& Y= [> Q& Q& B* J> P, 2$ B* Y= T= 2' q; :> D$ {, 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ 9$ ", +"3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' m; 4' 5' 6' 7' 6' 6' 8' 9' 0' 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' N* C' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 8- D' e= ' w> |& E' F' F> F> f= f= f= F> F> w- w- G' H' I' J' K' L' M' J= N' S= O' P' 4, ' B &- >> {, 8- 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 8- 8- {, {, J; |> k$ :> {, B$ l* b- h- [& y- W* u* Y= Y= Y= [> Q& B* J> l% l% P, 2$ o$ l% Q& y* Q' {, R' J; {, 8- 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' 3' ", +"8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- S' Q, T' U' V' U' U' W' X' Y' a' w% q; ^' Z' c' d' `' ) .) +) @) #) $) %) &) *) =) -) ;) >) ,) ') )) !) ~) {) ]) ^) /) () _) N* :) 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 9$ >> '& ' 0$ [= <) (, F> *- *- *- _, _, f= f= F> w- w- w- [) D> }) |) 1) 2) 3) 4) A; Q@ ' a# O* O* q; 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- {, '& '& 9$ |> I. :> {, B$ r% o% }> @* Y= Q& Q& Q& B* J> l% P, k% k% 2$ o$ #* 2$ J> *% Z% '& R@ D$ '& q; 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- ", +"q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; 5) 6) 7) 8) 9) 8) 8) 0) a) b) c) a# d) q; q; 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) f) q; q; q; q; q; q; q; q; q; q; q; q; q; 8- {, 3, Q@ #@ c- x- H) *- f= J= J= *- *- _, f= f= f= F> w- I) S* F> <) _, J) K) L) M) ' N) >> J# '& q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; {, '& >> >> 8- h= R@ R@ 6$ r$ f& j% Q& J> J> J> l% P, k% 2$ W& o$ o$ #* q$ o$ O) U= Z% P) _$ J; >> {, q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; q; ", +"8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 5) 6) Q) R) S) R) R) T) U) V) W) X) d) 8- 8- 8- 8- Z' Y) Z) `) ! .! +! @! #! $! %! &! G) *! =! -! ;! >! ,! '! )! !! ~! {! ]! ^! /! f) 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- t- 8- ' (! _! :! > >> h= R@ D; -& [> H; J> P, P, k% k% 2$ W& o$ h- #* #* q$ M& #* W& 7! [% 8! _$ J; >> {, 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- 8- ", +"{, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, 9! 0! a! b! c! d! d! e! f! g! c) h! >> {, {, {, {, {, {, !& {, i! l, j! k! l! m! n! o! b' p! q! r! s! t! u! v! w! x! y! z! A! B! C! {, {, {, {, {, {, {, {, {, {, {, {, O* 3, B J# R& /, D! *- J= v- J= v- J= *- J= *- _, w- F> y; D, *- ]* G> C; B E! r- F! G! H! I! J! K! {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, >> t- e= _$ 6$ [$ B* u* P, W& 2$ W& o$ o$ h- #* |% q$ q$ M& $& S& L! 0- l* 8! _$ 8- >> {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, {, ", +">> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> M! N! O! P! Q! R! R! S! d! T! U! U# V! >> >> >> >> >> >> >> >> C! d) @, W! X! Y! Z! `! ~ .~ +~ q! @~ #~ $~ %~ &~ *~ =~ -~ ;~ >~ ,~ '~ d) >> >> >> >> >> >> >> '& >> P) e= B m$ g- )~ F' *- /, /, v- J= v- J= J= J= f= J= !~ ~~ 4& D* {~ e= ' e= 3, ]~ ^~ /~ (~ _~ :~ 5, D' >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> t- t- e= |> D; #& l% [> 2$ h- o$ h- #* #* |% q$ S& M& M& n* z* $& |% <~ l* [~ e= t- >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> ", +"}~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ |~ 0! 1~ 2~ 3~ 4~ 4~ 5~ R! 6~ U! h! V! }~ }~ }~ }~ }~ }~ }~ }~ {, f) C! 7~ p! 8~ 9~ 0~ a~ b~ c~ d~ e~ f~ g~ h~ i~ j~ k~ l~ m~ n~ o~ p~ f) {, }~ }~ }~ }~ }~ {, 3, >> ' q~ r~ D! D, *- /, /, v- /, v- v- J= v- _, f= !~ s~ m* m$ >> ' _$ D' P) t- }~ {, t~ u~ v~ _~ w~ x~ y~ t~ {, }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ {, t- t- e= |> D; z~ k% Q& W& |% #* |% q$ q$ S& M& $& n* G* z* T= z* q$ <= A~ |> t- >> {, }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ }~ ", +">> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> B~ N! C~ D~ E~ F~ F~ G~ 4~ H~ I~ J~ t- >> >> >> >> >> >> >> >> >> >> >> K~ L~ M~ N~ O~ P~ Q~ R~ S~ T~ U~ V~ W~ X~ Y~ Z~ `~ { .{ +{ @{ 5! D' >> >> >> >> t- [~ Q@ U# w* w- #{ /, v- F' /, /, /, v- /, v- J= f= > P) 3, D' >> >> >> >> D' D' p~ &{ *{ ={ -{ '& K~ >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> t- 3, &- h= 6$ X= q$ J> #* S& q$ S& M& $& $& n* G* z* z* T= y* G* z* h& h= >> ;{ >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> ", +"O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* t- >{ ,{ '{ ){ !{ ~{ ~{ {{ F~ ]{ ^{ 1$ /{ O* O* O* O* O* O* O* O* O* O* O* O* O* K~ L~ ({ N~ _{ :{ <{ [{ }{ |{ 1{ 2{ 3{ 4{ 5{ 6{ 7{ 8{ 9{ 0{ a{ V! O* O* [~ {, ' v$ 3% )~ <) J= F' y; F' /, F' /, v- /, *- *- E' >% 9- R@ U# [~ P) t- O* O* O* O* O* O* O* O* L~ b{ c{ d{ e{ f{ g{ a{ O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* J# 3, J; |> <> <$ M& k% q$ $& M& $& n* G* G* z* h{ T= h{ m% h{ S& i{ >> J; 3, >> O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* O* ", +"D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' j{ k{ l{ m{ n{ o{ o{ p{ ~{ q{ ^{ &- r{ D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' 5! a{ s{ t{ u{ v{ w{ x{ y{ z{ A{ B{ C{ D{ E{ F{ G{ H{ I{ a{ J{ P) B K{ a$ (, L{ v- y; y; F' y; F' /, /, F' v- _, D, (, :$ M{ k$ P) J{ D' D' D' D' D' D' D' D' D' D' D' D' a{ N{ O{ P{ Q{ R{ S{ 5! D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' ;{ J{ 8- T{ <> 7= n* W& M& G* G* G* z* h{ h{ h{ T= h{ h{ T= U{ s$ V{ W{ J{ t- D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' D' ", +";{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ j{ X{ Y{ Z{ `{ ] ] .] +] @] #] $] 3, ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ %] &] *] T. =] -] ;] >] &] @~ ,] '] )] !] ~] {] ]] ^] /] _$ (] 1& _] P* z* h- n* h{ h{ h{ T= h{ T= h{ z* h{ T= S& m% ; e= 3, 3, t- ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ", +"3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 7] X{ 8] 9] 0] a] a] b] ] c] d] D$ e] 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, ]~ |] f] g] h] i] j] k] l] m] n] o] p] !] q] r] s] I& t] 2% u] v] /, > R@ 8! P) t- 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, /{ w] x] y] z] A] B] C] D] 3, /{ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, P) {, e= <> m$ T= q$ z* m% h{ T= h{ z* h{ z* G* h{ n* q$ 5= J; >> P) t- 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, ", +";{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ E] F] G] H] I] J] K] K] L] a] M] #] J; N] ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ w] O] |] P] Q] R] S] T] U] J{ V] W] X] Y] Z] `] ^ .^ +^ y; ^ v= ;; 7! $& m% T= h{ z* z* z* z* G* G* G* #* P' ,^ M> ;^ E] ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ;{ ", +"3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, '^ )^ !^ ~^ {^ ]^ ]^ ^^ /^ (^ d] `) P) 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, _^ ]~ :^ =^ <^ [^ }^ |^ 1^ 2^ 3^ 4^ 5^ 6^ 7^ 8^ 9^ 0^ a^ <) ~~ >^ K{ P) 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, b^ c^ d^ e^ f^ g^ h^ i^ j^ b^ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, P) [~ >> &- <> u$ S& h{ h{ z* z* G* z* G* n* G* z* h- k^ l^ >^ ;^ P) 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, ", +"P) _^ m^ P) P) P) P) P) P) P) P) P) P) P) P) P) P) P) P) P) n^ )^ o^ p^ q^ ~^ ~^ r^ s^ t^ u^ 8- v^ P) P) P) P) P) P) P) P) P) P) P) P) P) P) P) P) P) P) P) N] P) w^ x^ y^ z^ A^ B^ C^ D^ E^ F^ G^ H^ I^ J^ K^ L^ <) ~~ <) ~~ > U^ <] $& G* T= G* z* G* n* G* n* $& G* q$ S& Q' J; 3, [~ J{ P) P) P) P) P) P) P) P) P) P) P) P) P) P) P) P) P) P) P) P) P) P) P) P) P) P) P) P) P) P) P) P) P) P) P) P) P) P) P) P) P) P) P) P) P) P) P) P) P) P) P) P) P) P) P) P) P) P) P) P) P) P) ", +";^ V^ W^ X^ m] ;^ Y^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ n^ Z^ `^ / ./ p^ p^ +/ @/ #/ $/ 8- v^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ b^ N] J{ %/ &/ */ =/ B -/ ;/ >/ ,/ '/ )/ !/ ~/ a^ <) ~~ ~~ /, ~~ {/ Z& <] ]/ }~ ,^ ;^ ^/ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ b^ // (/ _/ :/ #^ m% S& h{ G* n* G* n* $& n* $& n* M& o$ ,* J{ }~ [] J{ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ", +"3/ 4/ 5/ 6/ 7/ 8/ 8/ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ 9/ 0/ a/ b/ c/ / / d/ e/ f/ g/ q; [~ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ P) h/ i/ j/ k/ l/ m/ n/ o/ p/ q/ r/ s/ t/ u/ v/ ~/ a^ w/ F' P= C, 8! P) ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ 8/ x/ y/ z/ A/ B/ C/ D/ E/ &] F/ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ [~ 8! 8- @& K& |% z* G* n* n* $& n* $& M& $& $& W& G/ z$ J; 8! [~ P) ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ;^ ", +"H/ I/ J/ K/ L/ M/ h/ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ N/ O/ P/ Q/ R/ S/ S/ T/ U/ V/ W/ {, X/ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ v^ Y/ Z/ `/ ( .( +( @( #( $( %( &( *( =( -( ;( >( ,( {/ '( )( N^ ;^ ,^ ;^ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [] !( ~( {( ]( ^( /( (( _( :( <( [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ ;^ [( ;{ J{ }( |% n* G* $& n* $& M& $& M& S& $& L! G* {~ |( [] [] ;^ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ ", +"1( 2( 3( 4( 5( 6( 7( 6/ v^ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ N/ O/ 8( 9( 0( a( a( b( c( d( W/ {, X/ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ ;^ [] e( f( g( h( i( j( k( ~/ l( m( n( o( p( q( r( I) s( >^ M> t( [] ;^ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ e( u( v( w( x( y( z( A( )& B( [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ ;^ 8! ;^ C( D( n* q$ G* $& M& $& M& S& M& S& M& |% o$ z; D' J{ [( ;^ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ [~ ", +"E( F( G( H( I( J( K( L( M( N( [] [] [] [] [] [] [] [] [] [] O( P( Q( R( S( T( T( U( V( W( X( >> [( [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] K{ C, Y( Z( `( _ ._ +_ @_ #_ F' $_ %_ &_ *_ =_ -_ ;_ >_ ,^ ,^ [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] <( ,_ '_ )_ !_ ~_ {_ ]_ <( [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] 8! K{ U^ l^ ^_ /_ n* $& M& M& S& M& S& q$ S& S& P, (_ M{ >> ,^ [] [] [] [] __ :_ <_ [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] ", +"[_ }_ |_ 1_ 2_ 3_ 4_ 5_ 6_ 7_ 8_ <( N( [( [( [( [( [( [( [( 9_ 0_ a_ b_ c_ d_ d_ e_ f_ g_ X( >> h_ [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [] ,^ i_ N^ :$ j_ k_ l_ m_ n_ o_ p_ q_ r_ s_ t_ u_ v_ w_ x_ y_ z_ [] [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( X/ <( A_ B_ C_ D_ E_ F_ X/ N( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( i_ [( ,^ D' ,^ 4$ G_ $& $& S& M& S& q$ S& q$ q$ S& 2$ T= H_ 3' ,^ [( [] 8_ I_ J_ K_ 8_ L_ [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( ", +"M_ N_ O_ P_ Q_ R_ S_ T_ U_ V_ 6_ W_ A_ 8_ <( N( [( [( [( [( 9_ 0_ X_ Y_ Z_ `_ `_ : .: +: X( >> h_ [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [] ,^ J{ D' @: #: $: %: &: *: =: -: ;: >: ,: ': ): !: ~: {: ]: F_ A_ N( X/ [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( X/ ^: z_ <( /: (: _: ]_ z_ 8! [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [] ,^ ;^ D' :: |% |% $& S& q$ S& q$ |% q$ |% q$ W& #* <: [: [] }: |: 1: 2: 3: 4: 8_ [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( ", +"5: 6: 7: 8: 9: 0: a: b: c: d: e: f: g: h: i: j: k: }: l: [( m: n: o: p: q: r: r: s: t: u: v: t- ,^ [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( t( [] D' /> w: ~~ /' /' ,( @_ x: y: z: A: B: C: D: E: F: G: H: I: J: k: [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( K: L: M: N: O: l: h_ l: [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( ,^ ,^ [: P: T= o$ M& S& q$ |% q$ |% |% #* q$ h- l% Q: h/ R: S: T: U: V: W: X: [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( ", +"Y: Z: `: < .< +< @< #< $< %< &< *< =< -< ;< >< i: h: h_ k: .; n: ,< '< )< !< !< ~< {< ]< v: t- ^< [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( K{ [( M{ [] D' _! /< ~~ D, D, D, (< _< :< << [< }< |< 1< 2< 3< 4< 5< 6< 7< 8< 9< K: h_ 0< [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( 0< l: h_ l: a< b< c< d< k: [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( K{ [( ,^ t( D' e< b- k% X* q$ |% |% |% #* |% #* #* |% B* f< g< h< i< j< k< K_ l< m< h_ 0< [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( [( ", +"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< M< N< O< P< Q< r{ t( ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ R< S< E] }~ _! /< T< k( k( D, D, D, U< V< W< X< Y< Z< `< [ .[ +[ @[ #[ $[ %[ &[ *[ K: ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ K: =[ -[ ;[ >[ ,[ '[ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ )[ ![ ![ ~[ W& #* S& |% #* |% #* h- #* h- |% {[ ][ ^[ /[ ([ _[ :[ X: <[ m< [[ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ,^ ", +"}[ |[ 1[ 0< 2[ 3[ ^< 4[ 5[ 6[ 7[ 8[ 9[ 0[ a[ b[ c[ d[ e[ f[ g[ h[ i[ j[ k[ l[ l[ m[ n[ o[ p[ 3, q[ t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( ,^ r[ D' s[ t[ u[ <) k( k( D, k( D, D, /' v[ w[ x[ y[ z[ A[ ,^ B[ C[ D[ E[ F[ G[ H[ I[ ^< I[ J[ t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( I[ K[ L[ M[ N[ O[ P[ Q[ J[ t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( ,^ t( t( R[ S[ S& W& q$ |% #* h- #* h- h- o$ T[ U[ V[ W[ X[ Y[ Z[ `[ } .} +} '[ t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( ", +"@} #} $} J[ %} '[ I[ &} &} ^< 4[ 5[ >< *} =} -} ;} >} ,} '} )} !} ~} {} ]} ^} ^} /} ^} (} p[ 3, q[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ t( ,^ r[ D' s[ .* _} <) k( k( D, k( D, k( D, <) _} :} <} [} }} |} 1} 2} ,[ 3} 4} 5} 6} 7} 8} 9} 0} '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ 0} a} b} c} d} e} I[ I[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ t( M{ D' f} 3$ g} q$ #* h- h- h- o$ h} i} j} k} l} m} n} l< o} p} q} r} s} I[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ '[ ", +")[ t} t} )[ t( t( t( t( t( )[ 2} 2} J[ u} $} v} w} x} y} z} A} B} C} D} E} j[ j[ F} {} G} H} I} S< t( t( t( t( t( t( t( t( t( t( t( t( t( )[ '[ J} K} L} .* u[ <) !~ k( D, k( D, k( D, /' u[ -% M} L( N} O} P} Q} R} ^< S} T} U} V} W} p] X} R} L[ t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( )[ ^< Y} Z} `} | .| 0} t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( S< ![ )[ +| g} h- #* o$ o$ @| #| $| %| &| *| =| -| ;| >| ,| '| )| !| 3[ t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( t( ", +"~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| t} 3[ 3[ q[ u} {| v} ]| ^| /| (| _| :| _| _| <| _| [| }| || 1| %} %} t} ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| t( v= }~ 2| .* u[ 3| !~ k( !~ k( D, k( D, /' 4| 5| T{ M{ 6| R} 7| 8| 9| 0| a| .| b| c| d| e| f| g| h| i| j| q[ ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| q[ k| l| m| n| o| p| j| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| t( 1< t( ;{ <] W& o$ h- W& q| r| s| t| u| v| w| x| y| z| r} A| B| C| D| 3[ E| q[ ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ~| ", +")[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ t} %} %} q[ F| G| H| I| J| K| L| L| M| N| O| P| Q| R| S| T| q[ %} %} t} )[ )[ )[ )[ )[ M{ )[ U| M> V| Q* {/ (, !~ k( k( !~ k( k( /' (, 4| 5| W| r[ S< )[ k| X| Y| Z| `| )[ S< 1 .1 +1 @1 #1 $1 %1 i| M{ t} )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ j| &1 *1 =1 -1 ;1 >1 j| )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ M{ 1< R[ ,1 2$ W& W& 2$ '1 )1 !1 ~1 {1 ]1 ^1 /1 (1 _1 !| :1 <1 [1 .} }1 3[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ )[ ", +"S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< %} |1 11 21 31 41 51 51 61 71 81 91 01 a1 b1 c1 d1 e1 f1 M{ k| k| S< S< S< )[ e< |( g1 F' _] (, !~ k( !~ !~ k( !~ D, k( /< h1 i1 J} S< M{ S< S< M{ J[ j1 k1 l1 m1 S< j| n1 o1 p1 q1 $1 r1 s1 t1 M{ S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< M{ t1 u1 m| v1 w1 >1 x1 S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< J} R[ y1 z1 k- A1 B1 C1 D1 E1 F1 G1 H1 I1 J1 m< K1 L1 M1 N1 O1 P1 Q1 R1 S1 S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< ", +"1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< T1 U1 V1 W1 X1 J| J| Y1 Z1 `1 2 j* .2 +2 @2 #2 $2 %2 M{ H< &2 1< *2 =2 e< 3' g1 F' u] /' D! !~ k( !~ k( !~ D, D! #{ -2 M> v= 1< M{ 1< 1< ;2 *2 >2 ,2 '2 )2 !2 ~2 {2 ]2 ^2 /2 (2 _2 f| :2 <2 *2 ;2 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< =2 [2 }2 |2 12 22 32 42 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< r[ J{ }( 52 62 72 82 92 02 a2 b2 c2 d2 e2 f2 g2 h2 f2 i2 j2 k2 l2 m2 g2 ;| 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< ", +"S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< n2 o2 p2 q2 r2 31 31 s2 31 t2 u2 v2 w2 x2 y2 z2 A2 B2 C2 D2 E2 &1 F2 G2 H2 I2 J2 u] /' D! !~ D! !~ k( !~ D, D! P= K2 L2 M2 N2 S< S< S< S< S< S< O2 P2 Q2 R2 S2 T2 ;| U2 V2 W2 X2 Y2 Z2 `2 3 1| 42 S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< O2 .3 +3 @3 #3 $3 %3 S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< N2 N2 i_ &3 *3 =3 -3 ;3 >3 ,3 Q& '3 )3 !3 ~3 {3 ]3 K1 ^3 /3 (3 _3 :3 <3 K1 S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< S< ", +"1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< [3 o2 }3 |3 13 W1 W1 23 W1 33 43 53 63 S< 73 83 93 03 a3 b3 c3 d3 e3 f3 g3 h3 i3 ,( j3 k3 l3 m3 n3 n3 o3 H) P= p3 q3 r3 N2 1< 1< 1< 1< 1< 1< 1< 1< s3 t3 u3 v3 w3 x3 s3 >2 y3 z3 A3 A3 B3 C3 ~2 s3 N2 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< N2 ;2 D3 E3 F3 G3 H3 N2 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< r[ S< t} I3 J3 K3 L3 M3 N3 O3 Y= P3 Q3 R3 S3 T3 ]3 U3 V3 W3 X3 Y3 Z3 `3 ]3 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< 1< ", +"r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ 4 .4 +4 @4 #4 q2 q2 $4 q2 %4 &4 l: *4 r[ =4 -4 1< ;4 >4 ,4 '4 )4 !4 ~4 {4 ]4 ^4 #( /4 (4 _4 :4 <4 [4 /4 }4 K2 >^ |4 N2 r[ r[ r[ r[ r[ r[ r[ r[ r[ s3 14 s3 24 R2 34 44 54 64 74 84 94 04 H: a4 b4 c4 54 r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ c4 d4 e4 f4 g4 h4 c4 r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ N2 v= E| i4 j4 k4 l4 m4 n4 o4 p4 *3 q4 r4 s4 t4 u4 v4 ]3 w4 S< x4 y4 z4 A4 ]3 B4 B4 r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ r[ ", +"C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 D4 E4 F4 G4 H4 I4 I4 J4 |3 K4 &4 R< J} s3 s3 c4 L4 =4 63 N2 M4 N4 O4 P4 Q4 R4 S4 T4 U4 V4 W4 X4 Y4 Z4 `4 5 .5 r3 N2 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 N2 c4 +5 @5 #5 $5 %5 &5 +5 *5 =5 -5 ;5 >5 ,5 '5 +5 c4 N2 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 s3 )5 !5 ~5 {5 ]5 ^5 s3 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 N2 /5 (5 _5 :5 <5 [5 }5 p4 Y= *3 |5 15 25 35 45 55 v4 65 75 85 95 05 a5 ^3 w4 b5 65 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 C4 ", +"J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} c5 .4 d5 e5 f5 g5 g5 h5 @4 i5 &4 h_ v= J} J} J} J} j5 k5 r[ l5 m5 n5 o5 p5 q5 r5 s5 t5 u5 v5 w5 x5 () y5 z5 A5 B5 r[ J} J} J} J} J} J} J} J} J} J} J} r[ C5 G| D5 E5 F5 G5 J} 44 H5 I5 J5 94 K5 L5 c4 j5 M5 J} r[ J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} r[ N5 d4 O5 @3 +3 h4 N5 r[ J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} P5 Q5 R5 S5 T5 U5 o4 Y= f& f& V5 W5 X5 Y5 Z5 `5 6 v4 65 J} ^3 .6 +6 @6 #6 $6 %6 j5 r[ J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} ", +"v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= &6 *6 =6 -6 ;6 >6 >6 ,6 G4 '6 )6 ^< e< v= v= v= v= v= v= U| k5 !6 ~6 {6 ]6 ^6 /6 (6 _6 :6 <6 [6 }6 |6 16 26 36 46 56 v= v= v= v= v= v= v= v= v= v= v= v= v= B5 66 76 86 96 66 06 14 a6 D[ b6 c6 d6 e6 f6 g6 h6 B5 i6 v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= k5 j6 k6 l6 m6 n6 o6 k5 v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= *4 v= L4 p6 q6 r6 s6 t6 u6 f& f& u* }> v6 w6 x6 y6 z6 A6 B6 U| v4 56 C6 D6 E6 F6 G6 H6 I6 J6 v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= v= ", +"J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} K6 *6 L6 M6 N6 O6 O6 P6 e5 Q6 R6 ,^ U| J} J} J} J} J} J} S6 C( T6 U6 (< m3 E' V6 W6 ^6 X6 Y6 Z6 `6 7 .7 +7 @7 #7 B5 J} J} J} J} J} J} J} J} J} J} J} J} J} k5 h6 $7 %7 &7 *7 =7 -7 ;7 >7 ,7 '7 )7 !7 ~7 {7 ]7 ^7 B5 J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} /7 (7 _7 @3 :7 <7 /7 J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} k5 k5 [7 56 }7 |7 17 27 37 47 57 a$ u* }> }> H; H; 67 77 87 97 07 a7 b7 *4 J6 c7 d7 e7 f7 g7 h7 L4 k5 J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} J} ", +"U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| i7 j7 k7 l7 m7 n7 n7 o7 p7 q7 )6 t( M2 U| U| U| U| U| S6 R[ r7 u[ !~ D! D! D! m3 m3 s7 t7 u7 v7 w7 x7 y7 z7 h6 U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| A7 B7 C7 D7 E7 F7 i6 G7 H7 D[ I7 J7 K7 L7 () M7 N7 O7 U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| O7 j6 P7 Q7 R7 /7 i6 U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| S7 T7 U7 V7 W7 X7 Y7 Z7 `7 8 d- .8 N= H; H; [& [& [& +8 @8 #8 $8 %8 &8 b7 *8 =8 -8 ;8 >8 ,8 '8 U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| ", +"M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 )8 !8 ~8 {8 ]8 ^8 ^8 /8 M6 (8 _8 }1 :8 M2 M2 M2 M2 r3 S< <8 [8 u] !~ H) D! H) D! H) ,( }8 |8 18 28 38 48 58 68 78 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 88 98 08 a8 b8 c8 d8 e8 f8 g8 h8 i8 j8 k8 l8 m8 n8 o8 p8 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 98 q8 r8 s8 t8 u8 v8 88 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 w8 x8 y8 z8 A8 B8 C8 D8 E8 F8 56 U| l- W* u* [& [& j% j% :; G8 H8 I8 J8 K8 L8 M8 L8 N8 O8 P8 Q8 R8 S8 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 ", +"U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| O7 T8 !8 U8 V8 W8 X8 X8 Y8 l7 Z8 _8 t( M2 U| U| O7 U| S6 [: `8 9 D, H) D! H) D! H) k( #: .9 +9 @9 #9 $9 %9 &9 *9 08 98 U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| 06 06 =9 -9 Z| ;9 >9 M2 ,9 '9 )9 !9 ~9 {9 ]9 ^9 /9 78 O7 U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| A7 (9 _9 :9 <9 [9 }9 98 U| O7 U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| w8 |9 19 29 39 49 59 69 79 89 99 4, S< 09 i- @* H; j% j% :; X& X& a9 b9 c9 d9 e9 <> f9 g9 h9 i9 j9 56 88 06 U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| U| ", +"M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 k9 l9 m9 n9 o9 p9 p9 q9 r9 s9 t9 M{ r3 M2 M2 M2 u9 v9 w9 4| k( H) D! H) H) D! D! H) D! x9 y9 z9 A9 B9 C9 D9 E9 F9 G9 e8 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 78 H9 I9 J9 K9 L9 l5 M9 N9 O9 P9 Q9 R9 S9 T9 G9 e8 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 e8 U9 V9 W9 X9 Y9 Z9 e8 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 `9 0 .0 +0 @0 #0 $0 %0 &0 *0 :8 S6 )[ =0 }> X& j% :; X& X& @* @* -0 ;0 >0 ,0 '0 )0 !0 ~0 {0 ]0 ^0 /0 (0 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 M2 ", +":8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 r3 _0 :0 <0 [0 }0 |0 |0 10 V8 20 30 ;2 |4 :8 M2 S6 )[ 40 ~~ P= !~ H) H) H) D! H) D, 50 60 70 L} 78 80 90 M9 00 a0 b0 G9 78 r3 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 c0 p8 d0 e0 f0 g0 h0 l5 i0 j0 k0 l0 m0 n0 o0 p0 q0 78 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 80 r0 s0 t0 u0 v0 w0 x0 y0 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 z0 A0 B0 C0 D0 E0 F0 G0 H0 A7 :8 M2 I0 '[ J0 .8 :; :; X& @* W* W* K0 L0 M0 N0 O0 P0 Q0 R0 S0 T0 U0 V0 (0 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 :8 ", +"W0 W0 W0 W0 W0 W0 W0 W0 W0 W0 W0 W0 W0 W0 W0 W0 W0 W0 W0 W0 z$ X0 Y0 Z0 `0 a a .a +a @a 30 S< #a W0 r3 S6 $a %a &a D, H) D! H) D! H) k( 4| *a )[ #a r3 W0 W0 e8 =a -a ;a >a ,a 'a y0 W0 W0 W0 W0 W0 W0 W0 W0 W0 W0 W0 W0 W0 W0 W0 W0 y0 )a !a ~a {a ]a ^a /a (a _a :a b ,b 'b )b !b ~b {b ]b S6 Pa #a #a Ja $a p3 ^b X& W* !% !% y- /b (b _b :b c u[ k( H) D! H) D! H) D, _} ,c 'c )c #a #a #a #a #a #a #a !c gb ~c {c ]c ^c kb Ka #a #a #a #a #a #a #a #a #a #a #a #a #a #a #a /c (c /a _c :c d ,d 'd )d !d ~d {d ]d ^d /d (d _d :d r3 e ,e 'e )e `d yc Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja ", +"!e ~e {e ]e ^e /e (e ia _e 0d 9d 0d :e _e f ,f 'f )f !f ~f {f ]f ^f /f (f _f :f :f g ,g 'g )g !g Vd ~g {g {g ]g ^g /g (g _g :g h ,h 'h Vd )h ^g ^g !h ~h {h ]h ^h /h (h T. _h :h i ,i 'i v7 )i j ,j 'j )j !j ~j {j ]j ^j /j (j _j {i Gi Gg Gg Gg Gg Gg Gg Gg Gg Gg Gg Gg Gg Gg Gg Gg Gg Gg Gg Gg Gg Gg Gg Gg Gg Gg Gg Gg Sh Gi Sh :j k ,k 'k mh Gg )c )c )c )c mi bj )k !k ~k {k ]k ^k /k (k i% 5$ 5$ F* _k :k l Gg Gg Gg Gg Gg Gg Gg Gg Gg Gg Gg Gg Gg Gg Gg Gg Gg Gg Gg Gg Gg Gg Gg ", +"09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 09 be _> ,l 'l Vd )l !l !l ~l !l {l ]l ^l /l (l _l :l Kl Ll yj Ml Nl Nl Ol Nl Pl Ql Rl Sl Tl Ul Vl Wl Xl Yl Zl Ek 6k 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j `l m .m +m @m #m $m Ek 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j `l %m &m *m =m -m ;m >m Wj ,m 'm )m !m hg ~m %m `l 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j {m ]m ^m /m (m _m {m 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j 'j Ic :m n ,n 'n )n !n ~n {n 2h qm qm qm qm qm qm qm qm ]n ^n /n (n _n :n o ;o ,o Ql v] gn k( )~ 'o )o !o ~o {o ]o ^o Zl Im /o qm qm qm qm qm qm qm qm qm qm qm qm qm qm qm qm qm qm qm /o Im (o _o :o n ko lo mo no oo po qo qm qm qm qm qm qm qm qm qm Hm ro so to uo vo wo xo f% )* _* (k yo zo Ao Bo Co Do Eo Fo Go Ho Io qm qm qm qm qm qm qm qm qm qm qm qm qm qm qm qm qm qm qm qm qm ", +"2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h Jo Ko Lo vm Mo No No Oo No Po Qo Ro So /' _} To Uo Vo $/ Wo {o Xo Yo Zo |l 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h `o p .p +p @p p `o 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h |l Zo #p $p %p &p *p =p -p |i ;p >p ,p 'p )p !p ~p `o 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h |l =p Im @n {p ]p rn ^p 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h 2h /p (p _p :p

    q ,q 'q )q !q ~q {q 8e Lj Lj Lj Lj Lj Lj Lj Lj Lj Lj Lj Lj Lj Lj Lj Lj Lj Lj Lj Lj ", +"]q ]q ]q ]q ]q ]q ]q ]q ]q ]q ]q ]q ]q ]q ]q ]q ]q ]q ]q )o ], ^q /q ;o (q _q _q :q r ,r 'r )r !r ~r @r Lj )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o yq )o {r ]r ^r /r (r _r rp )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o :r s 8f ,s 's )s !s ~s 7r 8f 8f 8f 8f 8f 8f 8f 8f 8f 8f 8f 8f 8f @r {s ]s ^s /s (s _s /* +* :s r xs ys Wr s Ar )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o zs As Bs Cs Ds Es ~r .s Hr )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o 8f Fs Gs Hs ;s yq 8f 8f 8f Is Js Ks Ls Ms 6r Ns )o )o )o )o )o )o )o )o )o )o )o )o )o pr Os Ps Qs Rs Ss Ts 8& ^* ]* Us Vs Ws Xs Ys Zs `s t .t +t @t yq yq )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o )o ", +" s s s s s s s s s s s s s s s s s s s s #t $t %t &t *t =t =t -t ;t >t ,t 't ^> Dh )o Xq s s s s s )t !t ~t {t ]t ^t /t (t Ns s s s s s s s s s s s s s s s s s s s s _t :t u ,u 'u Q< |t )u ,m !u !t |t ~u {u ]u ^u /u (t 7t 2q 2q 2q 2q 2q 2q 2q 2q 2q 2q 2q 2q 2q 2q 2q 2q 2q 2q 2q 2q 2q 2q 2q 7t (u Xq _u :u v ,v )t s s s s s s s s s s s s s s s s s ", +"2q 2q 2q 2q 2q 2q 2q 2q 2q 2q 2q 2q 2q 2q 2q 2q 2q 2q 2q is 'k 'v )v !v ~v {v {v ]v ^v /v (v _v :v Wt 2q 2q 2q 2q 2q 2q 2q 2q 2q 2q w ,w 4v &w yu yu yu yu yu yu yu yu yu yu yu yu yu yu yu yu 4v p[ 'w )w T. !w y7 ~w {w ]w yu yu yu yu yu yu yu yu yu yu yu yu yu yu yu &w u (w _w :w gv x ,x 'x 4v is is )x !x ~x {x ]x ^x !x )x is is is is is is is is is is is is is is is is uv Iv /x (x _x :x ap 8& e% y {* e% ,y 'y )y !y ~y {y ]y ^y /y (y uw %w x Nw Nw Nw Nw Nw Nw Nw Nw Nw Nw Nw Nw Nw Nw Nw ", +"Nw Nw Nw Nw Nw Nw Nw Nw Nw Nw Nw Nw Nw Nw Nw Nw Nw Nw hx _y :y z ,z ,z 'z }y )z !z )o 0y %w %w %w %w %w %w %w %w %w %w %w %w %w %w Tx hy ~z {z ]t ]z ^z /z 5y Tx %w %w %w %w %w %w %w %w %w %w %w %w %w %w %w %w %w 5y (z _z :z A ,A 'A %w %w %w %w %w %w %w %w %w %w %w %w %w %w %w %w %w %w 0y )A !A 1z ~A {A ]A &A ^A /A (A _A :A u =B ,A -B ;B >B ,B D) 'B )B !B ~B {B ]B ^B /B (B _B +A :B &A 0y ZA }z }z }z }z }z }z }z }z }z }z }z }z }z }z }z 0y *A C ,C 'C )C !C ~C {C ]C ^C $z $z $z $z $z $z $z $z $z $z $z $z $z $z $z $z Wt /C =A (C _C :C D ,D 'D )D !D $C ~D {D ]D $z $z $z $z $z $z Wt QB ]D QB MC QB $z $z $z $z Wt YC ^D /D (D _D YC $z $z $z $z $z $z $z $z $z $z $z $z $z $z $z $z $z $z $z $z $z $z $z $z $z $z $z QB MC :D D, DD IB ED FD GD HC HC HD ID JD KD (t BD $z $z $z $z $z $z $z $z $z $z $z $z $z $z $z $z $z $z LD &4 TC MD ND lx OD PD QD LD $z $z $z $z $z $z $z $z $z $z $z $z $z $z $z QD RD SD YB TD UD QD $z $z $z $z $z $z $z $z $z $z $z $z $z $z $z $z $z $z YC cD VD WD XD () YD ZD `D 2u E .E +E @E #E $E %E &E *E =E -E ;E >E ,E 'E $z QB $z QD 'E $z YC $z )E RB YC $z $z $z $z $z $z 43 !E ~E {E ]E ^E $z $z $z $z $z $z $z $z $z $z $z $z $z $z $z $z $z $z $z $z $z $z $z $z $z $z $z $z QB QB /E (E _E A SE QD hx hx hx hx hx hx hx hx hx hx hx hx hx hx hx hx hx hx BD LD TE UE VE WE XE YE ZE `E F .F +F @F #F $F %F &F OC *F =F -F ;F >F ,F TE hx 'F )F !F &4 LD lD ~F {F ]F BD hx hx hx hx BD 43 ^F /F (F _F :F 43 hx hx hx hx hx hx hx hx hx hx hx hx hx hx hx hx hx hx hx hx hx hx hx hx hx hx hx hx BD BD TE G ,G 'G )G !G ~G {G *G ]G ^G /G (G _G :G wF NF Rz Rz TE H ,H 'H )H !H ~H {H ]H ^H /H (H _H :H OF [G I ,I 'I )I OE !I ~I Rz Rz Rz Rz Rz Rz Rz Rz Rz Rz Rz Rz EB NF SF WC {I 'G NF EB Rz Rz Rz Rz Rz Rz Rz Rz Rz Rz Rz Rz Rz Rz Rz Rz Rz Rz Rz 'G ]I ^I /I (I _I :I F 8I 9I 0I aI bI cI dI eI fI gI hI iI jI kI lI ~I Rz Rz EB mI nI oI pI qI 3G Rz Rz Rz Rz Rz Rz Rz Rz Rz Rz Rz Rz Rz Rz Rz Rz Rz Rz Rz Rz Rz Rz Rz Rz Rz Rz Rz Rz Rz EB NF HH rI rI HH sI tI uI aG vI wI xI yI zI AI BI CI DI EI FI GI mG Rz Rz Rz Rz Rz Rz Rz Rz Rz Rz Rz Rz Rz Rz Rz Rz Rz Rz Rz Rz Rz Rz Rz Rz Rz Rz Rz Rz Rz Rz nG HI II JI rG EB Rz Rz gH KI LI MI NI MI OI EB Rz Rz Rz Rz Rz Rz Rz Rz Rz Rz Rz Rz Rz Rz Rz Rz Rz Rz Rz Rz Rz mG PI QI RI SI TI UI ~* VI WI XI YI ZI cD GI `I J .J +J NG Rz Rz Rz Rz Rz Rz Rz Rz Rz Rz Rz ", +"yE yE @J #J $J %J &J *J =J -J ;J >J ,J 'J hF QB )J !J xr ~J {J ]J ^J /J (J _J _J :J K ,K YF yE yE yE yE yE yE yE yE yE yE yE yE yE yE yE yE yE yE yE yE yE yE yE @K 'K )K !K LH OH ~* ~K {K ]K ^K /K (K x @K _K :K L ,L CK EB EB EB EB EB EB EB EB EB EB EB EB EB EB EB EB EB EB EB EB EB EB EB EB EB EB EB EB EB EB HF 'L PJ vI )L !L ~L {L ]L ^L /L (L _L :L M ,M 'M )M !M ~M {M ]M ^M pv 0E /M xG (M _M :M N ,N ,N 'N FL )N !N ~N {N ]N ^N /N (N _N :N O rN ;O ,O 'O )O !O ~O {O ]O hL yM xF xF xF xF xF xF xF xF xF xF xF xF xF xF xF xF xF xF xF xF xF xF xF xF xF xF xF xF ^O /O (O _O :O QL xF xF xF xF #K P ,P 'P )P !P ~P {P ]P M M M M M M M M M M M M PN rN YN ^P /P YN rN PN M M M M M M M M M M M M M M M xG PN 1M (P _P :P

    Q ,Q 'Q )Q !Q ~Q {Q ]Q ^Q /Q (Q _Q :Q R ,R Fa xF xF xF xF 'R 'R xF 'R 'R xF xF xF xF xF xF xF xF xF xF xF xF xF xF xF xF xF xF xF xF xF xF rP )R !R ~R {R ]R ^R /R (R _R :R S 5# ,S 'S )S !S .R ~S PA PA PA PA PA PA PA PA PA PA PA @Q {S ]S ^S /S (S GQ PA PA PA PA PA PA PA PA PA PA PA PA PA ~S .R _S :S T ,T QP 'T )T !T ~T {T ]T PA PA PA PA PA PA PA PA ", +"^T /T (T _T :T U ,U 'U )U !U ~U {U ]U CS wS ^U /U ]U GQ ES cb ~S 'R 'R 'R 'R 'R 'R 'R 'R 'R 'R 'R 'R 'R 'R 'R 'R 'R 'R 'R @Q (U ^R _U :U V +O DS +V +V +V +V +V +V +V +V +V +V ,V 'V EQ )V !V ~V +O +V +V +V +V +V +V +V +V +V +V +V +V ,V {V ]V ^V /V (V AQ DS +V +V +V +V ,V _V :V W ,W 'W )W !W ~W {W ]W fR +V +V +V +V +V +V +V ", +"^W /W (W _W :W V @V wW xW zV yW zW AW BW CW DW EW FW GW HW IW JW KW LW MW NW OW PW QW RW SW TW UW VW WW XW YW ZW `W X .X +X @X #X $X %X &X *X =X -X ;X >X ,X 'X )X !X gW ~X pW pW 5W 5W 5W 5W 5W 5W 5W 5W 5W 5W 5W 5W 5W {X ]X ^X /X (X _X :X Y ,Y 'Y )Y !Y ~Y {Y ]Y ^Y /Y (Y _Y :Y Z ,Z 'Z 5W 5W )Z )Z )Z JX 5W !Z }z ~Z LX v- /, /, /, MX 8W {Z ]Z ^Z SX SX /Z (Z _Z :Z EB ` ,` '` )` !` ~` {` ]` ^` /` 4W (` FX 5W 5W 5W 5W 5W 5W 5W 5W 5W 5W 5W 5W 5W 5W 5W 5W 5W 5W 5W 5W 5W 5W )Z _` :` <` [` }` |` 1` 2` 3` fW fW 4` 5` 6` 7` TY 8` 5W 5W 5W 5W 5W 5W 5W 5W 5W 5W 5W 5W 5W 5W 5W 5W 5W 5W 5W 5W 5W 5W 5W 5W 5W 5W 5W 5W JX ., .' .) .! .~ .{ .] .^ ./ .( ._ .: .< .[ .} .| .1 .2 .3 .4 .5 .6 .7 .8 .9 .0 .a .b .c .d .e .f .g .h .i .j .k .l ...,..x` x` '..)..!..~..~I +W &..&..&..&..&..&..&..&..&..&..&..&..&..&..&..&..&..&..&..&..&..&..&..&..&..&..&..&..&..&..{..]..^../..(.._..:..<..[..7Z n` [Z JX &..&..&..&..&..&..&..}..|..1..DQ 2..3..{..&..&..&..&..&..&..&..[Z 4..5..6..7..8..9..3..}..&..&..&..&..[Z JX 0..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..Q..R..S..T..U..V..W..X..Y..Z..`..9 . +..+.++.@+.#+.$+.[Z )Z n` JX [Z &..[Z N` %+.&+.n .*+.=+.[Z -+.o .;+.>+.,+.'+.)+.!+.AY ~+.{+.]+.^+./+.(+.zY &+.JX &..&..&..&..&..&..&..&..&..&..&..&..&..&..&..&..&..&..&..&..&..[Z &..JX _+.:+.<+.[+.}+.|+.1+.Q .h` 2+.3+.4+.5+.6+.h` &..&..&..&..&..&..&..&..&..&..&..&..&..&..&..&..&..&..&..&..&..&..&..&..&..&..&..&..&..&..*..7+.8+.9+.0+.a+.b+.c+.X .d+.e+.f+.g+.h+.i+.j+.k+.l+.m+.n+.o+.4W &..&..&..&..", +"A` @.,@.'@.)@.!@.~@.{@.]@.^@./@.(@._@.:@.<@.[@.}@.|@.1@.2@.3@.4@.5@.6@.W..7@.8@.9@.0@.a@.b@.c@.d@.e@.f@.g@.h@.i@.j@.k@.N` l@.m@.k@.6Z #.,#.'#.A` $.o@.,$.'$.)$.!$.o@.&$.~$.{$.]$.^$./$.($._$.:$.<$.&$.!Z !Z !Z !Z !Z !Z !Z !Z !Z !Z !Z !Z !Z !Z !Z !Z !Z !Z !Z !Z !Z &$.[$.}$.|$.1$.2$.3$.4$.5$.6$.YY 7$.8$.9$.0$.a$.U@.!Z !Z !Z !Z !Z !Z !Z !Z !Z !Z !Z !Z !Z !Z !Z !Z !Z !Z !Z !Z !Z !Z !Z !Z !Z !Z !Z !Z !Z !Z !Z b$.Hx c$.d$.=W e$. Z f$.g$.h$.i$.j$.k$.l$.m$.n$.o$.p$.q$.r$.s$.t$.u$.!Z !Z !Z ", +"+W +W +W +W +W +W +W +W +W +W +W *..v$.w$.y; *- J= J= J= v- ~#.x$.y$.z$.A$._#._#.B$.C$.D$.E$.PN )#.+W +W +W +W +W +W +W +W +W +W +W +W +W +W +W +W +W +W +W +W +W +W +W +W +W +W +W +W +W +W +W P+.P+.k#.F$.D` G$.H$.I$.6#.7#.J$.K$.P+.P+.+W +W +W +W +W +W P+.g#.L$.M$.5H N$.O$.+W +W +W P+.P$.Q$.R$.S$.T$.U$.V$.W$.X$.V$.}#.P+.Y$.Z$.`$. %..%.+%.@%.#%.$%.%%.q#.q#.q#.&%.*%.=%.-%.;%.>%.q#.q#.q#.,%.'%.)%.!%.~%.{%.q#.q#.q#.q#.q#.q#.]%.^%./%.(%._%.:%.<%.[%.}%.|%.1%.2%.3%.4%.5%.6%.7%.8%.9%.0%.a%.b%.c%.d%.e%.f%.g%.h%.i%.j%.k%.l%.m%.n%.o%.p%.q%.r%.s%.p%.t%.u%.v%.w%.x%.P+.y%.z%.A%.B%.C%.D%.E%.w@.F@.F%.G%.H%.I%.J%.K%.L%.M%.A` j#.+W +W +W +W +W +W +W +W +W +W +W +W +W +W +W +W +W +W +W A` N` N%.O%.P%.Q%.R%.S%.T%.U%.V%.j#.k@.W%.X%.Y%.A` A` +W +W +W +W +W +W +W +W +W +W +W +W +W +W +W +W +W +W +W +W +W +W +W +W +W +W +W +W +W +W +W *..Z%.`%. &..&.+&.@&.#&.$&.%&.2& &&.*&.=&.k` -&.;&.>&.,&.'&.)&.!&.YY +W +W +W ", +")#.)#.)#.)#.)#.)#.)#.)#.)#.)#.)#.~&.7+.{&.D, f= *- J= J= J= ]&.{#.^&./&.(&.C$.C$._&.:&.<&.[&.$Q *..)#.)#.)#.)#.)#.)#.)#.)#.)#.)#.)#.)#.)#.)#.)#.)#.)#.)#.)#.)#.)#.)#.)#.)#.)#.)#.)#.)#.)#.)#.)#.)#.}&.a#.|&.2#.1&.2&.3&.4&.5&.6&.7&.8&.}&.)#.)#.)#.)#.)#.)#.)#.}&.8&.9&.0&.a&.V$.b#.)#.[#.b&.c&.d&.e&.f&.}#.}&.g&.h&.i&.j&.k&.)#.l&.m&.n&.o&.p&.q&.r&.s&.t&.u&.q#.q#.q#.v&.w&.x&.y&.z&.A&.q#.q#.q#.B&.C&.D&.E&.F&.G&.q#.q#.q#.q#.q#.q#.H&.I&.J&.K&.L&.M&.N&.O&.P&.Q&.R&.S&.T&.U&.V&.W&.X&.Y&.Z&.`&. *..*.+*.@*.#*.$*.%*.&*.**.=*.-*.;*.>*.,*.'*.)*.)#.!*.~*.{*.]*.^*./*.(*._*.:*.<*.^*.[*.}*.|*.1*.2*.3*.4*.5*.6*.7*.8*.9*.0*.a*.b*.c*.d*.)#.)#.)#.)#.)#.)#.)#.)#.)#.)#.)#.)#.)#.)#.)#.)#.)#.)#.)#.e*.f*.g*.h*.i*.j*.k*.l*.m*.n*.o*.p*.q*.r*.s*.t*.[#.)#.)#.)#.)#.)#.)#.)#.)#.)#.)#.)#.)#.)#.)#.)#.)#.)#.)#.)#.)#.)#.)#.)#.)#.)#.)#.)#.)#.)#.)#.)#.)#.u*.v*.~Z 1& w*.x*.y*.z*.A*.B*.C*.D*.E*.F*.G*.H*.I*.J*.K*.L*.Pz }S M*.[#.)#.)#.", +"*..*..*..*..*..*..*..*..*..*..*..N*.Hx -..Ro f= J= J= J= *- ~#.O*.P*.Q*.R*.:&.:&.S*.T*.U*.V*.@Q W*.*..*..*..*..*..*..*..*..*..*..*..*..*..*..*..*..*..*..*..*..*..*..*..*..*..*..*..*..*..*..*..*..}&.X*.}&.Y*.Z*.m#.*..`*. =..=.ZX JT +=.]*.}&.*..*..*..*..*..]*.3&.@=.#=.$=.%=.&=.*=.==.-=.;=.U~ >=.,=.K+.K+.'=.)=.!=.~=.{=.]=.^=./=.(=._=.:=.<=.[=.}=.|=.1=.q#.q#.q#.2=.3=.4=.5=.6=.7=.q#.q#.q#.8=.9=.0=.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=.H=.K=.L=.M=.N=.O=.P=.Q=.R=.S=.T=.U=.V=.W=.X=.Y=.Z=.`=. -..-.+-.@-.@-.#-.^*.Y=.$-.%-.&-.*-.=-.--.;-.>-.,-.'-.e*.)-.M*.*..*..*..*..*..*..*..*..*..*..*..*..*..*..*..*..*..*..!-.~-.{-.]-.^-./-.(-._-.:-.<-.[-.}-.|-.1-.2-.e*.*..*..*..*..*..*..*..*..*..*..*..*..*..*..*..*..*..*..*..*..*..*..*..*..*..*..*..*..*..*..*..*..*..*..+V 3-.4-.5-.+#.6-.@&.7-.8-.9-.0-.a-.b-.c-.d-.e-.M*.f-.g-.h-.i-.j-.W*.[#.*..", +"k-.k-.k-.k-.k-.k-.k-.k-.k-.k-.*..*..'R l-.~~ f= *- *- *- *- m-.n-.o-.p-.q-.r-.r-.s-.p-.t-.[&.@Q *..k-.k-.k-.k-.k-.k-.k-.k-.k-.k-.k-.k-.k-.k-.k-.k-.k-.k-.k-.k-.k-.k-.k-.k-.k-.k-.k-.k-.k-.k-.k-.k-.k-.K+.'=.u-.2#.v-.w-.x-.y-.z-.A-.B-.C-.D-.]*.}&.k-.k-.k-.k-.}&.E-.F-.G-.H-.I-.J-.K-.L-.M-.N-.O-.P-.k#.}&.K+.Q-.R-.S-.'=.T-.U-.V-.W-.X-.Y-.p&.Z-.`-. ;..;.+;.q#.q#.q#.@;.u&.#;.$;.%;.&;.q#.q#.q#.*;.=;.-;.;;.>;.,;.';.);.!;.~;.{;.];.^;./;.(;._;.:;.<;.[;.};.|;.1;.2;.3;.4;.5;.6;.7;.8;.9;.0;.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;.C;.&-.F;.G;.H;.I;.J;.K;.L;.M;.N;.b*.}&.X*.k-.k-.k-.k-.k-.k-.k-.k-.k-.k-.k-.k-.k-.k-.k-.k-.k-.k-.O;.P;.Q;.R;.S;.T;.U;.V;.)-.b*.W;.X;.Y;.Z;.`;. >.o` k-.k-.k-.k-.k-.k-.k-.k-.k-.k-.k-.k-.k-.k-.k-.k-.k-.k-.k-.k-.k-.k-.k-.k-.k-.k-.k-.k-.k-.k-.k-.k-.k-.*..JX .>.Z& =- +>.@>.#>.z*.$>.%>.&>.*>.=>.->.;>.>>.[#.,>.JX '>.)>.CB [$.W*.[#.", +"*..*..*..*..*..*..*..*..*..*..b$.+W !>.~>.v- _, _, _, _, f= {>.]>.^>.p-./>./&./&.(>._>.:>.<>..V b$.*..*..*..*..*..*..*..*..*..*..*..*..*..*..*..*..*..*..*..*..*..*..*..*..*..*..*..*..*..*..*..*..*..[>.*..}>.|>.1>.2>.*..x-.3>.4>.A-.B-.5>.6>.7>.[>.*..*..*..8>.9>.0>.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>.q#.q#.q#.C>.D>.E>.F>.G>.H>.q#.q#.q#.I>.J>.K>.L>.q#.q#.q#.q#.q#.M>.N>.O>.P>.Q>.R>.S>.T>.U>.V>.W>.X>.Y>.Z>.`>. ,..,.+,.@,.#,.$,.%,.&,.*,.=,.-,.;,.>,.,,.',.a=.),.!,.~,.{,.],.^,./,.(,._,.:,.<,.[,.},.|,.1,.2,.3,.4,.5,.6,.4,.7,.4,.8,.G;.9,.0,.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,.3& A,.B,.C,.D,.E,.F,.G,.H,.I,.J,.K,.L,.M*.y,.M,. T,.U,.V,.W,.X,.W,.W,.Y,.Z,.`,.<>..V '.u*.u*.u*.u*.u*.u*.u*.u*.u*.u*.u*.u*.u*.u*.u*.u*.u*.u*.u*.u*.u*.u*.u*.u*.u*.u*.u*.u*.u*.u*.u*.u*.u*.u*.l>.3>..'.+'.@'.3>.l>.l>.#'.4>.A-.mW 5>.#'.$'.%'.u*.u*.l>.f&.&'.*'.='.-'.;'.>'.,'.''.)'.!'.~'.R,.b$.%'.{'.]'.^'./'.('._'.:'.<'.['.}'.|'.1'.z>.Z-.2'.3'.q#.q#.q#.4'.5'.6'.7'.8'.9'.q#.q#.q#.0'.a'.b'.c'.q#.q#.q#.q#.q#.q#.q#.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'.Q'.R'.S'.T'.U'.V'.W'.X'.Y'.Z'.`'.L . )..).8,.+).@).#).$).%).&).*).=).-).D%.;).`'.>).u*.u*.u*.u*.u*.u*.u*.u*.u*.u*.u*.u*.u*.u*.>).j,.,).').)).!).~).{).]).^)./).y,.u*.()._).:).<).[).}).^-.>).u*.u*.u*.u*.u*.u*.u*.u*.u*.u*.u*.u*.u*.u*.u*.u*.u*.u*.u*.u*.u*.u*.u*.u*.u*.u*.u*.u*.u*.u*.u*.u*.b$.b$.+W |).2& 7% +>.@>.1).2).3).4).IS 5).6).7).8).9).0).a).b).c).d).e).f).g).", +"[>.[>.[>.[>.[>.[>.[>.[>.[>.[>.h).v*.i).j).F> _, _, _, _, F> T,.k).l).m).n).m).m).o).p).q).<>..V b$.[>.[>.[>.[>.[>.[>.[>.[>.[>.[>.[>.[>.[>.[>.[>.[>.[>.[>.[>.[>.[>.[>.[>.[>.[>.[>.[>.[>.[>.[>.[>.[>.[>.[>.%'.>).x-.r).s).t).[>.%'.k>.#'.4>.A-.u).v).~=.l>.[>.[>.[>.k>.'=.w).x).y).z).A).k>.B).C).D).E).7>.%'.[>.F).G).H)._'.I).J).K).L).M).N).O).v>.P).Q).R).S).q#.q#.q#.q#.q#.q#.q#.q#.q#.q#.q#.q#.T).U).V).W).X).Y).Z).`). !.q#.q#.q#..!.+!.@!.#!.$!.%!.&!.*!.=!.-!.;!.>!.,!.'!.)!.!!.~!.{!.]!.^!./!.(!._!.:!..[>.[>.[>.[>.[>.[>.[>.[>.[>.[>.[>.[>.[>.[>.b$.y!.z!.A!.B!.C!.D!.E!.F!.G!.,>.y,.H!.I!.J!.K!.L!.M!.N!.O!.R,.[>.[>.[>.[>.[>.[>.[>.[>.[>.[>.[>.[>.[>.[>.[>.[>.[>.[>.[>.[>.[>.[>.[>.[>.[>.[>.[>.[>.[>.[>.[>.[>.[>.h).v*.P!.T* 7% 6% Q!.R!.S!.T!.U!.V!.W!.X!.Y!.Z!.`!. ~.^-.^-..~.+~.@~.#~.$~.", +"$'.$'.$'.$'.$'.$'.$'.$'.$'.$'.%~.*L &~.*~.F> f= f= f= f= w- =~.-~.;~.>~.,~.'~.'~.)~.!~.~~.{~.)Z N*.$'.$'.$'.$'.$'.$'.$'.$'.$'.$'.$'.$'.$'.$'.$'.$'.$'.$'.$'.$'.$'.$'.$'.$'.$'.$'.$'.$'.$'.$'.$'.$'.$'.$'.$'.]~.^~./~.(~._~.{'.:~.$'.]~.<~.4>.A-.[~.}~.|~.8>.$'.$'.b$.:~.1~.2~.3~.4~.5~.<~.6~.7~.8~.{'.:~.9~.0~.a~.b~.c~.d~.e~.f~.g~.h~.i~.j~.k~.l~.m~.n~.o~.p~.q#.q#.q#.q~.r~.s~.t~.u~.v~.q#.q#.q#.w~.x~.y~.z~.A~.B~.C~.D~.E~.F~.G~.q#.H~.I~.J~.K~.L~.M~.N~.O~.P~.Q~.R~.S~.T~.U~.V~.W~.X~.Y~.Z~.`~. {..{.+{.@{.#{.${.%{.&{.*{.${.={.-{.;{.>{.,{.'{.){.!{.~{.{{.]{.^{./{.({._{.:{.<{.[{.}{.|{.1{.2{.1{.3{.4{.5{.6{.7{.8{.9{.0{.a{.b{.c{.d{.$'.$'.$'.$'.$'.$'.$'.$'.$'.$'.$'.$'.$'.$'.$'.e{.f{.g{.h{.i{.j{.k{.l{.m{.n{.d{. '.o{.p{.q{.r{.s{.t{.u{.v{.w{.x{.$'.$'.$'.$'.$'.$'.$'.$'.$'.$'.$'.$'.$'.$'.$'.$'.$'.$'.$'.$'.$'.$'.$'.$'.$'.$'.$'.$'.$'.$'.$'.$'.%~.v*.y{.z{.5% =- A{.B{.#>.C{.D{.E{.F{.;8 G{.H{.I{.J{.K{.$'.L{.M{.N{.O{.P{.", +"N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.%~.*L Q{.F' w- f= f= f= f= [8 R{.S{.T{.U{.V{.W{.W{.X{.Y{.Z{.{~.)Z N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.x{.`{.,'. ]..].<{.N*.N*.N*.]~.+].@].A-.#].$].<~.]~.N*.N*.%].&].*].+].=].-].;].>].,].'].)].x{.!].~].{].]].^]./].(]._].:].<].[].}].|].1].2].3].4].5].q#.q#.q#.6].7].8].9].0].a].q#.q#.q#.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].Q].R].S].T].U].V].W].X].s~.Y].Z].`]. ^..^.+^.@^.#^.$^.%^.&^.*^.=^.-^.-^.;^.>^.,^.'^.)^.!^.~^.{^.]^.^^./^.(^.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*._^.:^.<^.[^.}^.|^.1^.2^.3^._^.o{.4^.5^.6^.().7^.8^.9^.0^.a^.b^.~&.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.c^.v$.Jj d^.7% 6% 6% Q!.R!.e^.f^.g^.h^.i^.j^.k^.l^.m^.n^.(^.%].b^.o^.i` p^.", +"$'.$'.$'.$'.$'.$'.$'.$'.$'.$'.q^.r^.Q{.wu w- F> F> F> F> R* s^.S{.t^.u^.v^.w^.w^.x^.y^.z^.A^.[Z h).$'.$'.$'.$'.$'.$'.$'.$'.$'.$'.$'.$'.$'.$'.$'.$'.$'.$'.$'.$'.$'.$'.$'.$'.$'.$'.$'.$'.$'.$'.$'.$'.$'.$'.$'.$'.B^.C^.D^.E^.F^.)].B^.$'.$'.B^.G^.H^.I^.J^.K^.C^.B^.$'.x{.$'.:~.%].k>.L^.M^.N^.O^.P^.Q^.&].R^.S^.T^.U^.V^.W^.X^.Y^.Z^.`^. /../.+/.@/.|'.#/.$/.%/.q#.q#.q#.&/.*/.=/.-/.;/.>/.q#.q#.q#.,/.'/.)/.!/.~/.{/.]/.^/.//.(/._/.:/.(.,(.!* 5% =- =- '(.)(.1).!(.~(.{(.](.^(./(.((._(.:(.r{.0~.x{.h).i,.<(.", +"N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.c^.mP Q{./, R* w- F> F> F> I) [(.S{.}(.|(.1(.2(.2(.3(.4(.5(.6(.A` %~.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.7(.8(.9(.0(.a(.b(.7(.N*.N*.N*.c(.d(.e(.A-.#].f(.g(.h(.i(.j(.N*.c(.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(.q#.q#.q#.K(.L(.M(.N(.O(.P(.q#.q#.q#.Q(.R(.S(.$,.T(.U(.V(.W(.X(.Y(.Z(.`(. _.._.+_.@_.#_.$_.%_.&_.*_.=_.-_.;_.>_.,_.'_.)_.!_.~_.{_.]_.^_./_.(_.__.:_.<_.[_.}_.|_.1_.2_.3_.4_.5_.6_.7_.8_.9_.0_.a_.b_.c_.d_.e_.f_.g_.h_.i_.7(.j_.k_.l_.m_.n_.o_.H/.p_.q_.r_.s_.t_.u_.v_.w{.h).N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.j_.w_.x_.y_.z_.A_.B_.C_.D_.n{.E_.F_.G_.H_.I_.N*.J_.K_.L_.M_.N_.O_.!].N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.N*.c^. M P_.z{.6% >% >% >% Q_.R_.S_.T_.|X U_.V_.W_.X_.Y_.Z_.W*.`_. :. :.`_..:.", +"%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.+:.mP @:.#:.R* w- w- w- w- Q* $:.%:.&:.*:.=:.-:.-:.;:.>:.,:.':.P+.q^.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.j(.):.!:.~:.{:.b(.c(.%~.%~.%~.j(.]:.e(.^:./:.(:._:.::.<:.c(.`_.j(.[:.}:.|:.1:.2:.3:.4:.5:.6:.7:.8:.9:.0:.a:.b:.c:.d:.e:.f:.g:.h:.i:.j:.k:.l:.q#.q#.q#.m:.n:.o:.p:.q:.r:.q#.q#.q#.s:.t:.u:.v:.w:.x:.y:.z:.A:.B:.C:.D:.E:.F:.G:.H:.I:.J:.K:.L:.M:.J:.N:.O:.P:.=_.Q:.R:.S:.T:.U:.V:.W:.X:.Y:.Z:.`:. <..<.+<.N].@<.#<.$<.%<.&<.*<.=<.-<.;<.><.,<.'<.)<.!<.~<.{<.]<.^<./<.(<._<.:<.<<.[<.m_.}<.|<.1<.2<.3<.4<.5<.6<.7<.8<.9<.7(.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.7(.0<.a<.b<.c<.d<.e<.f<.g<.h<.i<.j<.k<.l<.m<.%~.%~.7(.n<.o<.p<.q<.`'.r<.s<.`_.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.c^.JX ~Z 3& =- =- =- =- t<.u<.v<.w<.x<.n^.s<.n<.y<.z<.A<.B<.C<.n<.7(.7(.%~.", +"D<.D<.D<.D<.D<.D<.D<.D<.D<.D<.+:.E<.@:.v- Q* R* w- w- w- s~ {J %:.F<.G<.H<.I<.I<.J<.K<.L<.M<.P+.q^.D<.D<.D<.D<.D<.D<.D<.D<.D<.D<.D<.D<.D<.D<.D<.D<.D<.D<.D<.D<.D<.D<.D<.D<.D<.D<.D<.D<.D<.D<.D<.D<.D<.D<.D<.D<.D<.N<.O<.P<.Q<.UF q(.N<.D<.D<.D<.D<.j(.R<.e(.S<.T<.U<.V<.W<.)].j(.N<.N<.X<.Y<.Z<.`<. [..[.+[.@[.#[.$[.%[.&[.*[.=[.-[.;[.>[.,[.'[.)[.![.~[.{[.][.q#.q#.q#.^[./[.([._[.:[.<[.q#.q#.q#.[[.}[.|[.1[.q#.q#.q#.2[.3[.4[.5[.6[.7[.8[.9[.0[.a[.b[.c[.d[.e[.f[.g[.h[.i[.j[.k[.l[.m[.n[.o[.n[.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[.Q[.R[.S[.T[.U[.V[.W[.X[.Y[.Z[.`[. }..}.+}.@}.#}.$}.s<.D<.D<.D<.D<.D<.D<.D<.D<.D<.D<.D<.D<.D<.D<.J_.%}.&}.*}.=}.yz -}.;}.>}.,}.'}.)}.!}.~}.%~.D<.D<.{}.c(.]}.^}./}.(}.;).q^.N<.D<.D<.D<.D<.D<.D<.D<.D<.D<.D<.D<.D<.D<.D<.D<.D<.D<.D<.D<.D<.D<.D<.D<.D<.D<.D<.D<.D<.+:.A%._}.=- >% =- >% >% >% :}.<}.[}.}}.n!.|}.J_.{}.%'.1}.2}.3}.4}.J_.D<.N<.", +"%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.5}.6}.i).J= Q* R* R* R* R* s~ 7}.%:.8}.9}.0}.a}.a}.b}.c}.d}.e}.[#.c^.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.f}.g}.h}.~:.i}.j}.k}.%~.%~.%~.%~.f}.l}.m}.n}.o}.p}.q}.r}.s}.t}.f}.u}.v}.w}.x}.y}.z}.A}.B}.C}.D}.E}.F}.G}.H}.6:.I}.r<.J}.K}.L}.M}.N}.q#.q#.q#.q#.q#.q#.q#.O}.P}.q#.q#.q#.q#.q#.q#.q#.Q}.R}.S}.T}.U}.n].V}.W}.X}.Y}.#_.Z}.`}. |..|.+|.@|.#|.$|.+|.%|.&|.*|.b[.b[.=|.-|.;|.>|.,|.'|.)|.!|.~|.{|.]|.^|./|.(|._|.:|.<|.[|.}|.||.1|.2|.3|.4|.5|.6|.7|.8|.9|.0|.a|.b|.c|.d|.e|.f|.g|.h|.i|.j|.k|.l|.m|.n|.o|.p|.q|.r|.F%.s|.)J %~.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.q^.t|.u|.v|.w|.x|.y|.z|.A|.B|.C|.D|.E|.F|.G|.t|.%~.%~.%~.%~.%~.H|.I|.J|.K|.L|.M|.t_.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.%~.c^.$'.N|.4& 2& >% >% 1& 1& t<.O|.P|.Q|.R|.n^.t_.)J S|.T|.U|.V|.W|.X|.)J q^.", +"c^.c^.c^.c^.c^.c^.c^.c^.c^.c^.Y|.TV i).M, s~ Q* Q* Q* Q* S* Z|.%:.`|. 1..1.K<.K<.+1.@1.#1.$1.}&.+:.c^.c^.c^.c^.c^.c^.c^.c^.c^.c^.c^.c^.c^.c^.c^.c^.c^.c^.c^.c^.c^.c^.c^.c^.c^.c^.c^.c^.c^.c^.c^.c^.c^.c^.c^.c^.c^.c^.%1.&1.*1.=1.-1.;1.t}.c^.c^.c^.c^.%1.q^.>1.,1.'1.)1.!1.~1.{1.]1.%1.^1./1.(1._1.:1.<1.[1.}1.|1.11.21.31.41.51.61.71.81.91.01.a1.b1.c1.d1.e1.f1.g1.h1.i1.j1.k1.l1.m1.n1.o1.p1.q1.r1.s1.t1.u1.v1.w1.x1.y1.z1.A1.B1.C1.D1.E1.F1.G1.H1.I1.J1.K1.L1.M1.N1.O1.O1.P1.Q1.R1.S1.T1.U1.V1.W1.X1.Y1.Z1.`1. 2..2.+2.@2.#2.$2.%2.&2.*2.=2.-2.;2.>2.,2.'2.)2.!2.~2.{2.]2.^2./2.(2._2.:2.<2.[2.}2.|2.12.12.22.32.42.52.k}.62.72.82.92.a<.c^.c^.c^.c^.c^.c^.c^.c^.c^.c^.c^.02.a2.b2.c2.d2.e2.f2.g2.h2.i2.j2.k2.l2.m2.n2.o2.p2.k}.c^.c^.c^.c^.c^.t_.q2.r2.s2.t2.u2.v2.02.c^.c^.c^.c^.c^.c^.c^.c^.c^.c^.c^.c^.c^.c^.c^.c^.c^.c^.c^.c^.c^.c^.c^.c^.c^.c^.+:.q^.Y|.^, x- >% 1& 1& w2.=- x2.y2.z2.A2.B2.C2.t_.a<.D2.E2.F2.G2.H2.I2.t_.", +"q^.q^.q^.q^.q^.q^.q^.q^.q^.q^.Y|.TV @:.*- J2.Q* Q* Q* Q* S* m-.%:.K2.L2.M2.c}.c}.N2.O2.P2.$1.}&.+:.q^.q^.q^.q^.q^.q^.q^.q^.q^.q^.q^.q^.q^.q^.q^.q^.q^.q^.q^.q^.q^.q^.q^.q^.q^.q^.q^.q^.q^.q^.q^.q^.q^.q^.q^.q^.q^.q^.q^.t}.Q2.R2.S2.T2.U2.%1.q^.q^.q^.%1.%1.V2.W2.X2.Y2.Z2.`2. 3..3.+3.c^.@3.#3.$3.%3.&3.*3.=3.-3.;3.>3.,3.'3.)3.!3.~3.{3.]3.^3./3.(3._3.:3.<3.[3.}3.|3.13.23.33.43.53.63.73.83.93.03.a3.b3.c3.d3.e3.f3.g3.h3.i3.j3.k3.l3.m3.n3.o3.p3.q3.r3.M1.s3.t3.u3.v3.w3.x3.y3.z3.A3.B3.C3.D3.E3.F3.G3.H3.I3.J3.K3.L3.M3.N3.O3.P3.Q3.R3.S3.T3.U3.V3.W3.X3.Y3.Z3.`3. 4..4.+4.@4.#4.$4.%4.&4.*4.=4.-4.;4.>4.,4.Z[.'4.)4.!4.92.~4.{4.]4.t_.q^.q^.q^.q^.q^.q^.q^.q^.q^.q^.q^.^4./4.(4._4.:4.<4.[4.}4.|4.14.24.34.44.54.64.74.M|.v2.q^.q^.q^.q^.q^.%1.02.84.94.04.a4.b4.v2.02.q^.q^.q^.q^.q^.q^.q^.q^.q^.q^.q^.q^.q^.q^.q^.q^.q^.q^.q^.q^.q^.q^.q^.q^.q^.+:.Y|.A%.c4.z{.=- >% >% >% =- d4.e4.f4.g4.h4.i4.f}.q^.a<.X|.j4.k4.l4.m4.n4.", +"+:.+:.+:.+:.+:.+:.+:.+:.+:.+:.o4.nd i).p4.S* s~ s~ s~ s~ S= m-.q4.r4.s4.t4.u4.u4.v4.w4.x4.y4.W*.Y|.+:.+:.+:.+:.+:.+:.+:.+:.+:.+:.+:.+:.+:.+:.+:.+:.+:.+:.+:.+:.+:.+:.+:.+:.+:.+:.+:.+:.+:.+:.+:.+:.+:.+:.+:.+:.+:.+:.+:.z4.A4.B4.C4.D4.E4.z4.+:.+:.+:.+:.F4.G4.H4.I4.J4.K4.L4.M4.N4.O4.P4.Q4.R4.S4.T4.U4.V4.W4.X4.Y4.Z4.`4. 5..5.+5.@5.#5.$5.%5.&5.*5.=5.-5.;5.>5.,5.'5.)5.!5.~5.{5.]5.^5./5.(5._5.:5.<5.[5.}5.|5.15.25.d[.35.45.55.65.75.85.95.05.a5.b5.r3.c5.d5.e5.f5.g5.h5.i5.j5.k5.l5.m5.n5.o5.p5.q5.r5.s5.t5.u5.v5.w5.x5.y5.z5.A5.B5.C5.D5.E5.F5.G5.H5.I5.J5.K5.L5.M5.#5.N5.O5.P5.Q5.R5.S5.T5.U5.V5.W5.X5.Y5.Z5.`5. 6..6.+6.@6.#6.$6.%6.P4.+:.+:.+:.+:.+:.+:.+:.+:.+:.+:.&6.*6.=6._#.-6.;6.>6.,6.'6.)6.!6.~6.{6.]6.^6./6.(6._6.:6.+:.+:.+:.+:.+:.P4.<6.[6.}6.|6.16.26.:6.+:.+:.+:.+:.+:.+:.+:.+:.+:.+:.+:.+:.+:.+:.+:.+:.+:.+:.+:.+:.+:.+:.+:.+:.+:.+:.36.&..46.S= >% 1& 1& 1& >% x- VI 56.66.76.86.96.P4.+:.P4.X|.06.a6.b6.r<.", +"Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.o4.&..c6._, S= s~ s~ s~ s~ S= d6.e6.f6.g6.h6.i6.i6.j6.g6.k6.l6.%'.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.m6.F4.n6.o6.p6.4|.q6.z4.Y|.Y|.Y|.r6.F4.s6.t6.u6.v6.w6.x6.y6.z6.A6.B6.C6.D6.E6.F6.kZ G6.H6.I6.J6.K6.L6.M6.N6.O6.P6.Q6.*5.R6.S6.T6.U6.V6.W6.X6.Y6.Z6.`6. 7..7.+7.@7.#7.$7.%7.&7.*7.=7.-7.;7.>7.,7.'7.)7.!7.~7.j[.{7.]7.^7./7.(7._7.{7.:7.<7.[7.}7.|7.17.27.37.47.57.67.77.87.97.07.a7.b7.c7.d7.e7.f7.g7.h7.i7.`6.j7.k7.l7.m7.n7.o7.p7.q7.r7.s7.t7.u7.v7.w7.x7.y7.z7.A7.W5.B7.C7.D7.E7.F7.G7.H7.I7.J7.K7.L7.M7.N7.O7.P7.:6.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.>1.Q7.R7.S7.T7.U7.V7.W7.X7.Y7.Z7.`7. 8..8.+8.@8.#8.$8.%8.m6.Y|.Y|.Y|.m6.%8.&8.*8.=8.-8.m<.;8.>8.r6.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.,8.E<.'8.)8.>% 3& 3& 3& 1& 2& !8.~8.{8.]8.^8./8.%8.Y|.^1.Y|.0<.!W (8._8.", +"Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.o4.&..i).:8.S= S* S* S* S* && d6.<8.[8.}8.|8.18.18.28.38.48.58.%'.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.z4.q6.68.S2.d..n6.F4.Y|.Y|.Y|.Y|.r6.78.88.98.08.a8.b8.c8.d8.e8.f8.g8.h8.i8.j8.k8.l8.m8.n8.o8.p8.q8.r8.s8.t8.u8.v8.w8.x8.y8.z8.A8.B8.C8.D8.E8.F8.G8.H8.I8.J8.K8.L8.M8.N8.O8.P8.Q8.R8.S8.T8.U8.V8.O1.W8.X8.Y8.Z8.`8. 9.h[..9.+9.47.@9.#9.$9.%9.&9.*9.=9.-9.;9.l5.>9.,9.'9.)9.!9.~9.{9.]9.^9./9.(9._9.:9.<9.[9.}9.|9.19.29.39.49.59.69.79.89.99.09.a9.b9.c9.d9.e9.f9.&5.g9.h9.i9.j9.k9.l9.m9.n9.o9.p9.q9.r9.s9.t9.u9.:6.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.P4.v9.w9.x9.y9.z9.A9.W7.B9.C9.D9.E9.>1.>8.F9.G9.H9.k}.m6.z4.Y|.Y|.Y|.Y|.z4.5}.I9.J9.K9.L9.M9.N9.%8.r6.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.,8.O9.P9.Q9.6% >% >% >% >% 1& R9.S9.T9.U9.uo L .V9.P4.m6.P4.r9.`'.W9.X9.", +"Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.,8.A%.c6.Y9.&& S= S* S* S* Z9.`9. 0..0.+0.@0.#0.#0.$0.%0.&0.*0.x{.o4.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.Y|.=0.-0.;0.>0.,0.36.'0.Y|.Y|.Y|.Y|.Y|.=0.)0.F4.!0.~0.{0.]0.^0./0.(0._0.:0.<0.[0.}0.|0.10.20.30.40.50.60.70.80.90.00.a0.b0.c0.d0.J5.e0.f0.g0.h0.i0.j0.k0.l0.m0.n0.o0.p0.q0.r0.s0.t0.u0.v0.w0.x0.y0.z0.A0.B0.C0.t3.D0.E0.F0.17.G0.H0.I0.J0.K0.L0.M0.N0.O0.P0.Q0.R0.J:.S0.T0.U0.V0.W0.X0.Y0.Z0.`0. a..a.+a.@a.#a.$a.%a.&a.*a.=a.-a.;a.>a.,a.'a.)a.!a.~a.{a.]a.^a./a.(a._a.:a..&& && && && !* f= Aa.Ba.Ca.g4.^8.I2.Da.9a.Ea.Da.Fa.Ga.Ha.", +"36.36.36.36.36.36.36.36.36.36.,8.A%.c6.F> && S= S= S= S= !* Ia.e6.Ja.g6.Ka.g6.g6.La.g6.Ma.Na.x{.o4.36.36.36.36.36.36.36.36.36.36.36.36.36.36.36.36.36.36.36.36.36.36.36.36.36.36.36.36.36.36.36.36.36.36.36.36.36.36.36.36.36.'0.Oa.Pa.Qa.Ra.Sa.=0.'0.Ea.36.Ea.9a.Ea.Ta.Ua.Va.Wa.Xa.>1.Ya.Za.`a. b..b.+b.@b.#b._a.$b.%b.&b.*b.=b.-b.;b.>b.,b.'b.)b.!b.~b.{b.]b.^b./b.(b._b.:b.c.,c.'c.)c.!c.~c.{c.]c.^c./c.KX Y|.Ea.pa.(c._c./6.:c.oa..ic.e6.jc.g6.kc.lc.lc.mc.g6.nc.Na.x{.o4.o4.o4.o4.o4.o4.o4.o4.o4.o4.o4.o4.o4.o4.o4.o4.o4.o4.o4.o4.o4.o4.o4.o4.o4.o4.o4.o4.o4.o4.o4.o4.o4.o4.o4.o4.o4.o4.o4.o4.o4.o4.o4.=0.oc.pc.qc.rc.sc.tc.'0.o4.o4.ka.pa.d.,d.'d.)d.!d.~d.{d.]d.G0.#9.^d./d.%9.(d._d.h5.:d. _, _, _, _, M, R* %e.:~.&e.*e.=e.-e.;e.o4.'0.o4.ka.pa.>e.", +",e.,e.,e.,e.,e.,e.,e.,e.,e.,e.7c.'e.)e.w- !* && && && && T* !e.e6.~e.{e.]e.^e.^e./e.g6.(e._e.7(.,8.,e.,e.,e.,e.,e.,e.,e.,e.,e.,e.,e.,e.,e.,e.,e.,e.,e.,e.,e.,e.,e.,e.,e.,e.,e.,e.,e.,e.,e.,e.,e.,e.,e.,e.,e.,e.,e.,e.,e.,e.,e.,e.:e.f.,f.'f.)f.!f.~f.{f.]f.^f./f.(f._f.:f.g.,g.'g.)g.!g.~g.{g.]g.^g./g.(g._g.:g.h.,h.'h.)h.[g.!h.~h.{h.]h.Dd.^h./h.(h._h.ff.Qf.,8.,8.,8.,8.,8.,e.:h..mh.~~ f= _, _, _, f= y; nh.o4.o4.,8.oh.ph.qh.rh.4a.ke.Td.0h.4e.,8.", +",8.,8.,8.,8.,8.,8.,8.,8.,8.,8.sh.'e.th.uh.T* !* !* !* !* x- vh.e6.wh.xh.yh.zh.zh.Ah.^e.Bh.Ch.N<.lh.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.Dh.Eh.Fh.T. Wa Gh.Hh.Ih.:e.,8.0h.Jh.,8.0h.=g.Kh.Lh.Mh.Nh.Oh.Ph.Qh.Rh.Sh.Th.Uh.ie.Vh.Wh.Xh.8f.Yh.9f.Zh.`h. i..i.+i.@i.#i.$i.%i.&i.*i.=i.-i.;i.>i.,i.'i.)i.!i.~i.{i.]i.^i./i.(i._i.:i.e.&j.*j.=j.-j.Jh.0h.,8.,8.,8.;j.>j.,j.'j.)j.!j.~j.{j.)0.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.,8.lh.,e.sh.]j.*~._, *- *- *- f= ^j./j.(j.sh.lh.uf.Mf._j.:j.k.,k.'k.)k.!k.~k.{k.]k.^k./k.(k._k.:k.:k.l.,l.'l.pk.)l.!l.~l.Fk.lh.{l.]l.^l./l.(l._l.:l.m.,m.'m.)m.!m.~m.{m.]m.pk.Lk.^m./m.cf.(m._m.:m.n.,n.'n.q#.q#.q#.)n.!n.~n.{n.]n.q#.q#.^n./n.(n._n.:n.j.sh.sh.sh.sh.]m.%o.&o.*o.{j.=o.-o.0h.sh.sh.sh.sh.sh.sh.sh.sh.sh.sh.sh.sh.sh.sh.sh.sh.sh.sh.sh. l.;o.>o./, *- *- J= *- *- f= ,o.'o.7e )o.sh.!o.~o.{o.]o.^o./o.(o._o.:o.p.,p.'p.q#.q#.)p.#f.!p.~p.{p.]p.^p./p.(p._p.:p.q.,q.,q.'q.)q.!q.9o.z4. l.sh.sh.sh.sh.sh.sh.sh.sh.sh.sh.sh.sh.sh.sh.sh.sh.sh.sh.sh.sh.sh.sh.sh.sh.sh.sh.sh.sh.sh.sh.sh.sh.sh.sh.sh.sh.sh.sh.sh.sh.sh.sh.sh.sh.sh.sh.sh.sh.0o.~q.{q.]q.^q./q.(q._q.:q.r.,r.'r.)r.!r.~r.{r.]r.^r./r.Am.sh.sh.Am.(r._r.:r.JE s.,s.'s.)s.!s.~s.{s.]s.^s./s.q#.q#.q#.(s._s.:s.t.Np.,t.'t.)t.!t.Cr.hr.>t.~t.{t.]t.^t./t.(t._t.hr.}j.}j.}j.}j.}j.}j.}j.}j.}j.}j.}j.}j.}j.}j.}j.}j.:t.7e u.,u.'u.)u.!u.~u.{u.]u.Yl.^u./u.(u._u.:u.% v..v.+v.@v.#v.N7.N7.$v.%v.&v.dt.'0.)o.Zu.Zu.Zu.Zu.Zu.Zu.Zu.Zu.Zu.Zu.Zu.Zu.Zu.Zu.Zu.Zu.Zu.Zu.Zu.Zu.Zu.Zu.Zu.Zu.Zu.Zu.Zu.Zu.Zu.Zu.Zu.Zu.Zu.Zu.Zu.Zu.Zu.Zu.Zu.Zu.Zu.Zu.Zu.Zu.Zu.Zu.Zu.Zu.Zu.Zu.*v.)o.=v.-v.;v.>v.,v.'v.)v.!v.~v.{v.]v.^v./v.(v._v.:v.w.,w.'w.)w.!w.~w.{w.]w.^w./w.(w._w.:w.% vw.ww.xw.yw.zw.Aw.Aw.Bw.@v.Cw.dt.'0.Dw.nm.nm.nm.nm.nm.nm.nm.nm.nm.nm.nm.nm.nm.nm.nm.nm.nm.nm.nm.nm.nm.nm.nm.nm.nm.nm.nm.nm.nm.nm.nm.nm.nm.nm.nm.nm.nm.nm.nm.nm.nm.nm.nm.nm.nm.nm.nm.nm.nm.nm.nm.*v.)o.fj.Ew.Fw.Gw.Hw.Iw.Jw.Kw.Lw.Mw.Nw.Ow.Pw.Qw.Rw.Sw.Tw.Uw.Vw.Ww.Xw.Yw.Zw.`w. x..x.+x.@x.#x.$x.%x.&x.*x.=x.-x.T. ;x.q#.q#.q#.>x.,x.qs.'x.)x.!x.~x.{x.]x.^x./x.(x._x.:x.y.,y.Aj.9w.cu.nm.nm.nm.nm.nm.nm.nm.nm.nm.nm.nm.nm.nm.)o.)o.,e.'y.<) *- v- v- v- *- ^j.)y.sh.)o.)o.nm.nm.nm.nm.nm.nm.nm.!y.du.'^.~y.", +"tr.tr.tr.tr.tr.tr.tr.tr.tr.tr.:t.lh.{y.5% ]y.1& 1& 1& 1& ~6 ^y./y.(y._y.:y.z.,z.'z.)z.!z.~z.{z.]z.^z./z.(z._z.:z.% >% ~6 Sz.Tz.Uz.Vz.Wz.Xz.Xz.Yz._y.Zz.1y.4e.:t.)o.)o.)o.)o.)o.)o.)o.)o.)o.)o.)o.)o.)o.)o.)o.)o.)o.)o.)o.)o.)o.)o.)o.)o.)o.)o.)o.)o.)o.)o.)o.)o.)o.)o.)o.)o.)o.)o.)o.)o.)o.)o.)o.)o.)o.)o.)o.)o.)o.)o.)o.)o.)o.`z. A..A.+A.@A.#A.$A.%A.ky.&A.*A.=A.-A.;A.>A.,A.'A.)A.ny.!A.~A.{A.py.]A.^A.5z./A.9v.9v.6z.(A._A.$x.:A.B.,B.'B.)B.4z.4z.!B.~B.{B.]B.^B./B.(B._B.:B.8z.)o.)o.)o.)o.)o.)o.)o.)o.)o.)o.)o.)o.:t.sh.% >% >% =- 3B.4B.5B.C.,C.'C.)C.!C.~C.{C.]C.^C./C.(C._C.:C.D.,D.TC.'D.yB.'D.uy.)D.!D.~D.{D.]D.^D./D.(D._D.q#.q#.q#.:D.E.,E.'E.-E.yB.)E.!E.~E.{E.]E.^E./E.(E.`D.PD.Nz.Nz.Nz.Nz.Nz.Nz.Nz.Nz.Nz.Nz.Nz.JC._E.:E.c 6% 6% 6% 6% |E.1E.2E.QC.3E.4E.4E.5E.6E.7E.8E.0j.Nz.}E.}E.}E.}E.}E.}E.}E.}E.}E.}E.}E.}E.}E.}E.}E.}E.}E.}E.}E.}E.}E.}E.}E.}E.}E.}E.}E.}E.}E.}E.}E.}E.}E.}E.}E.}E.}E.}E.}E.}E.}E.}E.}E.}E.}E.}E.}E.}E.}E.}E.}E.}E.aB.9E.0E.aE.bE.cE.dE.eE.fE.gE.hE.iE.jE.kE.lE.mE.nE.oE.pE.qE.rE.iB.sE.tE.aB.uy.uE.yB.yB.vE.wE.xE.yE.zE.AE.BE.CE.DE.q#.q#.q#.EE.FE.GE.HE.IE.JE.KE.LE.ME.NE.q#.q#.q#.gv.OE.PE.q#.q#.QE.RE.SE.TE.q#.q#.q#.UE.VE.WE.XE.YE.ZE.`E. F.q#.q#..F.+F.@F.#F.$F.%F.&F.*F.=F.-F.;F.>F.,F.'F.)F.!F.~F.{F.]F.^F./F.(F._F.:F.% 5% 6% 6% 6% h$.DF.EF.6E.FF.GF.GF.HF.IF.JF.SC.*l.YA.Nz.Nz.Nz.Nz.Nz.Nz.Nz.Nz.Nz.Nz.Nz.Nz.Nz.Nz.Nz.Nz.Nz.Nz.Nz.Nz.Nz.Nz.Nz.Nz.Nz.Nz.Nz.Nz.Nz.Nz.Nz.Nz.Nz.Nz.Nz.Nz.Nz.Nz.Nz.Nz.Nz.Nz.Nz.Nz.Nz.Nz.Nz.Nz.Nz.Nz.Nz.Nz.Nz.KF.LF.MF.NF.OF.PF.QF.0E.RF.SF.TF.UF.VF.WF.XF.YF.ZF.`F. G..G.+G.@G.-E.TC.#G.Nz.Nz.$G.%G.&G.*G.=G.-G.;G.>G.q#.q#.q#.q#.q#.q#.q#.,G.'G.)G.!G.~G.{G.]G.^G./G.(G._G.:G.XE.H.,H.'H.)H.-E.Nz.Nz.Nz.Nz.Nz.Nz.Nz.Nz.Nz.Nz.!H.~H.{H.v] *- v- v- /, v- v- ~~ ]H.Jd.^H.Nz.Nz.Nz.Nz.Nz.Nz.Nz.Nz.Nz.Nz.Nz.Nz.", +"Lf.Lf.Lf.Lf.Lf.Lf.Lf.Lf.Lf.Lf.Lf.JC.JC.)o./H.]y.7% 5% 5% 5% (H._H.:H.IF.I.,I.'I.)I.!I.~I.{I.]I.~I.^I./I.(I._I.:I.J.,J.'J.)J.!J.~J.{J.]J.^J./J.(J._J.:J.K.,K.'K.,H.)K.!K.~K.$G.$G.$G.$G.$G.$G.$G.$G.$G.BI.`u.{K.gn J= F' /, /, /, y; Q* CF.)o.JC.$G.$G.$G.$G.$G.$G.$G.$G.$G.$G.$G.$G.", +"^H.^H.^H.^H.^H.^H.^H.^H.^H.^H.^H.^H.BI.]K.^K.GI.8% 7% 7% 7% /K.(K._K.qm.:K.L.,L.'L.)L.!L.~L.{L.]L.^L./L.nK.nK.~K.(L._L.:L.M.,M.'M.)M.!M.~M.{M.]M.^M./M.(M._M.:M.N.,N.'N.pw.pw.pw.pw.pw.pw.pw.[E.[E.)o.)N./' v- /, /, /, v- /' )N.)o.[E.[E.pw.pw.pw.pw.pw.pw.pw.pw.pw.pw.pw.pw.", +"^H.^H.^H.^H.^H.^H.^H.^H.^H.^H.^H.^H.!H.}E.CF.|= 5% 8% 8% 8% +Z !N.~N.O.,O.DL.^H.^H.bN.^H. M.'O.)O.!O.~O.{O.]O.^O.+H./O.(O._O.:O.P.,P.'P.)P.!P.~P.{P.]P.^P./P.(P._P.:P.K.RP.SP.TP.UP.VP.WP. M.[E.[E.[E.[E.[E.[E.[E.[E.[E.[E.[E.[E.[E.[E.[E.[E.[E.[E.!H.XP.YP.rF.ZP.,N.RP.`P. Q..Q.PI.DO.+Q.@Q.#Q.$Q.%Q..N.[E.[E.[E.[E.[E.[E.BI.:t.HC.f= y; /, /, /, /, J= gn &Q.ja.qO.[E.[E.[E.[E.[E.[E.[E.[E.[E.[E.[E.[E.[E.", +"BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.qO.qL.Q.,Q.,Q.'Q.yO.)Q.!Q.3y.sO.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.~Q.{Q.]Q.{Q.^Q./Q.(Q._Q.:Q.R.,R.'R.+Q.)R.!R.~R.{R.]R.^R./R.(R._R.:R.S.,S.'S.)S.!S.~S.{S.]S.^S./S.(S._S.GQ.:S.T.,T.,T.'T.BR.)T.!Q.yB.$T.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.|R.!T.~T.BI.BI.{T.sO.]T.^T./T.(T.OR._T.NR.:T.U.,U.'U.)U.!U.~U.OS.LS.~T.{U.]U.^U./U.]h BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.BI.dR.eR.(U.gR._U.{T.:U.V.,V.'V.)V.!V.HU.$T.jU.~V.{V.]V.HU.$T.$T.$T.$T.$T.$T.HU.|U.^V./V.(V._V.:V.W.,W.'W.)W.!W.~W.-W.{W.]W.^W./W.(W._W.:W.X.,X.'X.)X.!X.~X.{X.]X.^X./X.(X._X.:X.Y.,Y.'Y.)Y.!Y.~Y.~Y.{Y.]Y.^Y./Y.ZJ.#T.#T.#T.#T.#T.#T.#T.#T.#T.#T.#T.#T.#T.#T.#T.#T.#T.#T.#T.#T.#T.#T.#T.#T.#T.#T.#T.#T.#T.#T.#T.#T.#T.#T.#T.#T.#T.#T.#T.#T.#T.#T.#T.#T.#T.#T.#T.#T.#T.#T.#T.#T.#T.#T.#T.#T.#T.(Y._Y.:Y.;X.Z.,Z.'Z.)Z.FY.!Z.~Z.{Z.]Z.^Z.%Z.&Y.PW.-Y./Z.k( y; `.,`._Y.hZ.]X.ZV.ZV.ZV.ZV.ZV.ZV.ZV.ZV.ZV.ZV.ZV.ZV.ZV.ZV.ZV.ZV.ZV.ZV.ZV.ZV.ZV.ZV.ZV.ZV.ZV.ZV.ZV.ZV.]X.VX.YX.'`.)`.!`.wS.~`.{`.]`.hZ.]X.(Y.DO.^`./`.ZT.rX.(`.Ad._`.:`.F' ~~ ~~ +, +' +) +! +~ +{ +] +^ +/ +( +FY.#T.(Y.PW._ +: +< +[ +#T.#T.#T.#T.#T.#T.#T.#T.#T.#T.#T.#T.#T.#T.#T.#T.#T.#T.#T.#T.#T.#T.#T.#T.#T.#T.#T.#T.#T.#T.XY.} +| +1 +2 +3 +4 +5 +6 +7 +XY.yU.8 +9 +0 +a +b +yU.#T.c +Ro y; .+,.+'.+).+!.+~.+{.+].+^.+/.+(.+_.+:.+<.+[.+}.+|.+1.+2.+#T.sL.p`.< +3.+4.+( +p`.sL.sL.sL.sL.sL.sL.sL.sL.sL.sL.sL.sL.sL.sL.sL.sL.sL.sL.sL.sL.sL.sL.sL.sL.sL.sL.sL.sL.sL.sL.sL.[ +o +&Y.5.+6.+} +7.+8.+9.+0.+a.+[ +PW.b.+c.+d.+e.+f.+g.+D, h.+~~ ~~ |.V.+W.+Q +[`.Q +X.+Y.+Z.+U +Q +[`.Q +`.+ ++.+++++Q +z`.@++#++$++%++W +&++*++W +P`.o +=++-++;++>++,++'++(Y.Q`.)++!++~++{++]++^++/++(++_++:++<++[++{.+].+}++|++1++2++3++4++5++6++7++8++9++P`.p`.0++a++b++o +o +P`.[`.[`.[`.[`.[`.[`.[`.[`.[`.[`.[`.[`.[`.[`.[`.[`.[`.[`.[`.[`.[`.[`.[`.[`.[`.[`.[`.[`.[`.[`.[`.[`.a.+c++d++1 +e++f++g++h++i++j++P`.a.+b +k++l++m++n++o++P= y; <) <) ~~ ~~ *Y.:`.p++q++j.+[`.[`.[`.[`.[`.[`.[`.[`.[`.[`.[`.[`.[`.[`.[`.[`.", +"r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++j.+(Z.s++t++{* u++v++w++x++y++z++z++A++B++C++D++8Q.(`.r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++E++F++G++H++I++J++K++L++M++L++N++O++P++Q++R++S++T++T++N++U++V++W++X++V +Y++Z++H++PW.r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++`++ @+.@++@+@@+#@+Z++r++Z++$@+%@+Z.+$@+Z++r++H++&@+*@+=@+-@+Z++H++;@+>@+,@+;@+'@+)@+!@+~@+{@+J +]@+^@+/@+(@+_@+:@+{@+` +<@+[@+}@+|@+1@+2@+3@+4@+5@+6@+7@+8@+9@+0@+a@+b@+c@+$C d@+e@+f@+g@+h@+i@+G++G++j@+k@+l@+m@+n@+G++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++H++o@+p`.p@+q@+r@+s@+t@+u@+v@+` +PW.H++w@+x@+y@+3K.z@+A@+#+J +H++(`.H++Y++,#+'#+)#+!#+~#+{#+]#+M@+^#+/#+(#+_#+:#+<#+Z++H++[#+}#+|#+1#+2#+3#+4#+5#+6#+7#+8#+9#+9@+0#+a#+b#+$C c#+d#+e#+T. f#+g#+h#+i#+G++j#+k#+l#+m#+N++o@+e +e +e +e +e +e +e +e +e +e +e +e +e +e +e +e +e +e +e +e +e +e +e +e +e +e +e +e +e +e +e +e +e +e +^#+<@+n#+o#+p#+q#+r#+s#+[ +o@+H++N++t#+u#+v#+w#+x#+y#+z#+<) ~~ ~~ ~~ /' A#+B#+#T.(`.e +e +e +e +e +e +e +e +e +e +e +e +e +e +e +e +", +"r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++C#+r++D#+E#+F#+G#+H#+I#+J#+K#+L#+L#+M#+= N#+O#+fQ.C#+r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++o@+^#+P#+Q#+P#+R#+S#+S#+T#+Y@+U#+V#+W#+W@+X#+X@+P#+E++Y@+Z++Y#+Z#+`#+ $+.$+Z++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++Z++r++e ++$+@$+#$+$$+r++%$+&$+*$+=$+-$+$$+r++r++Z++;$+>$+,$+Y++Z++'$+)$+!$+~$+{$+]$+^$+/$+'$+Z++.$+($+_$+:$+<$+[$+M@+Z++o@+}$+|$+1$+2$+3$+4$+5$+6$+7$+8$+9$+0$+0@+a$+b$+c$+d$+e$+f$+g$+h$+i$+j$+0#+k$+l$+m$+n$+H++H++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++H++o$+a.+p@+p$+q$+r$+s$+t$+[#+i#+r++i#+u$+v$+w$+x$+y$+<) <) <) <) i.+:`.z$+CV.D#+r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++r++", +"(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.D#+!H.$e.4& A$+B$+C$+D$+E$+F$+F$+G$+D$+H$+I$+HU.j.+(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.J$+K$+L$+M$+N$+O$+P$+Q$+R$+S$+T$+C#+U$+V$+W$+X$+X$+Y$+Z$+X$+`$+ %+.%++%+@%+#%+$%+%%+(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.&%+-@+*%+=%+-%+;%+C#+%%+o@+>%+,%+'%+&$+&%+(`.%%+)%+!%+~%+{%+]%+^%+%%+/%+(%+_%+:%+<%+[%+%%+(`.C#+}%+|%+1%+2%+3%+4%+5%+&%+6%+7%+8%+9%+0%+a%+b%+c%+d%+e%+f%+g%+h%+i%+j%+k%+l%+m%+n%+o%+p%+q%+r%+s%+t%+u%+v%+w%+x%+M$+(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`.(`. %+y%+z%+A%+B%+C%+D%+E%+F%+6%+(`.M$+G%+H%+I%+J%+K%+L%+(, (, (, &+,&+'&+)&+&%+!&+~&+{&+]&+^&+&%+j.+%%+C#+%e./&+(&+_&+:&+j.+<&+[&+}&+|&+1&+Y +2&+3&+<&+4&+5&+6&+7&+8&+9&+0&+&%+6%+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&+L$+A&+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+%%+A&+^#+B&+C&+r@+D&+E&+F&+G&+%%+D#+]h H&+I&+J&+K&+L&+M&+<) <) /' N&+O&+ZV.D#+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+", +")&+)&+)&+)&+)&+)&+)&+)&+)&+)&+)&+)&+)&+)&+)&+)&+D#+C#+P&+Vk.D@+Q&+R&+S&+T&+U&+U&+V&+W&+X&+Y&+&R.D#+)&+)&+)&+)&+)&+)&+)&+)&+)&+)&+)&+)&+)&+)&+)&+)&+)&+)&+)&+)&+)&+)&+)&+)&+)&+)&+)&+)&+)&+)&+)&+)&+)&+)&+)&+)&+)&+)&+)&+)&+)&+)&+)&+)&+)&+)&+)&+)&+)&+)&+)&+)&+)&+)&+)&+)&+)&+)&+&%+Z&+%&+%&+`&+ *+`$+.*++*+@*+@*+#*+$*+W$+%*+&*+$&+**+=*+-*+;*+>*+-&+,*+&%+&%+)&+)&+)&+)&+)&+)&+)&+)&+)&+)&+)&+)&+)&+)&+)&+)&+)&+)&+)&+)&+)&+)&+)&+)&+)&+)&+)&+)&+)&+)&+)&+)&+)&+C#+'*+)*+!*+~*+)*+:&+)&+&%+{*+]*+^*+/*+&%+&%+(*+:&+_*+:*+<*+[*+&%+)&+:&+}*+|*+1*+2*+3*+4*+5*+6*+7#+7*+8*+9*+0*+a*+(`.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*+L%+(, ~~ :`.P*+Q*+P&+)&+)&+)&+)&+)&+)&+)&+)&+)&+)&+)&+)&+)&+)&+)&+)&+)&+)&+", +"j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+R*+M%+KC.>Y.S*+T*+U*+V*+W*+W*+X*+U*+Y*+Z*+rX.}`.j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+`*+ =+.=++=+@=+#&+#=+$=+%=+&=+*=+==+-=+;=+>=+,=+'=+$=+)=+!=+~=+{=+]=+^=+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+D#+/=+(=+_=+:=+<=+[=+}=+j.+/=+|=+1=+2=+3=+D#+}*+4=+/=+`*+5=+6=+7=+D#+]=+[*+8=+9=+0=+a=+b=+c=+d=+e=+f=+g=+9*+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=+Z&+`*+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+`*+J=+P$+B&+K=+e.+L=+M=+J$+J=+R*+(Z.N=+O=+P=+Q=+R=+S=+T=+~~ )~ U=+CV.V=+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+j.+", +"}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.P&+r++W=+X=+Y=+Z=+5( `=+ -+ -+.-+5( +-+@-+^X.P&+}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.J=+J=+J=+]=+ =+#-+$-+%-+ =+&-+*-+=-+--+;-+>-+,-+'-+)-+!-+~-+{-+]-+^-+,-+]=+}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.]=+/-+(-+_-+:-+<-+[-+}-+}`.|-+1-+2-+FJ 3-+4-+5-+6-+D#+7-+8-+9-+0-+a-+/=+^=+b-+c-+d-+o@+e-+/=+f-+g-+h-+i-+j-+:%+k-+l-+m-+d=+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-+J=+}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.#-+N-+c&+O-+P-+Q-+R-+S-+T-+Q`.W=+U-+V-+W-+X-+Y-+Z-+`-+/' (, ;+ZV.R*+}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.", +"}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.D#+I*+.;++;+@;+#;+$;+%;+tL tL &;+$;+*;+I$+P`.P&+}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`./=+@=+=;+-;+;;+>;+h&++=+h&+,;++=+>-+';+;;+)-+);+!-+,-+!;+~;+{-+{;+/=+^-+/=+J=+}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.];+^;+/;+(;+_;+:;+}`.}`.|-+<;+[;+};+|;+1;+2;+3;+4;+5;+6;+7;+8;+a-+P&+/=+9;+0;+a;+b;+c;+d;+e;+f;+g;+h;+i;+j;+k;+l;+m;+n;+o;+p;+q;+r;+s;+t;+u;+v;+w;+n;+x;+y;+z;+A;+B;+C;+D;+E;+F;+G;+H;+I;+J;+K;+#-+L;+}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.]=+L;+6%+B&+M;+N;+O;+P;+Q;+vE.R;+zF L%+S;+T;+U;+V;+W;+X;+Y;+ZV.P&+P&+}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.}`.", +"P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+I*+[`.Z;+`;+ >+.>++>+@>+@>+#>+$>+%>+&>+fQ.V=+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+*>+*>+=>+->+;>+>>+,>+'>+)>+)>+->+)>+!>+~>+{>+P&+]>+^>+/>+(>+b-+*>+_>+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+:>+<>+[>+}>+|>+1>+P&+P&+P&+_>+2>+3>+4>+5>+6>+7>+8>+9>+0>+a>+*>+P&+P&+P&+_>+m-+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>+_>+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+;>+M>+N>+O>+P>+Q>+R>+S>+qH.T>+zF U>+V>+W>+X>+Y>+Z>+`>+ ,+f.+.,+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+P&+", +"I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+EY.+,+@,+#,+$,+%,+%,+&,+*,+=,+-,+ZG.;,+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+>,+,,+>,+,,+',+),+!,+',+~,+S>+S>+S>+!,+!,+{,+',+],+^,+/,+(,+1>+,,+*>+>,+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+_,+:,+<,+[,+},+|,+_,+I*+I*+I*+1>+I*+1,+2,+3,+4,+5,+6,+7,+R*+8,+9,+0,+,,+I*+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,+F,+,,+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+,,+>,+#-+B&+N,+O,+P,+Q,+R,+S,+D! /' y#+T,+U,+V,+W,+X,+Y,+Z,+;,+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+", +"I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+;,+`,+ '+.'++'+@'+#'+#'+$'+%'+&'+*'+='+&%+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+*>+F,+-'+;'+>'+)>+,'+''+)'+',+~>+>'+-'+!'+~'+{'+^>+]'+^'+),+/'+F,+*>+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+('+_'+:'+<'+['+}'+1>+,,+I*+I*+R*+,,+a,+1>+|'+1'+2'+3'+4'+5'+6'+7'+8'+L>+*>+,,+9'+0'+yY.a'+b'+c'+d'+e'+a,+_>+,,+f'+g'+h'+i'+j'+F,+`*+k'+l'+m'+n'+o'+p'+q'+r'+x=+s'+t'+x=+u'+v'+w'+x'+y'+z'+A'+B'+),+,,+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+>,+F,+C'+N>+A%+D'+E'+F'+G'+H'+/' D, I'+J'+K'+L'+M'+N'+I*+P&+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+", +"I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+;,+O'+P'+Q'+R'+S'+T'+T'+U'+V'+W'+X'+Y'+tZ.Z'+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+`'+ )+.)++)+@)+ )+#)+$)+ )+%)+&)+*)+`'+=)+-)+;)+>)+.)+,)+')+))+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+!)+~)+{)+])+^)+/)+E,+E,+I*+I*+I*+I*+I*+()+_)+:)+<)+[)+})+|)+1)+2)+3)+4)+5)+')+6)+7)+8)+}X.9)+0)+a)+b)+c)+()+d)+e)+f)+g)+h)+4)+()+`'+i)+j)+k)+l)+m)+n)+o)+p)+q)+r)+s)+D>+t)+u)+v)+w)+x)+y)+z)+A)+B)+()+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+))+o)+;>+C)+D)+E)+F)+G)+H)+(< k( k( I)+J)+K)+L)+M)+N)++)+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+I*+", +"V=+V=+V=+V=+V=+V=+V=+V=+V=+V=+V=+V=+V=+V=+V=+V=+V=+V=+V=+V=+O)+P)+Q)+R)+S)+T)+T)+U)+R'+V)+W)+X)+Y)+I*+;,+V=+V=+V=+V=+V=+V=+V=+V=+V=+V=+V=+V=+V=+V=+V=+V=+V=+V=+V=+V=+V=+V=+V=+V=+V=+V=+V=+V=+V=+V=+V=+V=+V=+V=+V=+V=+V=+V=+V=+V=+V=+V=+V=+V=+V=+V=+V=+V=+V=+V=+V=+V=+V=+V=+V=+V=+V=+V=+V=+V=+V=+V=+V=+V=+))+')+')+')+')+()++)+Z)+Z)++)+`)+ !++)+.!++!+})+@!+')+()+')+V=+V=+V=+V=+V=+V=+V=+V=+V=+V=+V=+V=+V=+V=+V=+V=+V=+V=+V=+V=+V=+V=+V=+V=+V=+V=+V=+V=+V=+V=+V=+()+#!+$!+%!+&!+/)+()+V=+V=+V=+V=+V=+V=+')+5)+*!+=!+-!+;!+>!+,!+'!+)!+!!+~!+{!+_)+]!+^!+/!+(!+_!+:!+~+,~+'~+)~+!~+~~+{~+]~+^~+*!+/~+(~+_~+:~+n-+<~+[~+}~+|~+1~+2~+3~+4~+5~+6~+7~+8~+9~+0~+_,+a~+b~+c~+q!+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+()+o)+,-+d~+e~+f~+g~+h~+i~+Vq D, j~+k~+l~+m~+n~+o~+p~+.)+o)+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+", +"q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+{!+r~+s~+t~+u~+v~+v~+w~+R)+x~+y~+_s z~+/-+Z'+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+A~+A~+B~+C~+D~+E~+F~+G~+H~+I~+J~+K~+L~+A~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+M~+N~+O~+P~+Q~+q~+q~+q~+q~+q~+q~+q~+q~+R~+S~+T~+U~+V~+W~+X~+Y~+Z~+`~+ {+.{++{+@{+#{+${+%{+&{+_e.*{+={+-'+-{+;{+>{+,{+'{+){+!{+~{+{{+]{+A~+^{+/{+({+Q;+_{+:{+<{+[{+}{+|{+1{+2{+3{+4{+V=+5{+6{+7{+8{+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+9{+0{+a{+b{+c{+d{+e{+f{+g{+k( k( (< h{+i{+j{+k{+ =+l{+^{+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+q~+", +";,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+Z'+J~+r~+m{+n{+o{+p{+p{+j{.q{+r{+y~+s{+t{+u{+D#+Z'+.,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+^{+B~+A~+v{+B~+K~+w{+x{+y{+z{+A{+B{+R~+L~+A~+B~+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+q~+6U.C{+D{+E{+F{+q~+q~+;,+;,+;,+;,+;,+A~+A~+y4.G{+H{+I{+J{+*!+K{+R~+L{+M{+N{+O{+P{+Q{+R{+S{+T{+9{+9{+9{+U{+V{+W{+X{+Y{+Z{+`{+ ]+.]++]+9{+B~+l{+@]+#]+9{+x{+x{+x{+x{+$]+$]+%]+&]+*]+=]+-]+;]+>]+V=+B~+A~+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+^{+^{+,]+i#+']+)]+!]+~]+{]+Rl k3 !~ /' ]]+^]+/]+(]+_]+:]+x{+l{+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+;,+", +"Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+<]+r~+[]+}]+|]+1]+1]+2]+1]+3]+4]+5]+0p 6]+7]+8]+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+l{+Z'+R~+9]+0]+a]+T. b]+c]+l{+8{+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+8{+d]+e]+f]+g]+h]+i]+Z'+Z'+Z'+Z'+Z'+Z'+j]+8{+k]+l]+m]+n]+o]+B)+p]+Z'+q]+r]+s]+t]+~!+<]+u]+v]+w]+x]+y]+8{+R~+z]+A]+B]+C]+D]+;S E]+F]+R~+j]+Z'+Z'+w{+8{+Z'+Z'+Z'+Z'+Z'+Z'+Z'+R~+G]+H]+I]+J]+K]+L]+M]+={+8{+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+8]+zZ.N]+O]+P]+Q]+R]+S]+T]+!i D, #{ U]+V]+W]+X]+Y]+Z]+`]+A~+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+Z'+", +" ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+.^++^+@^+#^+$^+%^+%^+&^+n{+*^+=^+-^+;^+2% >^+E,+,^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+'^+ ^+)^+!^+~^+{^+]^+^^+/^+(^+'^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+_^+:^+<^+[^+}^+|^+1^+'^+ ^+ ^+ ^+ ^+ ^+)^+2^+3^+4^+5^+6^+B~+ ^+'^+ ^+)^+7^+8^+9^+'^+'^+0^+a^+b^+c^+d^+9j.)^+7^+e^+f^+g^+h^+i^+j^+k^+l^+'^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+'^+m^+n^+o^+p^+q^+r^+s^+t^+u^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+Z'+v^+^X.w^+X;+x^+y^+z^+A^+B^+g{+C^+yr D^+YR.E^+F^+G^+H^+I^+J^+)^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+ ^+", +"j]+j]+j]+j]+j]+j]+j]+j]+j]+j]+j]+j]+j]+j]+j]+j]+j]+j]+j]+,^+.^++^+K^+L^+M^+N^+N^+O^+N^+P^+Q^+R^+-^+S^+BF.T^+v^+j]+j]+j]+j]+j]+j]+j]+j]+j]+j]+j]+j]+j]+j]+j]+j]+j]+j]+j]+j]+j]+j]+j]+j]+j]+j]+j]+j]+j]+j]+j]+j]+j]+j]+j]+j]+j]+j]+j]+j]+j]+j]+j]+j]+j]+j]+j]+j]+j]+j]+j]+j]+j]+j]+j]+j]+j]+j]+j]+'^+j]+j]+j]+j]+j]+j]+j]+j]+j]+j]+j]+j]+2^+U^+V^+W^+X^+Y^+u^+j]+j]+j]+j]+j]+j]+j]+j]+j]+j]+j]+j]+j]+j]+j]+j]+j]+j]+j]+j]+j]+j]+j]+j]+j]+j]+j]+j]+j]+j]+j]+j]+j]+j]+2^+Z^+`^+ /+./++/+@/+_^+j]+j]+j]+j]+j]+j]+,]+_^+#/+$/+%/+&/+*/+2^+j]+'^+,]+u^+!^+,]+=/+-/+;/+T. >/+,/+'/+)/+!/+~/+{/+]/+^/+//+(/+_/+=/+'^+j]+j]+j]+j]+j]+j]+j]+j]+j]+j]+j]+'^+2^+:/+(+u^+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+", +"B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+,(+'(+)(+!(+~(+L^+L^+{(+L^+](+^(+/(+-^+_* ((+_(+/-+:(+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+<(+<(+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+[(+<(+[(+}(+|(+1(+B#+<(+[(+B#+B#+B#+B#+B#+B#+B#+B#+2(+3(+, +4(+5(+<(+6(+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+8]+7(+8(+9(+0(+a(+b(+[(+B#+B#+B#+B#+B#+B#+B#+B#+b(+c(+d(+e(+,^+[(+<(+B#+B#+B#+B#+B#+[(+<(+[(+f(+t^+g(+h(+i(+j(+k(+XW.l(+m(+n(+o(+p(+b(+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+q(+r(+s(+t(+u(+v(+w(+x(+v^+<(+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+,^+y(+tZ.z(+yr D, g{+A(+B(+C(+D(+E(+F(+G(+M!+H(+,^+[(+2(+I(+J(+K(+L(+M(+N(+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+B#+", +"8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+v^+O(+P(+Q(+R(+S(+j/+j/+T(+j/+U(+V(+W(+f% @^ X(+Y(+q~+2/+v^+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+Z(+`(+`(+`(+ _+<(+8]+8]+8]+<(+b(+b(+b(+._+._+8]++_+@_+#_+$_+%_+Z(+b(+8]+8]+8]+8]+8]+8]+8]+8]+b(+&_+*_+=_+g(+b(+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+-_+B#+;_+>_+,_+'_+-_+8]+8]+8]+8]+8]+8]+8]+8]+8]+b(+)_+!_+~_+{_+]_+b(+8]+8]+8]+8]+8]+8]+8]+b(+^_+q(+b(+q(+Z(+/_+<(+(_+__+:_+<_+[_+}_+._+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+b(+|_+1_+=]+2_+3_+4_+5_+6_+b(+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+2/+8]+7_+[8 P= k( k3 7f ~J 8_+9_+0_+a_+b_+:&+7_+8]+8]+<(+M(+c_+d_+e_+f_+2(+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+8]+", +"v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+2/+O(+P(+g_+h_+i_+!(+!(+j_+!(+k_+l_+m_+_* _* )* f% n_+o_+2/+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+Z(+`(+p_+q_+r_+s_+b(+._+._+b(+v^+t_+u_+v_+w_+x_+y_+z_+FJ A_+B_+C_+D_+E_+2/+v^+v^+v^+v^+v^+v^+2/+Z(+F_+G_+o!+H_+q(+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+b(+I_+J_+9(+nT.K_+L_+v^+v^+v^+v^+v^+v^+v^+v^+v^+2/+b(+M_+N_+O_+P_+._+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+2/+q(+Q_+R_+S_+T_+U_+V_+W_+b(+2/+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+b(+Z(+p/+X_+Y_+Z_+`_+ :+|_+q(+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+.:++:+@:+pd D, D! D! Rl X,+#:+$:+%:+&:+*:+=:+v^+v^+v^+v^+-:+;:+>:+,:+':+):+2(+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+v^+", +"H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+!:+~:+{:+$[.]:+^:+^:+/:+R(+(:+_:+::+/(+)* :* /* <:+];+[:+2/+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+&(+}:+|:+1:+2:+3:+4:+5:+6:+7:+8:+&(+9:+0:+a:+b:+c:+d:+e:+f:+g:+h:+i:+j:+k:+l:+H(+H(+H(+H(+H(+H(+l:+m:+n:+o:+p:+q:+r:+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+2/+s:+t:+u:+v:+w:+k:+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+r:+x:+y:+z:+v^+&(+l:+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+&(+l:+A:+=:+B:+C:+D:+2/+E:+l:+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+l:+F:+G:+H:+I:+J:+K:+L:+M:+F:+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+7_+j]+N:+F' E' !~ !~ !~ !~ H) z#+O:+P:+Q:+R:+H(+l:+H(+H(+H(+l:+S:+T:+d/+U:+V:+=:+l:+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+H(+", +"k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+7_+W:+~:+X:+Y:+Z:+`:+`:+ <+h_+.<++<+@<+)* }& }& }& :* #<+3)+7_+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+}:+$<+%<+&<+'!+*<+=<+-<+;<+><+,<+'<+)<+!<+~<+{<+]<+^<+/<+(<+_<+:<+<<+[<+}<+7_+k:+k:+k:+k:+k:+k:+r:+|<+1<+2<+3<+m:+r:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+:(+4<+5<+6<+7<+8<+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+r:+m:+9<+0<+a<+b<+c<+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+c<+d<+e<+f<+g<+m:+r:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+}:+h<+i<+j<+k<+l<+m<+3(+}:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+2/+n<+%(+o<+pd D, D! !~ D! D! Rl X,+p<+q<+r<+s<+t<+r:+k:+k:+k:+k:+=:+u<+v<+w<+x<+y<+=:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+k:+", +"7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+!:+~:+z<+A<+B<+C<+C<+D<+$[.E<+F<+G<+}& :* :* e& H<+Y(+2/+H(+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+I<+J<+K<+L<+M<+N<+O<+P<+Q<+R<+S<+T<+U<+V<+W<+X<+Y<+Z<+`<+ [+.[++[+@[+#[+$[+c<+H(+7_+7_+7_+7_+7_+r:+%[+&[+*[+=[+&(+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+r:+:(+-[+;[+v:+7<+8<+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+r:+>[+,[+'[+x:+c<+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+}:+)[+![+~[+{[+b<+c<+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+}:+][+^[+/[+([+_[+:[+<[+r:+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+.:+E,+[[+}[+D! !~ !~ D! D! So k( u] |[+1[+2[+3[+4[+F:+7_+7_+7_+7_+l:+5[+6[+7[+8[+9[+7_+H(+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+", +"[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+0[+a[+b[+c[+d[+e[+e[+f[+Y:+g[+h[+G<+::+:* e& e& 5$ i[+j[+o_+n<+7_+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+k[+l[+m[+n[+o[+p[+q[+r[+s[+t[+u[+v[+w[+x[+y[+z[+A[+A[+B[+C[+D[+E[+F[+G[+H[+I[+z[+J[+[:+[:+[:+[:+[:+J[+K[+L[+M[+N[+J[+k[+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+k[+=[+O[+P[+Q[+R[+S[+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+l[+T[+U[+z:+7_+V[+J[+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+J[+W[+X[+~[+Y[+Z[+l[+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+J[+`[+ }+.}++}+@}+#}+$}+%}+J[+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+7_+&}+)&+*}+=}+D, D! D! D! !~ D! #_ -}+;}+st.>}+,}+'}+V[+k[+[:+[:+[:+V[+)}+!}+~}+{}+]}+^}+)}+V[+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+[:+", +"7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+/}+(}+_}+:}+<}+[}+[}+}}+A<+|}+1}+2}+:* e& F* F* F* 5$ 3}+4}+j]+5}+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+V[+J[+6}+7}+8}+9}+0}+a}+b}+c}+d}+5(+e}+A[+f}+6}+=[+J[+J[+=[+l[+J[+g}+h}+i}+j}+k}+l}+.:+=[+7_+7_+7_+7_+J[+m}+n}+o}+K[+J[+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+=[+=[+p}+q}+r}+s}+S[+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+J[+t}+u}+v}+w}+x}+J[+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+J[+y}+z}+A}+B}+Z[+l[+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+J[+V[+F:+C}+D}+E}+F}+G}+H}+J[+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+n<+1>+I}+P= !~ !~ !~ D! D! D! k( h{+a/+o_+J}+K}+L}+M}+N}+)}+7_+7_+7_+7_+k[+O}+P}+Q}+R}+S}+T}+k[+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+7_+", +".:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+U}+a[+V}+T. W}+X}+X}+Y}+c[+Z}+1}+`}+e& F* F* 5$ 5$ V* F* |+n<+7_+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+l[+V[+f}+.|++|+@|+#|+$|+%|+&|+}_+*|+l[+l[+J[+.:+.:+.:+.:+.:+.:+.:+l[+=|+-|+;|+>|+,|+'|+l[+.:+.:+.:+=|+D[+)|+!|+~|+{|+l[+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+]|+^|+/|+(|+l[+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+g}+_|+:|+<|+l[+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+V[+I<+[|+}|+||+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+=|+1|+2|+3|+4|+K:+5|+6|+=|+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+n<+q~+Y;+yr k( !~ !~ D! !~ !~ k( u] 7|+d=+8|+9|+0|+a|+b|+c|+.:+.:+.:+.:+.:+d|+e|+f|+g|+h|+e|+i|+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+", +"n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+j|+k|+l|+T. m|+n|+n|+o|+:}+p|+q|+`}+F* 5$ 5$ 5$ V* V* Y& Ig KC.r|+&}+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+5}+s|+t|+u|+v|+w|+x|+y|+z|+A|+B|+C|+s|+s|+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+s|+n<+t}+D|+E|+F|+G|+s|+H|+*|+I|+J|+K|+L|+M|+T[+N|+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+O|+P|+Q|+XB.R|+O|+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+S|+T|+U|+z:+.:+t|+s|+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+s|+N[+V|+W|+X|+Y|+s|+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+N|+Z|+`|+ 1+.1++1+@1+#1+N|+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+$1+/-+%1+=}+!~ H) D! D! !~ D! D, =}+&1+];+*1+n<+2/+=1+-1+;1+>1+s|+s|+n<+n<+n<+,1+n<+l:+'1+k{+)1+!1+,1+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+", +".:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+O|+~1+k|+{1+T. ]1+^1+^1+/1+T. (1+_1++l 5$ 5$ V* V* i% i% Y& g% :1+<1+r|+&}+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+O|+.:+s|+t|+e}+[1+}1+|1+11+21+31+41+C|+N|+s|+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+s|+51+r:+61+71+81+91+01+a1+b1+c1+d1+e1+f1+g1+I|+s|+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+s|+h1+i1+j1+k1+l1+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+s|+m1+n1+o1+p1+q1+s|+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+S|+K[+r1+s1+t1+N[+s|+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+u1+v1+w1+x1+y1+z1+A1+B1+s|+O|+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+.:+O|+n<+n<+7_+C1+u] !~ H) H) D! D! !~ !~ D! D1+q~+E1+F1+G1+H1+I1+J1+K1+L1+O|+s|+.:+.:+O|+d|+M1+N1+g|+O1+P1+d|+O|+.:+.:+.:+.:+.:+.:+.:+.:+.:+", +"n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+j|+Q1+R1+T. S1+rb rb 4H Uc T1+U1+V1+|n i% V* i% i% Y& Y& g% Y& |+W1+O|+X1+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+S|+t|+u|+Y1+Z1+`1+ 2+.2+{|++2+@2+H|+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+S|+#2+$2+%2+&2+*2+=2+-2+;2+>2+,2+'2+)2+m1+S|+X1+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+!2+~2+{2+]2+^2+/2+(2+!2+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+X1+m}+_|+_2+T|+!2+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+H|+:2+<2+[2+}2+:2+H|+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+S|+|2+12+22+32+42+52+O|+n<+X1+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+n<+62+72+82+}q k( H) D! D! H) H) k( }q 92+72+62+n<+X1+02+a2+b2+c2+%,+d2+e2+f2+n<+n<+n<+n<+g2+h2+i2+j2+k2+l2+s|+n<+n<+n<+n<+n<+n<+n<+n<+n<+", +"&}+&}+&}+&}+&}+&}+&}+&}+&}+&}+&}+&}+&}+&}+&}+&}+&}+&}+&}+&}+m2+n2+o2+T. p2+|e.|e.q2+rb r2+s2+s|+-% 5$ Y& Y& Y& g% g% <* )% t2+P9.2/+E1+&}+&}+&}+&}+&}+&}+&}+&}+&}+&}+&}+&}+&}+&}+&}+&}+&}+&}+&}+&}+&}+&}+&}+&}+&}+g2+u2+v2+w2+x2+y2+z2+A2+0K B2+&}+&}+&}+&}+&}+&}+&}+&}+&}+&}+&}+&}+&}+&}+&}+&}+&}+&}+&}+&}+@2+C2+D2+E2+F2+G2+H2+I2+l[+J2+K2+L2+M2+g2+&}+&}+&}+&}+&}+&}+&}+&}+&}+&}+&}+&}+&}+&}+&}+&}+&}+&}+&}+&}+&}+&}+&}+&}+&}+&}+&}+&}+&}+&}+&}+&}+&}+&}+&}+E1+B2+~2+N2+O2+P2+Q2+R2+S2+E1+&}+&}+&}+&}+&}+&}+&}+&}+&}+&}+&}+B2+T2+U2+V2+n<+u2+g2+&}+&}+&}+&}+&}+&}+&}+&}+&}+&}+&}+&}+&}+g2+W2+X2+~[+Y2+T2+B2+&}+&}+&}+&}+&}+&}+&}+&}+&}+&}+&}+&}+&}+g2+&}+Z2+`2+ 3+.3++3+@3+#3+g2+&}+&}+&}+&}+&}+&}+&}+&}+&}+&}+&}+&}+&}+&}+&}+&}+&}+&}+&}+&}+&}+&}+&}+&}+&}+&}+&}+&}+&}+&}+&}+&}+&}+&}+E1+.:+$3+%3+EC 1g D! H) H) D! D! #{ i.+&3+7_+E1+g2+*3+=3+-3+;3+>3+,3+'3+)3+!3+&}+&}+&}+&}+~3+{3+]3+^3+/3+(3+~3+&}+&}+&}+&}+&}+&}+&}+&}+&}+", +"X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+_3+n2+:3+Uc <3+[3+[3+}3+;S |3+13+23+33+5$ h% g% g% g% <* <* )% %& O, 43+L_+53+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+B2+u2+63+73+83+93+03+A2+a3+b3+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+c3+d3+e3+f3+g3+h3+i3+j3+k3+{|+l3+X1+g2+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+m3+n3+o3+p3+q3+r3+s3+m3+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+B2+63+t3+u3+v3+63+B2+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+g2+w3+x3+y3+z3+A3+B2+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+B3+C3+D3+E3+F3+K:+G3+H3+B2+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+X1+I3+J3+K3+&a k( H) D! H) D! H) k( &a K3+72+W1+X1+g2+B2+|2+L3+M3+N3+O3+P3+Q3+R3+X1+X1+X1+X1+X1+E1+S3+T3+U3+V3+W3+g2+X1+X1+X1+X1+X1+X1+X1+X1+", +"X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+c3+Y3+Z3+hk `3+q}.q}. 4+^V .4++4+l[+L_+@4+#4+p* <* <* )% )% %& $4+%4+.& &4+O|+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+g2+*4+=4+-4+;4+>4+,4+'4+m3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+B2+)4+!4+~4+{4+]4+^4+c3+X3+/4+(4+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+m3+_4+:4+<4+[4+}4+Y|+|4+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+)4+14+24+34+44+E1+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+E1+B2+54+64+g2+E1+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+/4+74+84+94+04+a4+b4+c4+/4+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+62+k:+&3+3| E' D! D! H) H) H) !~ )~ d4+I3+X1+X3+X3+X3+B3+e4+f4+g4+h4+i4+j4+k4+l4+X3+X3+X3+X3+X3+m4+n4+o4+p4+q4+r4+B3+X3+X3+X3+X3+X3+X3+X3+X3+", +"$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+s4+t4+u4+;S v4+w4+w4+x4+2# y4+z4+J[+53+53+A4+B4+)% )% )% %& %& -- _; ^b P9..:+53+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+k3+k3+C4+D4+E4+F4+G4+H4+I4+J4+53+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+K4+k3+63+1H.L4+M4+k3+K4+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+k3+N4+O4+P4+Q4+J4+K4+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+J4+R4+S4+T4+U4+V4+k3+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+53+k3+W4+X4+Y4+Z4+*4+k3+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+`4+ 5+.5++5+@5+#5+$5+%5+&5+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+$1+53+W1+o_+*5+pd k( H) H) H) D! H) }[+#: 82+1>+=5+E1+$1+$1+K4+`4+-5+;5+>5+,5+'5+)5+!5+~5+$1+$1+$1+$1+$1+`4+{5+]5+^5+/5+(5+~5+$1+$1+$1+$1+$1+$1+$1+", +"X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+c3+_5+:5+<5+[5+}5+}5+|5+15+25+35+c<+I3+S[+&3+<* )% %& %& -- -- _; _; r* %4+45+8<+W1+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+J4+J4+55+65+75+85+95+05+a5+J4+J4+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+J4+J4+b5+c5+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+d5+e5+f5+g5+|4+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+h5+i5+j5+T. k5+l5+m5+c5+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+n5+o5+p5+q5+r5+s5+J4+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+J4+t5+u5+v5+w5+x5+y5+z5+b5+k3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+X3+A5+B5+o<+C5+k( H) H) D! H) H) !~ yr D5+L_+W1+53+X3+X3+X3+X3+b5+&5+E5+F5+G5+H5+I5+J5+&5+X3+X3+X3+X3+X3+k3+K5+L5+M5+N5+{3+`4+X3+X3+X3+X3+X3+X3+X3+", +"53+53+53+53+53+53+53+53+53+53+53+53+53+53+53+53+53+53+53+62+h5+O5+P5+Q5+R5+S5+S5+T5+U5+V5+13+l[+W5+W1+8<+X5+B4+u- -- -- _; _; y- !% I; @* Y5+X1+W1+53+53+53+53+53+53+53+53+53+53+53+53+53+53+53+53+62+J4+a5+Z5+`5+ 6+.6++6+@6+J4+62+53+53+53+53+53+53+53+53+53+53+53+53+53+53+53+53+53+53+53+53+53+53+53+53+53+53+53+62+62+53+53+53+53+53+53+53+53+53+53+53+53+53+53+53+53+53+53+53+53+53+53+53+53+53+53+53+53+53+53+53+53+53+53+53+53+53+53+53+53+53+53+53+53+53+62+62+#6+$6+%6+&6+J4+53+53+53+53+53+53+53+53+53+53+53+53+53+62+*6+=6+-6+;6+>6+,6+'6+J4+62+53+53+53+53+53+53+53+53+53+53+53+c5+)6+!6+~6+{6+]6+c5+53+53+53+53+53+53+53+53+53+53+53+53+53+62+62+^6+/6+(6+_6+:6+u5+<6+62+53+53+53+53+53+53+53+53+53+53+53+53+53+53+53+53+53+53+53+53+53+53+53+53+53+53+53+53+62+53+&4+B5+[6+yr !~ D! H) H) H) D! D! 1g )~ }6+r|+=5+53+53+53+53+53+53+53+W5+|6+16+26+36+M}+46+`4+53+53+53+53+53+56+66+76+86+96+06+`4+53+53+53+53+53+53+", +"W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+a6+b6+c6+FJ d6+e6+e6+f6+g6+h6+i6+l[+I3+W1+W1+E1+Kc <* _; _; y- y- !% !% W* j6+k6+X3+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W5+l6+m6+n6+o6+p6+q6+r6+s6+62+W5+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+62+t6+u6+%6+v6+w6+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+x6+y6+z6+A6+B6+C6+55+D6+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+l6+E6+F6+G6+H6+)6+l6+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+D6+I6+J6+K6+L6+M6+N6+O6+l6+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+W1+62+&4+3)+}6+:`.E' D! H) D! D! H) H) k( =}+P6+o_+&4+W1+W1+W1+W1+W1+W1+W1+W1+W1+56+Q6+R6+S6+T6+g1+U6+W5+W1+W1+W1+W1+W5+V6+W6+X6+Y6+Z6+W1+W5+W1+W1+W1+W1+W1+", +"w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+`6+ 7+.7+!1.+7+@7+@7+#7+$7+%7+&7+l1+I3+w6+I3+S2+*7+y- _; y- y- !% !% W* W* X& j6+=7+-7+I3+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+l6+l6+;7+>7+,7+'7+)7+!7+~7+{7+l6+62+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+]7+u6+f5+^7+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+l6+;5+/7+(7+_7+:7+<7+[7+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+l6+}7+|7+17+27+37+l6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+a6+47+57+94+67+77+87+97+a6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+w6+62+A5+8<+07+a7+P= !~ H) D! H) H) D! D! H) H) b7+=[+A5+w6+w6+w6+w6+w6+w6+w6+w6+w6+l6+l6+W3+c7+d7+e7+f7+*6+w6+w6+w6+w6+w6+|6+g7+h7+i7+j7+k7+56+w6+w6+w6+w6+w6+", +"I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+l7+m7+n7+o7+p7+q7+q7+r7+s7+t7+u7+S|+=5+I3+W1+=5+O|+v7+%4+!% !% W* W* @* @* X& X& :; w7+X3+=5+W1+I3+I3+I3+I3+I3+I3+I3+I3+I3+W1+I3+l6+;7+x7+y7+z7+A7+B7+C7+D7+I3+W1+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+E7+u6+f5+v6+l6+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+W1+I3+F7+G7+H7+I7+J7+x6+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+W1+D7+K7+L7+M7+F7+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+D6+gU.N7+O7+P7+Q7+R7+97+x6+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+W1+A5+X1+S7+T7+zF }[+H) D! H) H) D! H) k( }q U7+V7+W7+W1+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+X7+Y7+Z7+`7+ 8+.8++8+D6+I3+I3+I3+I3+|6+@8+#8+$8+%8+&8+*8+=8+I3+I3+I3+I3+", +"=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+-8+;8+>8+,8+'8+)8+)8+!8+~8+{8+]8+!2+A5+=5+=5+=5+A5+X3+^8+/8+1% W* @* @* X& X& [= (8+k6+I3+I3+A5+=5+=5+=5+=5+=5+=5+=5+=5+=5+_8+_8+:8+<8+[8+}8+|8+18+28+F7+_8+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+38+48+u6+58+68+38+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+78+-8+88+98+08+a8+b8+_8+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+_8+c8+d8+e8+f8+g8+_8+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+_8+h8+i8+j8+k8+0I l8+m8+_8+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+&4+W1+X3+n8+yr k( H) D! H) H) D! H) #_ &a &1+-_+&4+A5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+=5+o8+p8+(5+q8+r8+s8+t8+A5+o8+=5+=5+=5+=5+u8+v8+w8+x8+y8+z8+f7+_8+78+=5+=5+", +"I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+A8+B8+C8+D8+E8+A6+A6+F8+G8+H8+]8+!2+A5+I3+I3+I3+A5+w6+I8+[= !% @* @* X& X& :; j% [& (8+J8+S2+A5+I3+I3+I3+I3+I3+I3+I3+I3+_8+_8+K8+L8+M8+N8+O8+P8+Q8+s6+R8+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+38+38+48+S8+58+T8+38+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+_8+g8+U8+V8+W8+X8+R8+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+Y8+Z8+`8+ 9+.9++9+Y8+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+38+_8+gU.@9+#9+$9+%9+&9+h8+_8+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+A5+A5+L_+*9+u[ k( H) D! H) H) D! H) k( #: X/+I3+62+A5+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+I3+=8+=9+-9+;9+>9+,9+'9+)9+I3+I3+I3+I3+o8+!9+~9+{9+]9+^9+/9+(9+p8+I3+I3+", +"A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+_9+:9+<9+)8+[9+}9+}9+|9+19+29+39+B2+W7+A5+A5+A5+A5+W7+X3+43+I; X& X& :; :; j% j% [& H; [& 49+62+&4+A5+A5+A5+A5+A5+A5+A5+_8+59+69+79+89+99+09+a9+b9+c9+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+d9+e9+f9+g9+R8+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+s6+h9+i9+j9+c9+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+c9+k9+l9+m9+n9+Z8+c9+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+c9+o9+p9+q9+r9+s9+t9+u.+c9+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+I8+r|+u9+&a k( H) D! H) H) D! H) }[+zF v9+w9+X1+x9+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+y9+z9+A9+B9+C9+D9+E9+y9+A5+A5+A5+F9+Y7+G9+H9+I9+J9+K9+L9+M9+p8+A5+", +"W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+28+N9+O9+A6+P9+S^ S^ Q9+]( R9+S9+m3+W7+W7+W7+W7+W7+W7+W7+|4+^K..8 j% :; j% j% [& H; }> K> T9+W7+A5+W7+W7+W7+W7+W7+W7+U9+k9+V9+W9+X9+Y9+Z9+`9+ 0+U9+.0+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7++0+@0+e9+f9+#0++0+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+U9+$0+%0+&0+*0+=0+-0+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+-0+;0+>0+,0+'0+)0+-0+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+!0+~0+{0+]0+^0+77+/0+(0+!0+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+A5+S7+V7+_0+pd !~ D! H) D! H) D! H) !~ #{ C^+:0+O|+<0+A5+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+[0+}0+|0+10+20+30+'9+40+W7+W7+W7+50+60+70+k +80+90+00+a0+b0+50+W7+", +"A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5++0+c0+N9+d0+e0+f0+g0+g0+h0+i0+j0+39+m3+W7+A5+A5+A5+A5+A5+W7+A5+W7+o* X& m* [& [& H; H; }> u* K> k0+62+W7+W7+A5+A5+A5+l0+m0+n0+o0+p0+q0+r0+s0+ 0+t0+.0++0+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5++0++0+u0+S8+v0+#0++0+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+-0+w0+x0+y0+z0+A0+t0+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+-0+.0+c0+B0+C0+c9+.0+-0+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+-0+D0+E0+F0+G0+H0+-~+I0+l0+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5++0+A5+<0+J0+K0+:] H) D! H) D! H) D! H) 1g E' H) L0+8<+<0+A5++0+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+A5+y9+-0+*8+M0+N0+O0+P0+Q0+[0+A5+A5+-0+R0+S0+T0+U0+V0+W0+X0+Y0+y9++0+", +"W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+28+Z0+`0+ a+.a+#s #s +a+#s @a+#a+n5+I8+W7+W7+W7+W7+W7+W7+I8+38+$a+:; [& [& H; H; }> u* u* f& %a+&a+38+W7+*a+W7+=a+-a+;a+>a+,a+'a+54+)a+!a+=a+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+*a+W7+I8+~a+{a+]a+*a+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+*a+;0+^a+/a+(a+_a+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+W7+*a+:a+ H; }> u* u* f& f& a$ va+wa+38+W7+xa+ya+za+Aa+Ba+Ca+Da+Ea+(a+Fa+|a+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+_a+Ga+Ha+Ia+Ja+Ka+x9+_a+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+La+Ma+Na+Oa+Pa+Qa+_a+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+La+(a+Ra+Sa+Ta+Ua+_a+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+Va+Wa+Xa+Ya+Za+`a+!0+|a+_a+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+W7+<0+I3+ b+.b+)~ #_ D! D! H) D! D! D! k( }q +b+J0+aa+W7+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+x9+@b+I8+R0+#b+$b+%b+&b+*b+=b+x9+x9+|a+Va+-b+;b+>b+,b+'b+)b+!b+50+", +"*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+a9+~b+{b+]b+^b+/b+/b+(b+/b+_b+:b+n5+Ka+*a+*a+*a+*a+*a+*a+*a+I8+I8++0+ Q& 52 wa+28+}b+za+|b+1b+2b+3b+4b+(a+5b+6b+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+7b+8b+Ia+9b+Ka+6b+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+La+0b+ab+bb+cb+db+=a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+=a+eb+fb+gb+hb+eb+=a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+Fa+ib+jb+O7+kb+lb+mb+nb+_a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+Ka+W7+38+ob+h{+D, D! !~ !~ D! H) H) #_ &a pb+L_+qb+I8+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+*a+=b+rb+ca+sb+tb+ub+vb+wb+_a+*a+*a+6b+Va+xb+yb+zb+Ab+Bb+Cb+Db+", +"Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Eb+Fb+Gb+Hb+Ib+Jb+Jb+Kb+Lb+Mb+Nb+[7+<0+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+<0++0+&3+}> u* f& f& Y= Y= [> [> Q& E* Ob+Pb+Qb+Rb+Sb+Tb+Ub+Vb+Wb+Xb+I8+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Yb+Zb+`b+9b+ c+I8+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+0b+.c++c+@c+#c+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Xb+$c+%c+&c+*c+=c+Xb+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Xb+-c+;c+>c+,c+'c+)c+!c+Xb+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+<0+<0+7a+~c+yr D, D! !~ D! D! !~ D! k( pd {c+w6+I8+<0+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+#c+]c+^c+/c+(c+_c+:c+ Y= Y= Y= [> Q& Q& B* dc+ec+fc+gc+hc+ic+jc+kc+lc+mc+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+#c+nc+Zb+oc+9b+<0+3c+#c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+ c+pc+qc+rc+sc+tc+#c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+#c+uc+vc+wc+xc+Yb+<0+#c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+#c+!c+yc+zc+Ac+Bc+Cc+Dc+Ec+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+<0+aa+8<+Fc+Tt #_ D! !~ D! D! !~ D! D, zF U]+Gc+A5+aa+I8+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+3c+Hc+Ic+Jc+Kc+Lc+Mc+Nc+Oc+Hc+3c+3c+3c+3c+Pc+Qc+Rc+Sc+1c+Tc+", +"Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Eb+Uc+Vc+v0 Wc+Xc+Xc+Yc+Zc+`c+ d+.d+qb+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+qb++d+@d+#d+[> [> Q& Q& B* dc+$d+%d+&d+*d+=d+-d+;d+>d+,d+'d+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+)d+3c+!d+`b+9b+qb+'d+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+ c+~d+{d+rc+]d+^d+/d+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+Ka+ c+'d+(d+_d+:d+e+,e+'e+)e+!e+~e+{e+]e+^e+Ka+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+qb+/e+xd+(e+_e+ad+aa+zd+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+:e+f+,f+=f+qb+ad+te+te+te+te+te+te+te+te+te+te+te+te+te+te+te+te+te+te+te+te+te+te+te+te+te+te+:e+'f+)f+!f+= ~f+{f+]f+^f+Oc+6e+te+:e+te+te+'f+zd+ad+/f+", +"ad+ad+ad+ad+ad+ad+ad+ad+ad+ad+ad+ad+ad+ad+ad+ad+ad+ad+ad+ad+(f+_f+:f+xe+g+%g+Gc+Gc+Gc+Gc+Gc+Gc+Gc+Gc+Gc+%g+,g+'g+)g+!g+&g+Rf+%g+Gc+Gc+Gc+Gc+Gc+Gc+Gc+Gc+Gc+Gc+Gc+Gc+~g+{g+]g+^g+/g+(g+_g+:g+h+,h+'h+)h+!h+~h+{h+>h+6d+6d+6d+6d+6d+6d+6d+6d+6d+6d+6d+6d+6d+6d+6d+6d+6d+6d+6d+6d+6d+]h+^h+/h+(h+_h+:h+6d+6d+6d+6d+6d+6d+6d+6d+6d+6d+]h+h+Oh+Ph+Qh+Rh+Sh+]h+=f+=f+=f+=f+=f+=f+=f+=f+=f+Nh+Th+Uh+Vh+Wh+Sh+Nh+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+:h+Xh+Yh+Zh+`h+ i+.i++i+@i+]h+=f+=f+6d+=f+#i+-f+$i+N&+EC (, D, k( k( !~ !~ k( !~ k( #{ i.+%i+*a+#i+6d+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+&i+*i+=i+-i+;i+>i+,i+&i+]h+=f+=f+=f+=f+", +"6d+6d+6d+6d+6d+6d+6d+6d+6d+6d+6d+6d+6d+6d+6d+6d+6d+6d+6d+=f+Tg+'i+)i+<'+!i+~i+~i+{i+]i+^i+/i+(i+=f+6d+6d+6d+6d+kh+:h+]h+_i+:i+h+6d+6d+6d+6d+6d+6d+6d+6d+6d+]h+ni+oi+pi+qi+ri+si+:h+]h+6d+6d+6d+6d+6d+6d+6d+6d+6d+6d+6d+6d+6d+th+ti+ui+vi+Gg+wi+xi+yi+th+=f+6d+#i+ad+0d+zi+L{ !~ (, k( D, D, k( k( !~ !~ /' E' H) Ai+9h+Bi+6d+=f+6d+6d+6d+6d+6d+6d+6d+6d+6d+6d+6d+6d+6d+6d+6d+6d+6d+6d+6d+6d+6d+6d+6d+6d+6d+6d+6d+6d+6d+6d+6d+6d+6d+6d+6d+6d+:h+kh+Ci+Di+Ei+Fi+Gi+Hi+Ii+ch+:h+6d+6d+6d+", +"=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+si+Ji+Ki+]i+Li+Mi+Mi+Ni+Oi+Pi+Qi+Ri+#i+=f+=f+=f+=f+=f+Si+Ti+Ui+Vi+Wi+Xi+Yi+Zi+`i+ j+.j++j+@j+#j+$j+de+Bh+%j+&j+`f+q$ S& S& M& $& $& n* G* z* *j+wr.Bh+de+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+Si+=j+-j+;j+>j+,j+'j+)j+ug+$j+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+=f+Si+Sh+!j+~j+Bg+{j+4i+=f+=f+=f+=f+=f+=f+=f+=f+]j+^j+/j+(j+_j+:j+k+,k+{j+de+de+", +"4i+4i+4i+4i+4i+4i+4i+4i+4i+4i+4i+4i+4i+4i+4i+4i+4i+4i+4i+#i+'k+)k+!k+mj+~k+{k+{k+]k+^k+/k+oj+Ri+(k+4i+4i+4i+Si+Ti+Vi+_k+T. :k+:k+:k+T. l+,l+'l+=l+)l+L{ (, <) /' (, (, /' D, D, D, 3| L{ k( !l+0d+#i+5j+#i+(k+(k+(k+(k+(k+(k+(k+(k+(k+(k+(k+(k+(k+(k+(k+(k+(k+(k+(k+(k+(k+(k+(k+(k+(k+(k+(k+(k+(k+(k+(k+(k+(k+(k+(k+(k+(k+(k+(k+(k+(k+(k+(k+(k+(k+~l+{l+]l+^l+/l+(l+_l+:l+(k+(k+", +"8h+8h+8h+8h+8h+8h+8h+8h+8h+8h+8h+8h+8h+8h+8h+8h+8h+8h+8h+8h+m+,m+Wk+Bi+Bi+Bi+Bi+Bi+Bi+Bi+'m+)m+!m+~m+{m+]m+^m+/m+Wk+Bi+Bi+Bi+Bi+Bi+Bi+Bi+Bi+Bi+Bi+Bi+Bi+Bi+Bi+Bi+Mk+(m+_m+:m+n+,n+'n+)n+!n+~n+{n+]n+^n+/n+2g+tm+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+5j+Sl+Sl+(n+#m+m% y* m% 7! m% T= T= h{ T= h{ l- *j+*j+_n+5j+*m+5j+5j+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+xm+ym+:n+Am+Bm+xm+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+)m++(, (, <) ~~ :`.dn+en+fn+tm+=n+Sl+5j+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+Sl+gn+hn+in+jn+kn+ln+mn+nn+", +"=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+on+pn+qn+rn+sn+&n+&n+tn+un+vn+wn+Dj+=n+=n+=n+gn+xn+yn+zn+An+Bn+Cn+Dn+En+Fn+Gn+Hn+In+Jn+2g+5m+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+Kn+fl+Ln+y* 7! m% T= T= T= T= h{ h{ z* O& G* Mn+Nn+On+Sl+Sl+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+Cm+Pn+Qn+Rn+Sn+Bm+Pn+Kn+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+Cm+Tn+Un+;m+Vn+o+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+.k+=n+,o+'o+)o+!o+~o+", +"5j+5j+5j+5j+5j+5j+5j+5j+5j+5j+5j+5j+5j+5j+5j+5j+5j+5j+5j+bh+{o+]o+^o+/o+(o+un+un+_o+:o++o+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+tm+tm+%p+wm+2s 2k+T= W= T= h{ h{ z* G* G* G* n* n* n* Ok+$& 43+=n+=n+tm+tm+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+%p+&p+*p+=p+-p+;p+%p+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+=n+>p+,p+'p+)p+!p+~p+>p+=n+=n+=n+=n+=n+=n+=n+}o+eo+{p+]p+^p+/p+,p+>p+=n+=n+=n+=n+=n+=n+tm+>o+5m+(p+Rl+_p+{c+Ro o+tm+tm+tm+tm+tm+tm+tm+tm+tm+tm+tm+tm+tm+tm+tm+%p+%p+d +T= #m+h{ l- z* G* G* G* G* n* n* $& Z= M& wp+GB xp+Kn+tm+5m+tm+tm+tm+tm+tm+tm+tm+tm+tm+tm+tm+tm+tm+tm+tm+tm+tm+tm+tm+tm+tm+tm+tm+tm+tm+tm+tm+tm+tm+tm+tm+tm+tm+tm+tm+tm+tm+tm+tm+tm+tm+tm+tm+tm+tm+tm+tm+tm+tm+tm+tm+tm+tm+tm+tm+tm+tm+tm+tm+tm+tm+5m+%p+yp+zp+Ap+Bp+Cp+%p+tm+tm+tm+tm+tm+tm+tm+tm+tm+tm+tm+tm+tm+tm+tm+tm+tm+tm+tm+tm+tm+tm+tm+tm+tm+eo+Dp+Ep+Fp+Gp+Hp+eo+5m+tm+tm+tm+tm+tm+tm+tm+Ip+,p+Jp+Kp+Lp+,p+eo+5m+tm+5m+tm+5m+>o+5m+Mp+Sl+en+Np+Uk.,o./, y; q+,q+'q+)q+!q+~q+{q+]q+]q+^q+/q+(q+(k+6j+5m+5m+5m+5m+5m+5m+5m+5m+5m+5m+5m+5m+5m+5m+5m+6j+6j+5m+Bo+um+Cj+Cj+z* z* G* n* n* $& $& $& $& M& M& wp+q$ _q+5m+%p+6j+6j+5m+5m+5m+5m+5m+5m+5m+5m+5m+5m+5m+5m+5m+5m+5m+5m+5m+5m+5m+5m+5m+5m+5m+5m+5m+5m+5m+5m+5m+5m+5m+5m+5m+5m+5m+5m+5m+5m+5m+5m+5m+5m+5m+5m+5m+5m+5m+5m+5m+5m+5m+5m+5m+5m+5m+5m+5m+5m+5m+5m+5m+:q+o+sq+tq+uq+vq+wq+xq+yq+zq+Ro+Aq+Bq+Cq+Cq+Bq+Aq+4i+>o+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+6j+|q+|q+Dq+l- *j+G* <& G* n* n* $& M& M& S& S& S& q$ `f+Eq+Fq+%p+5m+>o+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+Gq+o+(p+=n+Wq+ah+Uk.~~ Xq+v- /, F' y; y; y; Yq+Zq+`q+ r+.r++r+@r+#r+$r+%r+5m+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+|q+&r+gq+*r+=r+", +"6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+>o+-r+;r+>r+,r+'r+qq+qq+)r+!r+~r+{r+*m+]r+^r+/r+(r+_r+:r+o+>o+>o+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+>o+1q+:q+o+>o+6j+6j+6j+6j+6j+6j+6j+1q+9r+0r+ar+br+cr+gp+(p+=n+dr+X/+^j.o+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+6j+>o+Om+", +"Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+mr+nr+or+pr+qr+!r+!r+rr+T0.sr+tr+Kn+%r+ur+vr+wr+wq+xr+yr+kr+zr+Ar+3m+Vq+Vq+Vq+Vq+3m+>o+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+>o+Br+Cr+Dr+Er+el+$& $& M& S& S& q$ q$ q$ |% |% |% L! R& 45+>o+|q+>o+Vq+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+-q+Br+Fr+Gr+Hr+Ir+Jr+Br+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Kr+Lr+Mr+Nr+Or+Pr+]r+Xp+Xp+Xp+Xp+Xp+Xp+Xp+lr+Qr+Rr+Sr+Tr+Yh+Ur+Vr+Wr+LX *~._, DI.J= v- /, /, /, /, F' y; *~.F' N' Xr+Yr+Zr+`r+ s+.s+Om+Xp+-q+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+Xp+-q+Xp+", +">o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+Br+mr+nr++s+@s+#s+$s+$s+%s+&s+*s+tr+=s+kr+-s+;s+>s+,s+'s+)s+!s+]r+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+Xp+Xp+Br+Br+~s+8$ Ok+Z= M& S& S& S& q$ |% |% #* #* #* h- G_ {s+]s+3m+|q+|q+Br+Vq+Vq+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+Br+Br+^s+/s+(s+_s+:s+Uq+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+lr+o+>o+>o+>o+>o+>o+>o+]r+2s+3s+4s+5s+6s+7s+j).wu f= ow.*- J= v- v- v- v- /, F' /, /, /, Uk.Ro 8s+9s+0s+as+bs+cs+ds+es+]r+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+>o+-q+", +"Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+fs+gs+hs+Q1.is+js+js+ks+,9.ls+ms+ns+os+ps+qs+>s+ET rs+ss+%r+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Br+3m+,(.-h+-h+S& D* q$ |% |% |% |% #* #* h- h- G_ ts+k- uR.:0+Br+|q+>o+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+]r+^s+/s+us+vs+ws+xs+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+]r+^s+ys+6r+zs+As+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Bs+>o+Cs+Ds+Es+Fs+Gs+Hs+Is+vr._, *- J= J= J= J= v- /, /, v- v- fs ,o.-o+Js+Ks+Ls+Ms+Ns+Os+Ps+jr+Qs+%r+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+", +"Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Ss+Ts+Us+Vs+Ws+Xs+Xs+Ys+Zs+`s+ t+.t++t+@t+#t+$t+%t+&t+Vq+*t+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+=t+=t+-t+;t+U{ S& q$ q$ |% #* #* h- h- h- o$ k- W& >t+g} g} ,t+'t+:0+Br+)t+Vq+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+*t+=t+!t+~t+us+{t+]t+^t+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+/t+(t+Mr+_t+:t+ z1 B* rt+$(+st+|q+Br+Vq+Rs+Rs+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+=t+=t+tt+~t+ut+{t+vt+Kr+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+%r+wt+xt+yt+zt+wt+/t+[t+[t+|q+Dj+At+Bt+c +Ct+Dt+Et+Ft+Gt+Ht+_, It+*- _, *- J= J= *- *- LX fs Jt+8t+5m+Dj+Rs+[t+Vq+*t+es+Kt+Lt+Mt+Nt+Ot+Pt+*t+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+Vq+", +"Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Qt+Rt+St+95.Tt+X8.X8.Ut+,d.Vt+Wt+Xt+Yt+Zt+`t+ u+.u++u+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+xs+:0+@u+`f+#* #* h- h- o$ o$ o$ W& 2$ k% P, l% l% J> B* #u+52 :$ j[+$u+[t+)t+Br+Rs+%u+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+*t+!t+~t+&u+*u+S9+=u+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+Rs+/t+-u+;u+>u+,u+'u+Uq+)u+!u+At+u9+Z9.#:.f= ~u+{u+]u+^u+/u+(u+_u+:u+_, *- *- _, _, j).^j.Wr+8t+|q+Ro+%u+ B* Q& Q& [> f& hu+%a+iu+ju+ku+Rs+Br+Rs+[t+[t+[t+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+gu+%u+lu+mu+&u+nu+ou+/t+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+[t+[t+pu+qu+ru+su+tu+uu+vu+wu+xu+~>.^; w- s~ R* R* w- yu+zu+Au+Bu+Cu+7t+_, f= f= *~.LX a/+8t+>o+Ro+[t+pu+[t+Bs+Bs+Bs+Bs+gu+Du+Eu+Fu+Gu+Hu+Iu+Ju+Ku+gu+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+Bs+", +"%u+%u+%u+%u+%u+%u+%u+%u+%u+%u+%u+%u+%u+%u+%u+%u+%u+%u+%u+%u+Lu+3u+Mu+Nu+Ou+Pu+Pu+Qu+jb.Ru+Su+Tu+Uu+Vu+Wu+Xu+Yu+%u+%u+%u+%u+%u+%u+%u+%u+%u+%u+%u+%u+%u+%u+%u+%u+%u+%u+%u+%u+%u+%u+%u+%u+%u+%u+%u+%u+%u+%u+%u+%u+%u+%u+%u+%u+%u+%u+%u+%u+%u+%u+%u+%u+%u+[t+%u+=u+Zu+`u+L! o$ Y% o$ W& 2$ k% P, l% l% J> B* Q& [> Y= N= f& u* H; v+j% .v++v+@v+=t+Br+Rs+[t+[t+[t+%u+%u+%u+%u+%u+%u+%u+%u+%u+%u+%u+%u+%u+%u+%u+%u+%u+%u+%u+%u+%u+%u+%u+%u+%u+%u+%u+%u+%u+%u+%u+%u+%u+%u+%u+lu+#v+=p+$v+%v+&v+%u+%u+%u+%u+%u+%u+%u+%u+%u+%u+%u+%u+%u+%u+%u+%u+%u+%u+%u+%u+%u+%u+[t+[t+pu+pu+Rs+%p+*v+=v+-v+;v+>v+,v+'v+)v+!v+R* S* Q* R* R* w- ~v+{v+]v+^v+/v+(v+S,+f= *~.j)._v+:v+Br+*v+[t+pu+[t+%u+%u+%u+%u+%u+%u+%u+ B* Q& Q& [> Y= f& u* }> 2= H; [& ua+kv+x* lv+mv+Ds+xs+=t+t+&w+P, P, l% J> B* Q& [> Y= Y= f& u* }> H; [& j% j% :; @* I; j6+%% w+,w+'w+!* uh.)8.)w+!w+L<+~w+{w+]w+^w+/w+!J Q* R* Q* R* R* (w+_w+:w+ Y= f& u* }> }> H; [& j% :; X& @* @* W* y- ow+ow+T6 pw+qw+rw+sw+Kv+%u+xs+xs+xs+=u+%u+ &x+#u+[> Y= f& u* }> H; [& [& j% :; X& @* W* !% r* y- _; %4+*x+O, O, p* =x+Y(+-x+;x+>x+(q+,x+fv+=u+xs+xs+=t+%u+% /x+z{.x- 2& 3& |o.V& x- (x+T* _x+:x+ H; [& j% :; :; X& @* W* !% y- _; -- -- %& )% <* g% i% :1+3}+Ig Ig 3}+=& vx+wx+xx+yx+zx+(q+Ax+% =- >% 1& 3& 2& V& V& x- x- T* ^> Jx+Kx+Lx+Mx+Nx+Ox+E> J2.S* s~ p4.Y9.Px+Qx+Rx+Sx+Tx+Ux+Vx+Wx+Xx+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Xx+Yx+Zx+`x+ y+.y++y+@y+#y+Xx+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+", +"$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+fx+%y+&y+*y+=y+ x+ x+-y+;y+>y+,y+'y+)y+{x+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+tv+tv+fv+!y+fv+;o++v+Ut %a+[b+[& [& j% :; X& @* W* W* !% y- _; -- %& )% <* <* g% Y& Y& i% V* 5$ F* Ig ~y+i[+G; {y+(* 2% ]y+2B.^y+/y+Ai+;w+At+tv+hv+xs+xs+hv+c =- >% 1& 1& 3& 3& 2& 2& V& x- x- T* T* 0y+ay+by+cy+dy+ay+QA Q* p4.hc.Px+ey+)t+)t+fy+gy+hy+iy+jy+ky+ex+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+{x+ly+my+ny+oy+py+qy+ry+ex+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+$y+", +"Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+tv+sy+ty+uy+vy+wy+xy+xy+yy+zy+Ay+By+Cy+Dy+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+tv+tv+tv+fv+!y+tv+wf+Ey+V= v+ua+:; x* @* W* !% y- y- _; -- %& )% <* <* g% Y& i% V* 5$ 5$ F* e& e& :* }& `8 _* f% /* +* Fy+Gy+S^+t{+Hy+Iy+Jy+Ky+Ly+My+Iy+Iy+&Q.Ny+2, Oy+Py+Qy+Ry+Sy+Ty+e` t++Uy+0% &T.Vy+Wy+Wy+/; /; 7% /; 7% 9% 9% 7% 5% 6% =- =- >% >% 1& 3& 3& 2& 2& V& V& x- x- T* Xy+Yy+zw+Zy+`y+ z+.z++z+@z+_p+)t+Br+#z+#z+{x+$z+%z+&z+*z+=z+-z+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+-z+;z+>z+Ov+,z+'z+)z+!z+~z+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+Kv+", +"Bx+Bx+Bx+Bx+Bx+Bx+Bx+Bx+Bx+Bx+Bx+Bx+Bx+Bx+Bx+Bx+Bx+Bx+Bx+Bx+{z+]z+^z+/z+(z+_z+_z+:z+% >% 1& 1& 3& 2& 2& 2& =; =; Tk.!* cz+dz+ez+fz+gz+hz+iz+jz+xs+xs+Ax+Ax+Bx+Bx+~z+kz+lz+mz+nz+tv+Bx+8x+Bx+Bx+Bx+Bx+Bx+Bx+Bx+Bx+Bx+Bx+Bx+Bx+Bx+Bx+Bx+Bx+Dy+oz+pz+`x+ y+qz+rz+sz+fy+Dy+Bx+Bx+Bx+Bx+Bx+Bx+Bx+Bx+Bx+Bx+Bx+Bx+Bx+Bx+Bx+Bx+Bx+Bx+Bx+Bx+Bx+Bx+Bx+Bx+Bx+Bx+Bx+Bx+Bx+Bx+Bx+Bx+Bx+Bx+Bx+Bx+Bx+Bx+Bx+Bx+Bx+Bx+Bx+Bx+Bx+Bx+Bx+Bx+Bx+Bx+Bx+Bx+Bx+Bx+Bx+Bx+Bx+Bx+Bx+Bx+Bx+Bx+Bx+", +"tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tz+{z+]z+uz+vz+wz+xz+xz+yz+vz+zz+Az+hv+#z+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tz+#z+#z+tv+!y+$y+Bz+Cz+Dz+!% /8+_; Ez+_; $4+%& )% <* g% Y& i% i% V* 5$ F* F* e& :* }& )* )* _* f% (* /* /* ^* +* ]* d& d& c& >; a& e% 0& 9& 8& 7& 7& Fz+Gz+Hz+Iz+Jz+Kz+bz+~* ~* c% b% 4& 4& U* a% 4% 4% 8% 9% 9% 7% 5% 5% 6% 6% =- >% >% 1& 1& 1& 1& 3& V& z{.cz+Q9.Kf.Lz+Mz+Nz+Oz+Pz+Qz+Rz+$y+Sz+Ax+tz+tv+tv+tv+Dy+Tz+Uz+Vz+Wz+Xz+oz+Dy+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tz+Dy+Yz+Zz+`z+ A+.A++A+@A+~z+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+tv+", +"#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#A+$A+%A+&A+*A+=A+-A+;A+&A+>A+,A+hv+Ax+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+Ax+Ax+tv+!y+tv+(q+D^+T6 ow+^b )% )% )% <* r~ h% Y& i% V* 5$ F* e& e& :* }& )* _* _* f% (* /* ^* ^* +* ]* d& c& c& a& e% 0& 9& 9& 8& 7& 3% 'A+)A+Hz+Iz+Jz+Kz+N, !A+~* c% b% 4& 4& U* a% 4% 4% 8% 9% 9% 7% 5% 5% 6% 6% =- =- =- =- 3& Rz.d^.z{.Kf.~A+U7+{A+]A+% Lz+kA+lA+mA+tv+xs+=u+tv+Sz+_y+nA+oA+pA+qA+rA+oA+sA+Sz+Sz+Sz+Sz+Sz+Sz+tA+uA+vA+wA+xA+uA+tA+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+tA+yA+zA+AA+BA+CA+DA+EA+FA+tA+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+", +"#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+GA+HA+IA+JA+KA+LA+MA+NA+OA+PA+QA+$y+Sz+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+Sz+Sz+#z+$y+$y+,x+Gx+RA+SA+fA+TA+z~+h% 5$ Ig UA+~y+~y+}& }& `8 )* _* f% (* /* ^* +* +* ]* d& c& a& a& e% 0& 9& 9& 8& 7& 3% mh.VA+WA+XA+YA+ZA+N, 5& ~* c% b% b% 4& U* U* a% 4% 4% 4-.8% uL.7% =- ]y. &.6% 'y.U7+`A+ B+tv+xs+=u+fv+Sz+_y+,x+Sz+.B+#z+tA++B+@B+#B+$B+%B+tA+.B+#z+#z+#z+#z+#z+1A+uA+&B+iy+*B+=B+:A+tA+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+tA+-B+;B+>B+,B+'B+)B+3A+1A+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+#z+", +"Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+!B+FA+~B+{B+]B+^B+/B+(B+_B+_B+{s+.B+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+Sz+_y+_y+Sz+.B+tz+$y+$y+tz+Sz+:B+RA+SA+w+VB+WB+hv+hv+tv+Sz+XB+XB+_y+_y+,x+,x+,x+,x+,x+,x+,x+,x+,x+,x+YB+ZB+pA+`B+ C+ZB+lB+,x+,x+,x+,x+,x+.C+_y++C+@C+#C+$C+%C+lB+,x+,x+,x+,x+,x+,x+,x+,x+,x+,x+,x+,x+,x+,x+,x+,x+,x+.C+&C+*C+AA+=C+-C+DA+;C+>C+.C+,x+,x+,x+,x+,x+,x+,x+,x+,x+,x+,x+,x+,x+,x+,x+,x+,x+,x+,x+,x+,x+,x+,x+,x+,x+,x+,x+,x+,x+,x+,x+,x+,x+,x+,x+,x+,x+,x+,x+,x+,x+,x+,x+,x+,x+,x+,x+,x+,x+,x+,x+,x+,x+,x+,x+,x+,x+,x+,x+,x+,x+", +"!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+nA+uA+,C+'C+)C+!C+~C+{C+]C+tB+_y+_y+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+_y+_y+_y+_y+_y+_y+_y+Sz+.B+^C+$y+$y+tz+XB+]A+/C+(C+_C+:C+; [C+>; /H.&Q.}C+|C+1C+2C+Zg+3C+4C+:o+5C+6C+7C+8j+8C+9C+0C+aC+XB+!B+_y+.B+!y+bC+hv+$y+Sz+XB+XB+_y+_y+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+nA+cC+dC+#B+eC+fC+.C+!B+!B+!B+!B+!B+!B+YB+gC+hC+iC+jC+fC+.C+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+.C+kC+lC+>B+mC+nC+oC+pC+YB+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+!B+", +"qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+rC+sC+tC+uC+vC+wC+xC+fB+yC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+XB+XB+XB+XB+XB+_y+!B+zC+^C+^C+tz+_y+AC+BC+uv+0C+AC+CC+AC+Sz+DC+EC+FC+GC+HC+IC+JC+un+KC+LC+MC+$y+^C+.B+.B+.B+_y+qC+_y+qC+XB+XB+NC+XB+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+OC+YB+^A+PC+QC+RC+qC+qC+qC+qC+qC+qC+SC+TC+UC+VC+WC+XC+YC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+SC+ZC+`C+oB+ D+.D++D+@D+SC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+", +"(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+#D+$D+%D+&D+*D+=D+-D+;D+$D+#D+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+XB+XB+XB+XB+WB+XB+(y+_y+.B+#z+Sz+_y+!B+_y+XB+>D+,D+'D+<'+)D+!D+~D+ei+{D+]D+^D+/D+XB+XB+XB+XB+XB+XB+XB+XB+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+(y+SC+(D+_D+`B+ C+(D+SC+(y+(y+(y+(y+(y+yC+:D+D+&C+9D+0D+aD+bD+cD+dD+eD+qC+yC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+XB+XB+NC+NC+NC+XB+XB+XB+qC+>D+8D+fD+gD+hD+iD+jD+kD+lD+mD+nD+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+>D+oD+pD+qD+rD+YC+>D+qC+qC+qC+qC+qC+qC+>D+RC+sD+#C+tD+uD+vD+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+>D+wD+xD+yD+zD+nC+AD+ZC+vD+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+qC+", +"XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+NC+XB+^D+BD+CD+DD+bD+ED+FD+GD+HD+^D+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+nD+]D+ID+JD+KD+LD+MD+ND+>D+NC+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+NC+OD+SC+PD+QD+RD+SD+NC+XB+XB+XB+XB+XB+TD+UD+VD+WD+XD+yC+XB+NC+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+TD+YD+ZD+Ov+`D+ E+.E++E+@E+NC+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+XB+", +"#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+$E+TC+%E+&E+*E+!C+=E+-E+uD+^D+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+nD+;E+>E+,E+'E+)E+!E+~E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+#E+^D+{E+_D+]E+^E+/E+^D+#E+#E+#E+#E+#E+@E+(E+_E+:E+F+,F+'F+)F+!F+>F+;F++F++F++F++F++F++F++F++F++F++F++F++F++F++F++F++F++F++F++F++F++F++F++F++F++F++F++F++F++F++F++F++F++F++F++F++F+yE+~F+{F+]F+^F+~F+yE++F++F++F++F++F+yE+/F+(F+_F+:F+F+eF+)F+fF+gF+>F+;F+7E+7E+7E+7E+7E+7E+7E+7E+7E+7E+7E+7E+7E+7E+7E+7E+7E+7E+7E+7E+7E+7E+7E+7E+7E+7E+7E+7E+7E+7E+7E+7E+7E+7E+7E+7E+@F+hF+iF+jF+kF+lF+@F+mF+7E+7E+7E+7E+@F+nF+oF+pF+qF+rF+sF+@F+7E+7E+7E+7E+7E+7E+7E+7E+7E+7E+7E+7E+7E+7E+7E+7E+7E+@F+@F+tF+uF+vF+WD wF+xF+WE+yE+7E+7E+7E+7E+7E+7E+7E+7E+7E+7E+7E+7E+7E+7E+7E+7E+7E+7E+7E+7E+7E+7E+7E+7E+7E+7E+7E+7E+7E+7E+7E+7E+7E+7E+7E+7E+7E+7E+7E+7E+7E+7E+7E+7E+7E+7E+7E+7E+7E+7E+7E+7E+7E+7E+7E+7E+7E+7E+", +"yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+zF+AF+BF+CF+DF+EF+FF+GF+HF+zF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+IF+fp+JF+KF+LF+MF+fp+IF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+NF+yE+NE+OF+PF+QF+yF+yF+yF+yF+yF+yF+-F+RF+SF+TF+UF+VF+zF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+WF+XF+YF+oB+ZF+`F+ G+}F+.G+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+yF+", +"+G++G++G++G++G++G++G++G++G++G++G+@G+-F+#G+$G+%G+&G+*G+=G+-G+nF+@G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G+;G+>G+,G+JE+'G+)G+!G+IF++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G+zF+~G+{G+]G+^G+~G+zF++G++G++G++G++G+@G+/G+(G+UE+_G+:G+@G+@G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G++G+@G+